我想当我开始出现堆栈溢出时,是时候来这里询问了;)
我现在正在尝试学习如何使用 Boost Spirit。我已经弄清楚了基本的东西。由于我手头有 K&R(其中包含 C 的语法),我决定看看我是否可以为该语言创建一个接受器。无论如何,这或多或少是我最初的目标,因为我最终想用它作为预处理器从数据结构和东西中收集一些信息。
我能够解析常量和字符串,但是当我尝试解析这个时,我开始遇到问题。
postfix_expression =
primary_expression
// omitting some other rules for simplicity's sake
| (postfix_expression >> chseq+p("++"))
| (postfix_expression >> chseq_p("--"));
primary_expression =
identifier
| constant
| string_literal;
// The parsers for constants and strings are
// pretty trivial so I'm not going to C+P them here.
当我传递类似i++
它失败的东西时。我认为这是因为i
它是有效的primary_expression
,所以它不会继续检查++
or --
。我试着把它放在底部,然后我得到堆栈溢出。我在这里得到了一些无限的左递归,但我不知道如何解决它。