【发布时间】:2012-03-07 01:28:55
【问题描述】:
为了学习经验,我正在从头开始编写一个 C# 解释器,到目前为止一切都很顺利。我有一个功能齐全的 C# 词法分析器,可以将各种标记输出到解析器。我知道我将如何解析标记,但我不确定我应该如何构建我的 AST(抽象语法树)。
例如,如果我有一个简单的代码片段:
using System.Xml;
解析后的树会是什么样子?
像这样?
UsingDirective
Identifier(System)
Identifier(Xml)
还是这样?
UsingDirective
Identifier(System)
Identifier(Xml)
如果我能得到一些建议和/或示例,说明如何构造诸如带点的标识符、if/else if/else 语句、变量声明/赋值组合在一个语句中(int i = 0;) ,函数定义等,这将是有帮助的。我只需要更好地了解如何构建树,其余的我可以自己弄清楚。谢谢。
【问题讨论】:
-
如果你想实现所有的 C#,这将是一个漫长的学习经历:-)
-
好吧,我忽略了类库的大部分内容。我基本上只是在实现基本类/函数定义、变量创建/使用和函数调用需要实现的内容。