让我想编程的第一件事就是创建一个多人文本游戏。当我意识到,至少在当时对我来说,编写一个智能解析器是多么复杂时,我被这个想法吓跑了。
所以现在我又开始思考这个问题了,我已经尝试对这个主题进行大量研究。事实证明,它似乎比我想象的要复杂得多,而且我偶然发现了诸如lexing和tokenizing和parsing之类的术语,我以前只知道后者。我认为词法分析领域是我想要寻找的。
因此,与其尝试创建我自己的词法分析器和解析器,我认为它们非常困难且容易出错,并且大多数人都指示要避开,我想我会找到一个好的词法分析器和解析器生成器来使用,这应该会做对我来说所有繁重的工作,我可以专注于我想要的语法。我也听到很多人说想要做这样的事情的人应该简单地使用Inform
.
当然,我认为 Inform 很酷,但 C# 是我选择的语言,我喜欢它允许我自由支配我认为 Inform 提供的内容。我对创建多人文本游戏的所有组件和框架比对任何一个特定的最终结果更感兴趣,因此我最喜欢使用标准编程语言的想法。
一段时间以来,我一直在尝试为 C# 寻找一个好的词法分析器/解析器生成器,但对人们给出的评论似乎提供的一切并不满意。
C# 的 antlr 似乎不发达,而且大多是事后才想到的。我已经尝试理解 GPLEX 和 GPPG,但到目前为止,尽管阅读了很多文档并尝试阅读很多关于词法分析的内容,但它们现在对我来说太混乱了。
关于词法分析的整个过程,我脑子里有很多概念,但是当面对词法分析器和解析器时,我想我真的不知道这些应该如何融入我的实际代码中。
我想用名词短语和动词短语构建一个简单的英语语法,并且能够在游戏开发和扩展时从数据库中动态添加和准备好名词和动词列表。
我想我觉得我对我一直在尝试做的这个主题的研究结果缺乏信心。
老实说,在这一点上,根据我所研究的内容创建我自己的词法分析器和解析器概念的想法似乎比使用我读过的任何词法分析器/解析器生成器更具吸引力。