/ / Parser v C # a tlač AST - c #, analýza, vzor návštevníka, bnfc

Analyzátor v C # a tlač AST - c #, analýza, vzor návštevnosti, bnfc

Implementujem AST (Abstraktný syntaktický strom) v C # pre komplexnú gramatiku, aby som túto otázku jednoduchý, budem používať veľmi jednoduchú gramatiku.

Zvážte túto gramatiku:

rules Expr ::= Term "+" Term
| Term ;

rules Term ::= Ident
| Integer ;

Použil som bnfc a vygeneroval analyzátor / analyzátor a dostal sa k bodu, že môžem analyzovať kus kódu a vytlačiť analyzovaný strom. Teraz ju chcem zmapovať do AST a vytlačiť Strom abstraktnej syntaxe. tu je to, čo som doteraz urobil vo vzorovom projekte.

V súčasnosti, keď otestujem program, môj AST sa vráti ako NULL.

var astGen = new gplex.VisitSkeleton.ExprVisitor<Expr1, gplex.Absyn.Expr1>();
var ast = astGen.Visit((gplex.Absyn.Expr1)parse_tree, (gplex.Absyn.Expr1)parse_tree);

Tu je ast nulová. Môže mi niekto so skúsenosťami v C # pomôcť, aby som sa s tým spojil?

odpovede:

1 pre odpoveď č. 1

Pri vašom projekte som si všimol, že všetky vaše generické metódy návštevy skončia tým, že vrátia rovnaký konštantný výsledok, bez ohľadu na to, aké zvyšné z týchto metód "orgány urobili pred tým:

return default(R);

Pre konkrétne typy R, ktoré sú referenčnými typmi, bude táto "východisková (R)" návratová hodnota skutočne vždy nulová.

"HTH,