Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;解析代码(手写)_C++_Parsing - Fatal编程技术网

C++ C++;解析代码(手写)

C++ C++;解析代码(手写),c++,parsing,C++,Parsing,我需要解析一种类似于Java简化版的语言。因为效率是我选择手写解析器的最重要因素,而不是像GOLD、bison和yacc这样的LRAR解析器生成器 然而,我找不到好的手写解析器背后的理论。似乎只有关于这些生成器及其背后机制的教程 我必须放弃使用正则表达式吗?因为我可以想象它们比手写托卡机慢 有人知道一个好的手写解析类或教程吗?如果有帮助,这里是(不是一个类或教程,而是)一个手写解析器的示例:(但是它显式编码是为了正确/简单地对应规范,而不是为了高性能而优化) 我认为,更大的问题是为解析开发规范。

我需要解析一种类似于Java简化版的语言。因为效率是我选择手写解析器的最重要因素,而不是像GOLD、bison和yacc这样的LRAR解析器生成器

然而,我找不到好的手写解析器背后的理论。似乎只有关于这些生成器及其背后机制的教程

我必须放弃使用正则表达式吗?因为我可以想象它们比手写托卡机慢

有人知道一个好的手写解析类或教程吗?

如果有帮助,这里是(不是一个类或教程,而是)一个手写解析器的示例:(但是它显式编码是为了正确/简单地对应规范,而不是为了高性能而优化)

我认为,更大的问题是为解析开发规范。解析器规范的示例包括和一个用于解析HTML5的类似规范


使用语法分析器生成器的先决条件是语言语法是由语法定义的(语法分析器生成器支持语法格式),而不是由语法分析器算法定义的。

编译的正则表达式(例如并行FSM)通常比手写的LL(n)快。尽管我建议改为进行无词法解析。手写PEG(带有表达式的Pratt解析)可以非常快,您仍然可以使用一些更高级别的模板来生成高效的代码。阅读更多关于PEGs的内容,可能是关于Packrat解析和Pratt的内容,这应该是一个足够的理论。另外,LLVM的万花筒教程包括一个简单的手写解析器,它反过来反映了更复杂的LLVM和Clang解析方法(它们效率非常高)。老实说,只需简单地完成,然后对其进行基准测试。如果您确实需要手工编写代码,至少您会有一个功能正确的原型进行比较。因为我可以想象他们写得很慢,这并不是从头开始写这么复杂的东西的好理由。@SK logic谢谢你提供的信息!这正是我需要的。@它是无用的。但我已经有了一个语法和语法分析器生成器生成工具。所以这是我的下一步。