SORU
17 ŞUBAT 2011, PERŞEMBE


'ayrıştırma ağacı arasındaki fark ne ve AST?

Derleme sürecinin farklı aşamalarında tarafından oluşturulur? Ya ben de aynı şey için farklı isimler vardır?

CEVAP
25 Mart 2012, Pazar


Bu Terence Parr tarafından Expression Evaluator dilbilgisi dayanmaktadır.

Bu örneğin dilbilgisi:

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(); } ;

Giriş

x=1
y=2
3*(x y)

Ayrıştırma Ağacı

Ayrıştırma ağacı giriş somut bir temsilidir. Ayrıştırma ağacı giriş tüm bilgileri korur. Boş kutuları boşluk temsil eder, yani satır sonu.

Parse Tree

AST

AST giriş soyut temsilidir. Parens dernekleri ağaç yapısı türetilebilir çünkü AST mevcut olup olmadığına dikkat edin.

AST

EDİT

Daha üzerinden bir açıklama için bakınız Compilers and Compiler Generators pg. 23

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 365multimedia

    365multimedi

    26 ŞUBAT 2009
  • kindlechatmail

    kindlechatma

    25 AĞUSTOS 2010
  • TheFlightsuit

    TheFlightsui

    22 HAZİRAN 2009