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

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • WPBeginner - WordPress Tutorials

    WPBeginner -

    17 Temmuz 2009