色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Stanford編譯原理詳解

處理器與AI芯片 ? 來(lái)源:處理器與AI芯片 ? 2023-10-25 10:47 ? 次閱讀

第二部分的作業(yè)是語(yǔ)法分析,通過(guò)編寫cool.y(這個(gè)assignment的任務(wù)),利用bison將其自動(dòng)生成語(yǔ)法分析LALR(1)的代碼。

語(yǔ)法分析,就是將詞法分析階段已經(jīng)識(shí)別好的token,按照語(yǔ)法的規(guī)則,構(gòu)建抽象語(yǔ)法樹的過(guò)程。

比如以下的代碼:

x=(a+b)*(c-d);

可以構(gòu)成下圖的抽象語(yǔ)法樹:

        =
       / 
      x   *
         / 
        +   -
       /  / 
abcd

具體在cool.y 中,

b1d10848-72dd-11ee-939d-92fbcf53809c.png

這部分定義了非終結(jié)符non-terminal對(duì)應(yīng)的semanticvalue. Union中的每一個(gè)field都可以是parsing動(dòng)作的結(jié)果。

在stanfordcompiler的教學(xué)語(yǔ)言cool中,這就對(duì)應(yīng)了AST的一個(gè)node。每一個(gè)non-terminal,都有其對(duì)應(yīng)的semanticvalue。

左側(cè)的各種類型在cool-tree.aps中都有對(duì)應(yīng)定義,比如Features:

b1f78f4a-72dd-11ee-939d-92fbcf53809c.png

Feature即為class中的成員函數(shù)或者成員變量。因?yàn)榭梢杂卸鄠€(gè)Feature,所以存在Features,即LIST[Feature].

下面則具體定義了所有的非終結(jié)符對(duì)應(yīng)的AST節(jié)點(diǎn)類型。<>內(nèi)部的,比如classes是在union中定義的value,而右側(cè)的,比如class_list,我們需要定義規(guī)約該非終結(jié)符時(shí),需要進(jìn)行的操作。

b219db4a-72dd-11ee-939d-92fbcf53809c.png

上圖中$$即為action的返回值,對(duì)應(yīng)該抽象語(yǔ)法樹AST對(duì)應(yīng)的node。

下面介紹如何聲明非終結(jié)符對(duì)應(yīng)的規(guī)約操作。

b243dc06-72dd-11ee-939d-92fbcf53809c.png

具體如何對(duì)類的聲明構(gòu)建抽象語(yǔ)法樹節(jié)點(diǎn),即class的規(guī)則:

1)

CLASS TYPEID '{' feature_list '}' ';'
{
/*對(duì)應(yīng)動(dòng)作 action*/
  $$=class_($2,
  idtable.add_string("Object"),
  $4,
  stringtable.add_string(curr_filename));
}

其動(dòng)作對(duì)應(yīng)cool-tree.aps中生命的constructor,

b25be4e0-72dd-11ee-939d-92fbcf53809c.png

傳給class_的參數(shù)即為

1)類名稱 2)父類名稱 3)成員變量/成員函數(shù)

4)文件名

對(duì)應(yīng)的位置如類名稱即為TYPEID,對(duì)應(yīng)$2, feature_list對(duì)應(yīng)$4,因此其動(dòng)作action寫成了如上圖所示的樣子。

cool語(yǔ)法中,如果class類沒有繼承自其他類,那么默認(rèn)繼承自O(shè)bject類型,因此parent設(shè)置為Object。

2)

CLASS TYPEID INHERITS TYPEID '{' feature_list '}' ';'
{$$=class_($2,$4,$6,
stringtable.add_string(curr_filename));}

這里唯一不同的即為該類繼承自父類,因此其第2個(gè)參數(shù),父類名稱傳入了$4。具體的序號(hào)可以參考第205行的注釋。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4333

    瀏覽量

    62726
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4798

    瀏覽量

    68714
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    659

    瀏覽量

    32899

原文標(biāo)題:Stanford 編譯原理 編程作業(yè)2

文章出處:【微信號(hào):處理器與AI芯片,微信公眾號(hào):處理器與AI芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一文詳解編譯系統(tǒng)

    什么是編譯器?為什么要有編譯器?編譯器的作用是什么?編譯系統(tǒng)的組成部分有哪些,它們之間的關(guān)系是什么?有一句名言說(shuō)的非常好:了解一件事情最好從它的歷史開始。要想對(duì)整個(gè)
    發(fā)表于 09-20 09:09 ?1450次閱讀

    嵌入式開發(fā)中的交叉編譯詳解

    在嵌入式開發(fā)中,經(jīng)常會(huì)遇到目標(biāo)平臺(tái)資源貧乏,無(wú)法運(yùn)行需要的編譯器。亦或是目標(biāo)平臺(tái)上不允許或不能夠安裝需要的編譯器。這時(shí)候就需要使用交叉編譯了。
    的頭像 發(fā)表于 12-01 13:24 ?1304次閱讀
    嵌入式開發(fā)中的交叉<b class='flag-5'>編譯</b><b class='flag-5'>詳解</b>

    gcc編譯出錯(cuò)

    1、信息說(shuō)明 硬件平臺(tái):JZ24402、問(wèn)題現(xiàn)象 1) 第005節(jié)_Makefile的引入及規(guī)則_P test無(wú)法編譯編譯如下 2) gcc編譯器1_gcc常用選項(xiàng)__gcc編譯過(guò)程
    發(fā)表于 04-01 07:45

    WinCE系統(tǒng)的編譯過(guò)程詳解

    在WinCE系統(tǒng)中,當(dāng)我們完成了相關(guān)的開發(fā)和系統(tǒng)定制工作以后,會(huì)編譯WinCE系統(tǒng),最后生成NK.bin和NK.nb0。我現(xiàn)在用WinCE6.0在自己的PC上面編譯一次用時(shí)19分16秒(有一天無(wú)聊,就測(cè)了一下)
    發(fā)表于 07-20 11:52 ?1988次閱讀
    WinCE系統(tǒng)的<b class='flag-5'>編譯</b>過(guò)程<b class='flag-5'>詳解</b>

    QT/E和Qtopia的編譯詳解

    首先說(shuō)說(shuō)編譯PC上的QT/E,我起初的時(shí)候不知道編譯PC上的QT/E編譯qpe和交叉編譯后的qpe有什么不同,
    發(fā)表于 05-10 10:53 ?2847次閱讀

    PICC編譯器的庫(kù)函數(shù)詳解

    本章將詳細(xì)列出PICC編譯器的庫(kù)函數(shù)。每個(gè)函數(shù)均從函數(shù)名開始,然后按照以下幾個(gè)標(biāo)題給出詳細(xì)解釋。
    發(fā)表于 10-14 14:17 ?0次下載

    Vivado中的Incremental Compile增量編譯技術(shù)詳解

    Incremental Compile增量編譯是Vivado提供的一項(xiàng)高階功能。目的旨在當(dāng)設(shè)計(jì)微小的改變時(shí),重用綜合和布局布線的結(jié)果,縮短編譯時(shí)間。
    的頭像 發(fā)表于 07-05 06:06 ?1.1w次閱讀

    Linux內(nèi)核編譯過(guò)程詳解

    Linux內(nèi)核編譯過(guò)程詳解(kernel2.6.7) 花了幾天才編譯成功kernel2.6.7,其過(guò)程真可謂艱辛。古語(yǔ)有云:苦盡甘來(lái)!現(xiàn)在終于可以樂(lè)上一陣了。由于許多朋友對(duì)操作的順序及某些重要的配置
    發(fā)表于 11-07 11:16 ?4次下載

    編譯器是如何工作的_編譯器的工作過(guò)程詳解

    隨著計(jì)算機(jī)的發(fā)展,編譯器已經(jīng)發(fā)揮著十分重要的作用。本文主要介紹了編譯器的種類、編譯器的工作原理以及編譯器工作的具體操作過(guò)程及步驟詳解。
    發(fā)表于 12-19 12:54 ?1.6w次閱讀

    Prelink的交叉編譯和使用詳解

    Prelink的交叉編譯和使用詳解
    的頭像 發(fā)表于 06-20 12:03 ?3552次閱讀
    Prelink的交叉<b class='flag-5'>編譯</b>和使用<b class='flag-5'>詳解</b>

    Php+mysql+apache編譯安裝詳述

    Php+mysql+apache編譯安裝詳述(深圳市核達(dá)中遠(yuǎn)通電源技術(shù)股份有限公司大嗎)-文檔為Php+mysql+apache編譯安裝詳述詳解文檔,是一份不錯(cuò)的參考資料,感興趣的可以下載看看,,,,,,,,,,,,,,,
    發(fā)表于 09-18 14:42 ?2次下載
    Php+mysql+apache<b class='flag-5'>編譯</b>安裝詳述

    詳解OpenHarmony的編譯和燒錄

    在上一篇【博流 BL-HWC-G1 開發(fā)板試用】開箱及編譯燒錄官方程序(BL602 IoT SDK)中,我們講了這塊開發(fā)板使用官方SDK進(jìn)行編譯燒錄,這一篇,我們來(lái)講OpenHarmony的編譯
    的頭像 發(fā)表于 11-08 09:58 ?5548次閱讀
    <b class='flag-5'>詳解</b>OpenHarmony的<b class='flag-5'>編譯</b>和燒錄

    什么是預(yù)編譯

    預(yù)編譯就是處理以#開頭的指令,比如賦值#include包含的文件、#define宏定義的替換、條件編譯等。預(yù)編譯就是為編譯前做準(zhǔn)備工作的階段,主要處理以#開頭的預(yù)
    發(fā)表于 01-13 13:52 ?0次下載
    什么是預(yù)<b class='flag-5'>編譯</b>

    C語(yǔ)言中條件編譯詳解

    —般情況下,C語(yǔ)言源程序中的每一行代碼.都要參加編譯。但有時(shí)候出于對(duì)程序代碼優(yōu)化的考慮,希望只對(duì)其中一部分內(nèi)容進(jìn)行編譯。此時(shí)就需要在程序中加上條件,讓編譯器只對(duì)滿足條件的代碼進(jìn)行編譯,
    的頭像 發(fā)表于 04-14 13:12 ?3121次閱讀

    Stanford編譯的原理是什么?

    第一個(gè)作業(yè)是根據(jù)這門課定義的cool語(yǔ)言,寫一個(gè)詞法分析的rule,詞法分析對(duì)我?guī)椭淮?,主要是理解使用就可以,就大部分參照github上的實(shí)現(xiàn)了。
    的頭像 發(fā)表于 09-02 09:55 ?580次閱讀
    <b class='flag-5'>Stanford</b><b class='flag-5'>編譯</b>的原理是什么?
    主站蜘蛛池模板: 四房播播开心五月| 亚洲理论片在线中文字幕| 哪里能看毛片| 免费在线a| 热综合一本伊人久久精品| 日日踫夜夜爽无码久久| 午夜AV内射一区二区三区红桃视| 国产亚洲视频精彩在线播放| qovd电影| 国产h视频免费观看| 国产精品一区二区三区四区五区 | 日韩 国产 中文 无码| 污污内射在线观看一区二区少妇| 亚洲精品国产专区91在线| 中文字幕久久久| jazzjazzjazz欧美| 国产精品免费久久久久影院| 精品人妻伦一二三区久久AAA片 | 扒开女生尿口| 国产精品免费久久久久影院| 狠狠啪在线香蕉| 男女牲交全过程免费播放| 色色噜一噜| 亚洲性无码av在线| 99精品国产电影| 国产精品嫩草久久久久| 久久机热免费视频| 久久精品观看影院2828| 欧美A级肉欲大片XXX| 思思久久99热只有频精品66| 一点色成人| 吃奶吸咪咪动态图| 久久91精品久久久久久水蜜桃 | 最新男同鸭子ktv| 菲律宾毛片| 久久免费精品国产72精品剧情| 漂亮的av女演员| 亚洲嫩草AV永久无码精品无码| 99久久国语露脸精品国产| 国产乱码伦人偷精品视频| 美女大鸡鸡|