我希望在我的yacc文件中有如下语法规则:
insert_statement: INSERT INTO NAME (any_token)* ';'在yacc中,我们可以跳过所有标记,直到出现错误时的给定标记,如下所示:
stat: error ';'有没有什么机制可以在没有错误的情况下跳过yacc中任意数量的字符?
谢谢
发布于 2012-08-31 14:47:20
过了一段时间后,我可以用下面的方法来解决我的问题,我想提一下,因为这对某人很有帮助:
<*>A-Za-z0-9_:.-* { return SKIPPINGTOKS;}
(这将标识任何令牌,如a、1、hello、hello123等。)然后,
insert_statement:插入到名称skipping_portion ';'中
skipping_portion : SKIPPINGTOKS |skipping_portion SKIPPINGTOKS
希望这能帮助到一些人。
发布于 2012-06-05 07:30:45
我认为你会想要做这样的事情。它跳过所有不是分号的标记。
insert_statement: INSERT INTO NAME discardable_tokens_or_epsilon ';' ;
discardable_tokens_or_epsilon: discardable_tokens
| epsilon
;
discardable_tokens: discardable_tokens discardable_token
| discardable_token
;
discardable_token: FOO
| BAR
| BLETCH
...et cetera... anything other than a semicolon
;
epsilon: ; 发布于 2012-06-04 23:01:33
简单地说,不要指定包含这些令牌的产生式规则,您想跳过。
https://stackoverflow.com/questions/10871496
复制相似问题