gpt4 book ai didi

parsing - 我应该如何在 yacc/bison 和 lex 中制定递归规则?

转载 作者:行者123 更新时间:2023-12-02 02:19:33 26 4
gpt4 key购买 nike

我正在使用 yacc(bison) 和 flex 编写一个简单的 HTML 解析器。我怎样才能制定这条规则:

column -> <td>text</td>column | NULL

我试过很多这样的形式:

COLUMN : L_TAG T_OPEN R_TAG ID L_TAG T_CLOSE R_TAG COLUMN
|
;

//token在lex中指定。

不幸的是,它不起作用。它给了我移位/减少错误。我是将 COLUMN 放在规则的开头还是结尾。我是否像这样使用 NULL:

{$$ = NULL}

或留空。我需要 NULL 东西来使规则递归并且能够多次使用相同的标签。像这样:

<tr>name</tr><tr>age</tr>

我怎样才能让它工作?

最佳答案

column       :/* empty */
| column '<' TD '>' TEXT '<' '/' TD '>'

您可以优化您的规则,使其更具体。对于递归,您应该在 lalr(1) 语法中使其保持递归。

祝你好运

关于parsing - 我应该如何在 yacc/bison 和 lex 中制定递归规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com