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

  • How Things Are Made

    How Things A

    17 HAZİRAN 2008
  • Majestic Casual

    Majestic Cas

    28 NİSAN 2012
  • FusioNGamiing

    FusioNGamiin

    10 Temmuz 2007