22
|
John Knoeller · 技术社区 · 15 年前 |
![]() |
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(特定于域的语言)所取代,以指定令牌。只是因为它是代码的一部分,而不使用外部实用程序,只需遵循一系列规则来指定语法。 |
![]() |
John Veridan · 在Python笔记本中仅选择列[无行] 7 年前 |
![]() |
seanysull · 修改regex以包含连字符单词 7 年前 |
![]() |
Ovaflow · 使用nltk中的标记集计算语音中的不同单词 7 年前 |
![]() |
Laurent R · 根据空格和标点符号标记,标点符号保留 7 年前 |
![]() |
mrfr · StreamTokenizer在遇到斜杠时停止 7 年前 |
![]() |
Rose · Elasticsearch:术语搜索不适用于特殊字符 7 年前 |
![]() |
vakarami · 用于提取文件名的模式标记器 7 年前 |
![]() |
Konstantin · 用Ruby将单词分解成字母 7 年前 |