22
|
John Knoeller · 技术社区 · 14 年前 |
1
11
Ragel: http://www.complang.org/ragel/ 它符合你的大多数要求。
它生成的代码对程序的干扰很小。代码也非常快,而且Ragel语法比我见过的任何代码都更灵活和可读。这是一个坚如磐石的软件。它可以生成表驱动的解析器或goto驱动的解析器。 |
2
6
boost.spirit.qi(解析器标记器)或boost.spirit.lex(仅标记器)。我绝对喜欢qi,lex也不坏,但我只是倾向于把qi作为我的解析需求… Qi唯一的真正缺点往往是编译时间的增加,而且它的运行速度比手工编写的解析代码稍慢。不过,它通常比用regex解析要快得多。 http://www.boost.org/doc/libs/1_41_0/libs/spirit/doc/html/index.html |
3
5
Flex也有一个C++输出选项。
只需将以下内容添加到lex文件的头部:
那么在你的资料中,它是:
|
4
5
我想到了两个工具,尽管你需要自己找出合适的, Antlr 和 GoldParser . 在两种工具中都有可用的语言绑定,其中可以插入到C++运行时环境中。 |
5
2
boost.spirit 和 Yard parser 我想起来了。注意,具有词素生成器的方法被C++内部DSL(特定于域的语言)所取代,以指定令牌。只是因为它是代码的一部分,而不使用外部实用程序,只需遵循一系列规则来指定语法。 |
Pandemonium · 更改词法分析的状态。lexbuf公司 7 年前 |
gornvix · 分析多个文件时出现错误的lex状态 9 年前 |
Xethen · 用C语言进行Lex编码 10 年前 |
Shehzaad · 为什么它显示我的函数在返回char*时返回int? 11 年前 |
Nikon the Third · 如何解析连续的文本流 11 年前 |
TreeTree · lex和yacc的运行时“语法错误” 11 年前 |
footy · 如何解决2+2和2++2冲突 12 年前 |