C++ 快速解析简单语言的指导原则

C++ 快速解析简单语言的指导原则,c++,parsing,c++11,C++,Parsing,C++11,我发现自己需要解析一些简单的语言。一种比正则表达式更具表现力的语言,但它太小,不值得使用像bison这样强大的语言 最后,我使用单元测试做了一个特殊的解析器来保证它的正确性。我创建了一个提取单个标记的函数,另一个函数将继续提取标记,并通过几个循环和许多ifs来解析语言。但是,这不是解析语言的正确方法,如果有人看到了代码,就不会理解它的本意 我正在寻找一些更好的解决方案来快速解析小型语言。一些库或某种技术来解决这个问题。这是解析语言的一种非常好的方法。保持标记化和解析部分分开,可能使用一两个枚举来

我发现自己需要解析一些简单的语言。一种比正则表达式更具表现力的语言,但它太小,不值得使用像bison这样强大的语言

最后,我使用单元测试做了一个特殊的解析器来保证它的正确性。我创建了一个提取单个标记的函数,另一个函数将继续提取标记,并通过几个循环和许多ifs来解析语言。但是,这不是解析语言的正确方法,如果有人看到了代码,就不会理解它的本意


我正在寻找一些更好的解决方案来快速解析小型语言。一些库或某种技术来解决这个问题。

这是解析语言的一种非常好的方法。保持标记化和解析部分分开,可能使用一两个枚举来保存不同类型的标记。我不明白为什么这种方法会导致不干净的代码,特别是对于相当简单的语言


除此之外,野牛应该工作得很好,使用它不会有太多的智力开销

野牛怎么了?如果你有一种简单的语言,bison解析器也很简单。你可以看看。实际上,我喜欢野牛。但这是我在项目中添加的另一个依赖项。但也许我可以在版本控制中添加生成的文件?我不知道…@AndréPuel,我相信这是一种常见的代码分发方式;您可以分发bison源和生成的文件。如果避免将库代码放入
.y
文件中,您可能会发现更改并不常见。