第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

面向?qū)ο蟮木幊陶Z言的AST(抽象語法樹)是什么樣的?

面向?qū)ο蟮木幊陶Z言的AST(抽象語法樹)是什么樣的?

達(dá)令說 2019-10-11 10:30:43
我正在閱讀有關(guān)AST(抽象語法樹)的信息,但是我看到的所有示例都使用如下表達(dá)式:a + b * c 可以用像這樣的語法來表示:(+ a (* b c) )等效于:  + / \a   *    / \  b   c我的問題是OOPL中的類的AST看起來如何?我的幼稚嘗試是針對此Java代碼: class Person {      String name;     int    age;     public String toString() {         return "name";     } }是:;Hand written(classDeclaration Person      (varDeclaration String name)     (varDeclaration int    age )     (funcDeclaration String toString            (return "name")     ) )但是我不太確定我離真正的AST表示有多遠(yuǎn)。是否取決于我選擇的語言。需要多少細(xì)節(jié)?那些“ xyzDeclaraction”是否需要或可能為: (Person (String name) (int age))在哪里可以看到實(shí)際編程語言的“真實(shí)”表示,以了解更多信息。
查看完整描述

3 回答

?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個贊

AST是CST的抽象(具體的語法樹或解析樹)。具體的語法樹是從用于語法分析文件的結(jié)果(語法)中得到的樹。因此,您的AST基本上是從您的語法定義派生的,但是已經(jīng)轉(zhuǎn)換為


                        Exp                    

                      /  |  \                   

                     /   |   \                       *

                 Ident BinOp Ident       into       / \

                  /      |     \                  "x" "y"

                 /       |      \

               "x"       *      "y"

總而言之,我認(rèn)為您帖子中的示例看起來不錯。我可能會將變量聲明包裝在中varDeclList,將函數(shù)聲明包裝在中methDeclList,將return語句包裝在中stmtList。(見下文。)


蘋果在他的《 Java的現(xiàn)代編譯器實(shí)現(xiàn)》一書中描述了AST的某種“真實(shí)”表示。(可在此處找到資源。)


使用這些類,您的程序?qū)⑷缦滤荆?/p>


Program

    ClassDeclList

        ClassDecl

            Identifier

                id: Person

            VarDeclList

                VarDecl

                    type: String

                    id: name

                VarDecl

                    type: int

                    id: age

            MethDeclList

                MethodDecl

                    modifiers: public

                    returnType: String

                    id: toString

                    Formals

                        (empty)

                    StmtList

                        returnStmt

                            Identifier

                                id: name


查看完整回答
反對 回復(fù) 2019-10-11
  • 3 回答
  • 0 關(guān)注
  • 622 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號