【发布时间】:2023-03-06 17:31:01
【问题描述】:
我正在研究一种使用 Boost.Spirit 实现的编程语言 (full project here),我正在努力解决以下问题。我有以下函数声明(this file 中的第 77 行):
function_body_rule %=
identifier_rule
>> lit(L":=")
>> lit(L"(")
>> -parameter_declaration_rule % ','
>> lit(L")")
//>> lit(L"->") // epic fail if you uncomment this
>> type_specification_rule
>> lit(L"{")
>> *(assignment_statement_rule)
>> lit(L"}");
在某些时候,它只是一个接一个地有两个标记。如果我取消注释第二个标记,当我输入正确的序列时,我的函数将不再正确解析。如果我评论令牌,一切都很好(虽然我显然不能包括->)。
你能帮我弄清楚发生了什么吗?
【问题讨论】:
-
@jv_ 您没有取消注释我评论的行。取消注释并尝试使用
...:string) -> string... -
我不小心复制了以前的版本。 This one 已取消注释。
-
@jv_ 对我来说失败了(提升 1.59)
-
我在 1.60 和 1.61 上测试过,所以这似乎是问题所在。
-
@jv_ 没有帮助,但我意识到问题出在哪里
标签: c++ boost-spirit