boost-spirit-lex相关内容

无法让 boost::spirit 解析器和词法分析器为 std::string 或 int 或 double 以外的标记类型工作

这不会编译(下面的代码). 这里还有另一个问题,也有同样的错误.但我不明白答案.我已经尝试在某些地方插入 qi::eps -- 但没有成功. 我还尝试为所使用的类型添加元函数(boost::spirit::raits::is_container)——但这也无济于事. 我还尝试使用包含我需要在任何地方使用的所有类型的相同变体.同样的问题. 有没有人让这个词法分析器返回除 do ..
发布时间:2021-12-24 15:39:39 C/C++开发

boost::spirit::lex & 问题空白

我尝试学习使用 boost::spirit.为此,我想创建一些简单的词法分析器,将它们组合起来,然后开始使用精神进行解析.我尝试修改示例,但它没有按预期运行(结果 r 不正确). 这是词法分析器: #include 命名空间 lex = boost::spirit::lex;模板 struct lexer_identifier : lex::lexer{lexer_identifier() ..
发布时间:2021-12-24 15:17:50 C/C++开发

有没有一种方法可以将spirit :: lex字符串标记的内容匹配为Spirit :: qi语法中的文字

我正在编写DSL,并使用Boost Spirit词法分析器标记我的输入.在我的语法中,我想要一个与此类似的规则(其中tok是词法分析器): header_block = tok.name >> ':' >> tok.stringval > ';' >> tok.description >> ':' >> tok.stringval > ';' ; 我不想为语言指定保留 ..
发布时间:2020-07-18 20:45:56 C/C++开发

无法获得boost :: spirit解析器和词法分析器,用于除std :: string或int或double以外的令牌类型

这不会编译(下面的代码). 这里还有另一个问题,同样的错误.但是我不明白答案.我已经尝试过将qi :: eps插入位置-但没有成功. 我还尝试为使用的类型添加元函数(boost :: spirit :: raits :: is_container),但这也无济于事. 我还尝试使用相同的变体,其中包含我需要在所有地方使用的所有类型.同样的问题. 有人为词法分析器返回了doub ..
发布时间:2020-07-18 20:45:44 C/C++开发

无法获取Boost Spirit语法为std :: map<>使用已知键

我似乎在使用Boost Spirit时遇到了一些精神障碍,这是我无法企及的.我有一个需要处理的相当简单的语法,我想将这些值放入一个结构中,该结构包含std :: map作为其成员之一.配对的密钥名称是预先知道的,因此仅允许使用这些名称.地图中可能有一对多的键,可以按任何顺序排列,每个键的名称都通过qi进行了验证. 例如,语法看起来像这样. test .|*| a ..
发布时间:2020-07-18 20:45:34 C/C++开发

Boost spirit lex将令牌值写回输入流

我想知道是否有一个方法在boost :: spirit :: lex写一个标记值回输入流(可能在编辑后)和再次重新扫描。我基本上找的是一个功能,像由unput()在Flex中提供的。 谢谢! 解决方案 我最终实现了自己的unput()功能,如下所示: struct unputImpl { template ..
发布时间:2016-10-24 16:43:06 C/C++开发

如何基准Boost Spirit解析器?

我正在编译器,我想提高其性能。我发现大约50%的时间花在解析源文件。由于源文件相当小,我之后做了很多转换,在我看来,它是完美的。 我的解析器是一个Boost Spirit解析器和一个词法分析器(与lexer :: pos_iterator),我有一个中等大小的语法。我把源解析成AST。 我的问题是,我不知道在解析过程中花费的时间最多:AST节点,词法分析器,解析器规则或内存的副本。 ..

解析与Boost.Spirit一个符号化的自由形式文法

我卡住了试图以创建callgrind工具的输出Boost.Spirit解析器是的valgrind的一部分。 Callgrind输出特定领域的嵌入式编程语言(DSEL),它可以让你做各种如自定义前pressions合成柜台很酷的东西,但它不是简单的解析。 我已经放了一些样品callgrind输出在 https://开头要点.github.com / ned14 / 5452719#文件的采样cal ..
发布时间:2016-08-12 18:58:56 C/C++开发

提振精神写法令牌值回输入流

我想知道如果有一个在升压方式::精神::法写一个令牌值回输入流(可能是编辑后),并再次重新扫描。什么我基本上寻找的是一个功能,例如,通过在Flex的unput()提供。 谢谢! 解决方案 我最终实现我自己的unput()的功能如下: 结构unputImpl { 模板&LT; typename的Iter1T,typename的Iter2T,类型名STRT&GT; ..
发布时间:2016-08-12 18:20:03 C/C++开发

提振精神信号成功解析尽管令牌不完整

我有一个非常简单的路径构造我试图用升压spirit.lex解析。 我们有以下的语法: 标记:= [A-Z] + 路径:=(令牌:路径)| (令牌) 所以,我们只是在谈论这里冒号分隔的小写的ASCII字符串。 我有三个例子“XYZ”,“ABC:XYZ”,“ABC:XYZ:” 前两个应视为有效。第三个,其具有尾随结肠,不应该被视为无效。不幸的是,解析器我承认这三个为​​有效。语法不应该允许一个 ..
发布时间:2016-08-12 17:21:14 C/C++开发

与升压:: ::精神和法功放的烦恼;空白

我尝试学习使用的boost ::精神。要做到这一点,我想创造一些简单的词法分析,将它们组合起来,然后开始使用精神分析。我试图修改的例子,但预期不运行(结果r是不是真的)。​​ 下面是词法分析器: 的#include&LT;升压/精神/有/ lex_lexertl.hpp&GT;命名空间=法的boost ::精神::法;模板&LT; typename的词法&GT; 结构lexer_identif ..
发布时间:2016-08-12 17:19:21 C/C++开发