【发布时间】:2016-02-04 17:33:11
【问题描述】:
我一直在浏览我能够找到的 Boost.Spirit X3 文档——这并不多——我想我想将它用于我的下一个解析项目。值得注意的是,我从未使用过 Boost.Spirit Classic 或 V2,但使用过 flex/bison 和 ANTLR。
我要解析的格式,在最基本的意义上,如下所示:
unimportant
foo
bar
# BEGIN
parse this
...
# END
ignore this
只有“#BEGIN”和“#END”之间的文本被解析,其他所有内容都被完全忽略。我试图找出一种在 X3 解析器中完成此任务的有效方法。我的一些想法:
- 使用基本的字符串搜索功能来限制解析的范围。这似乎是最糟糕的选择,因为文本将被多次处理,而不是一次处理。
- 查看 Spirit.Lex。我再次发现在 Spirit.Lex 上找到任何体面的阅读材料有些困难,但似乎 Lex 提供了词法分析器启动状态,这将是处理这项工作的传统方式。顺便说一句,由于 X3 是基于 C++14 的,并且 Spirit.Lex 构建在 lexertl 之上,是否有配置选项或方法可以将 Spirit.Lex 与现代化的 lexertl14 一起使用?
- 也许在 X3 中有一些有意义的方法来处理这个问题?由于语法实际上非常简单,我认为使用单独的词法分析器是大材小用。
【问题讨论】:
标签: c++ parsing boost boost-spirit-lex boost-spirit-x3