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

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

請問抽象語法樹和具體語法樹有什么區(qū)別?

請問抽象語法樹和具體語法樹有什么區(qū)別?

蕪湖不蕪 2019-11-23 16:15:55
抽象語法樹和具體語法樹有什么區(qū)別?我一直在閱讀有關(guān)解釋器/編譯器如何工作的一些內(nèi)容,而我感到困惑的一個領(lǐng)域是AST和CST之間的區(qū)別。我的理解是解析器生成一個CST,將它交給語義分析器,將其轉(zhuǎn)換為AST。但是,我的理解是語義分析器只是確保遵循規(guī)則。我真的不明白為什么它會實際做出任何改變,使其變得抽象而不是具體。有沒有關(guān)于語義分析器的東西,或者AST和CST之間的差異有點人為?
查看完整描述

3 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊

具體語法樹以完全解析的形式表示源文本。通常,它符合定義源語言的無上下文語法。

但是,具體的語法和樹有很多東西是使源文本明確可解析所必需的,但卻沒有實際意義。例如,要實現(xiàn)運算符優(yōu)先級,您的CFG通常具有多個級別的表達(dá)式組件(術(shù)語,因子等),運算符將它們連接到不同的級別(您添加術(shù)語以獲取表達(dá)式,術(shù)語由可選乘以的因子組成)等)。但是,要實際解釋或編譯語言,您不需要這樣做; 您只需要具有運算符和操作數(shù)的Expression節(jié)點。抽象語法樹是將具體語法樹簡化為實際需要表示程序含義的結(jié)果。該樹具有更簡單的定義,因此在后續(xù)執(zhí)行階段更容易處理。

您通常不需要實際構(gòu)建具體的語法樹。您的YACC(或Antlr,或Menhir,或任何......)語法中的動作例程可以直接構(gòu)建抽象語法樹,因此具體語法樹僅作為表示源文本的解析結(jié)構(gòu)的概念實體存在。



查看完整回答
反對 回復(fù) 2019-11-24
?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗 獲得超7個贊

這是基于Terrence Parr 的Expression Evaluator語法。

這個例子的語法:

grammar Expr002;options {
    output=AST;
    ASTLabelType=CommonTree; // type of $stat.tree ref etc...}prog    :   ( stat )+ ;stat    :   expr NEWLINE        -> expr
        |   ID '=' expr NEWLINE -> ^('=' ID expr)
        |   NEWLINE             ->
        ;expr    :   multExpr (( '+'^ | '-'^ ) multExpr)*
        ; multExpr
        :   atom ('*'^ atom)*
        ; atom    :   INT 
        |   ID
        |   '('! expr ')'!
        ;ID      : ('a'..'z' | 'A'..'Z' )+ ;INT     : '0'..'9'+ ;NEWLINE : '\r'? '\n' ;WS      : ( ' ' | '\t' )+ { skip(); } ;

輸入

x=1y=23*(x+y)

解析樹

解析樹是輸入的具體表示。解析樹保留輸入的所有信息??湛虮硎究崭?,即行尾。

AST

AST是輸入的抽象表示。請注意,AST中不存在parens,因為關(guān)聯(lián)可以從樹結(jié)構(gòu)中派生。

編輯

有關(guān)更多解釋,請參閱編譯器和編譯器生成器。23



查看完整回答
反對 回復(fù) 2019-11-24
  • 3 回答
  • 0 關(guān)注
  • 422 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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