【问题标题】:Failing to parse correctly when using Boost.Spirit使用 Boost.Spirit 时无法正确解析
【发布时间】: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


【解决方案1】:

找到答案 - 键盘输入将破折号改写为 -(减号)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多