2016-02-04 81 views
2

我已经经历了Boost.Spirit X3文件我已经能够找到---这是没有太大---并认为我想用这对我的下一个解析的项目。值得注意的是,我从未使用过Boost.Spirit Classic或V2,但已经使用过flex/bison和ANTLR。Spirit X3解析器启动状态?

我期待解析的格式,在其最基本的意义上说,是这样的:

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

其中只有“#BEGIN”和“#END”之间的文本进行解析,其他一切都是完全忽略。我正试图找出一种在X3解析器中实现这一点的有效方法。我有一些想法:

  1. 使用基本的字符串搜索功能来限制解析的范围。这似乎是最糟糕的选择,因为文本将被多次处理,而不是一次处理。
  2. 看着Spirit.Lex。再次,我发现在Spirit.Lex上找到任何合适的阅读材料都有些困难,但Lex似乎提供了词汇开始状态,这将是处理这项工作的传统方式。顺便说一句,因为X 3是C++ 14基和Spirit.Lex是建立在lexertl顶部,有一个配置选项或方式使用Spirit.Lex与现代化lexertl14?
  3. 也许,这X3来处理这一些有意义的方式?由于语法实际上非常简单,我认为有一个单独的词法分析器是过度的。

回答