Я внедряю AST (абстрактное синтаксическое дерево) в C# для сложной грамматики, однако, чтобы этот вопрос был прост, я буду использовать очень простую грамматику.Parser in C# и печать AST
Рассмотрим грамматику:
rules Expr ::= Term "+" Term
| Term ;
rules Term ::= Ident
| Integer ;
я использовал bnfc и генерироваться парсер/лексера и попал в точку, что я могу разобрать фрагмент кода и может напечатать дерево синтаксического разбора. Теперь я хочу сопоставить его с AST и напечатать абстрактное дерево синтаксиса. here - это то, что я сделал до сих пор в примерном проекте.
Однако в настоящее время, когда я тестирую программу, мой АСТ возвращается как 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);
Здесь ast is null. Может ли кто-нибудь с опытом работы в C# помочь мне справиться с этим?
Спасибо @YSharp ... пожалуйста, помогите мне понять. Что бы я тогда вернулся? – 2D3D4D