0
我正在C#中爲複雜語法實現AST(抽象語法樹),但是,爲了使這個問題變得簡單,我將使用一個非常簡單的語法。C#中的解析器和打印AST
考慮這個語法:
rules Expr ::= Term "+" Term
| Term ;
rules Term ::= Ident
| Integer ;
我已經使用BNFC和產生的語法/詞法分析器,並得到了我可以解析的代碼,並可以打印語法樹點。現在我想將它映射到AST,並打印抽象語法樹。 here是我在一個示例項目中迄今爲止所做的。
但是,當我測試程序時,AST返回爲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是空的。有C#經驗的人可以幫助我理解這一點嗎?
謝謝@YSharp ...請幫我理解。那麼我會返回什麼? – 2D3D4D