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

  • Codecourse

    Codecourse

    3 ŞUBAT 2009
  • Elly Awesome

    Elly Awesome

    15 ŞUBAT 2010
  • jeffisthecoolguy

    jeffisthecoo

    17 HAZİRAN 2013