首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C#和gppg,我将如何构建抽象语法树?

使用C#和gppg,我将如何构建抽象语法树?
EN

Stack Overflow用户
提问于 2008-11-14 16:47:14
回答 3查看 1.9K关注 0票数 2

有没有一种几乎开箱即用的方法?

我可以写一个很大的方法,使用收集的标记来确定哪些叶子应该放在哪些分支中,最后填充一个TreeNode对象,但是由于gppg已经使用提供的正则表达式处理了所有的事情,我想知道是否有更简单的方法?即使不是这样,任何关于如何最好地处理创建AST的问题的建议都将不胜感激。

如果我说了什么傻话,很抱歉,我才刚刚开始玩编译器游戏。:)

EN

回答 3

Stack Overflow用户

发布于 2008-11-14 17:04:55

参见MGrammar和Oslo...

http://msdn.microsoft.com/oslo

http://channel9.msdn.com/pdc2008/TL31/

票数 1
EN

Stack Overflow用户

发布于 2010-05-06 08:39:22

AST

  • 在语法文件中声明一个属性,该属性将保留的根目录:

{% public BatchNode Batch;public ErrorHandler yyhldr;private TransformationContext _txContext = TransformationContext.Instance;%}

  • 开始使用构建ErrorHandler节点的操作编写语法:

批处理: StatementList {Batch =新BatchNode($1.Statements);};StatementList :语句{$$.Statements =新列表();$$.Statements.Add($1.Statement);}| StatementList语句{$$.Statements = $1.Statements;$$.Statements.Add($2.Statement);};

  • 调用解析器:

var解析器=新的结果();var Parser.Parser=新的扫描器();parser.scanner =扫描器;scanner.SetSource(sourceString,0);布尔结果= parser.Parse();if (结果) HandleMyAst(parser.Batch)

票数 1
EN

Stack Overflow用户

发布于 2008-11-14 18:04:45

看看ANTLR,几年前我用C#编写了一个简单的.NET编译器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/290709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档