首页 / C# / c# – 如何设计抽象语法树的部分?
c# – 如何设计抽象语法树的部分?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何设计抽象语法树的部分?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1106字,纯文字阅读大概需要2分钟。
内容图文
我正在从头开始编写C#解释器以获得学习体验,到目前为止,一切都进展顺利.我有一个功能齐全的C#lexer,可以将各种标记输出到解析器.我知道我将如何解析令牌,但我不确定如何构建我的AST(抽象语法树).
例如,如果我有一个简单的代码片段:
using System.Xml;
解析后树会是什么样子?
像这样?
UsingDirective
Identifier(System)
Identifier(Xml)
或者像这样?
UsingDirective
Identifier(System)
Identifier(Xml)
如果我能得到一些建议和/或示例,我可以如何构造像带有点的标识符之类的东西,if / else if / else语句,变量声明/赋值组合在一个语句中(int i = 0;),函数定义等等会有所帮助.我只需要更好地了解如何构建树,我可以自己弄清楚其余部分.谢谢.
解决方法:
我过去写了几个解析器,我通常会这样做:
UsingDirective
IdentifierList
Identifier (LeftNode) (System)
Identifier (RightNode) (Xml)
在这种情况下使用System.Collections.Generic
UsingDirective
IdentifierList
IdentifierList (LeftNode)
Identifier (LeftNode) (System)
Identifier (RightNode) (Collections)
Identifier (RightNode) (Generic)
与Roslyn不同,我更喜欢通过不包括诸如分号之类的标记,使用关键字等来保持我的AST,因为编译器不需要它们.
我专门为IDE编写的解析器看起来与众不同 – 它们带有所有这些额外的东西以及更多的信息,如行号和列号.
内容总结
以上是互联网集市为您收集整理的c# – 如何设计抽象语法树的部分?全部内容,希望文章能够帮你解决c# – 如何设计抽象语法树的部分?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。