精神 X3 解析器启动状态

Spirit X3 parser start state?

本文关键字:启动 状态 X3 精神      更新时间:2023-10-16

我一直在浏览我能够找到的 Boost.Spirit X3 文档---这并不多---我想在下一个解析项目中使用它。值得注意的是,我从未使用过Boost.Spirit Classic或V2,但使用过flex/bison和ANTLR。

我想要解析的格式,就最基本的意义而言,如下所示:

unimportant
foo
bar
# BEGIN
parse this
...
# END
ignore this

其中仅解析"# BEGIN"和"# END"之间的文本,而完全忽略其他所有内容。我正在尝试找出一种在 X3 解析器中完成此操作的有效方法。我的一些想法:

  1. 使用基本的字符串搜索函数来限制分析的范围。这似乎是最糟糕的选择,因为文本将被多次处理,而不是一次处理。
  2. 看看精神莱克斯。我再次发现在 Spirit.Lex 上很难找到任何像样的阅读材料,但似乎 Lex 提供了词法分析器启动状态,这将是处理这项工作的传统方式。顺便说一句,由于X3是基于C++14的,而Spirit.Lex是建立在lexertl之上的,是否有配置选项或方法可以将Spirit.Lex与现代化的lexertl14一起使用?
  3. 也许在 X3 中有一些有意义的方法来处理这个问题?由于语法实际上非常简单,我认为使用单独的词法分析器是矫枉过正的。

使用 Boost Spirit 解析文本文件,同时跳过大部分文本文件中的示例也适用于 X3:

住在科里鲁

当然,您必须根据自己的喜好对其进行修改。如果您在 [SO] 上搜索qi seek,您会发现更多样本,其中一些可能更接近您的目的。