我在C#中为一个复杂的语法实现了一个抽象语法树,然而,为了使这个问题变得简单,我将使用一个非常简单的语法。
考虑下面的语法:
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#经验的人能帮我走上正轨吗?
发布于 2016-03-26 13:34:47
在你的项目中,我注意到你的所有泛型访问方法最终返回相同的常量结果,而不管其他方法的主体在此之前做了什么:
return default(R);对于引用类型的R的具体类型,这个"default(R)“返回值实际上总是null。
‘'HTH,
https://stackoverflow.com/questions/36231040
复制相似问题