Bison 如何区分大于小于'<''&燃气轮机';来自通用'<&燃气轮机';在yacc
例如:Bison 如何区分大于小于'<''&燃气轮机';来自通用'<&燃气轮机';在yacc,bison,yacc,Bison,Yacc,例如: a < getBoolNum<int>(a < getNum<int>()) 在yacc中,如何区分大于小于“”和泛型“”毫无意义,就像“大于小于”一样。只是不允许。我只见过它被用作“不平等”。没有歧义,因为它没有任何歧义。为什么要同时指定additional\u expression GT additional\u expression和expression GT additional\u expression?仅仅测试语法是没有意义的。完整的代码
a < getBoolNum<int>(a < getNum<int>())
在yacc中,如何区分大于小于“”和泛型“”毫无意义,就像“大于小于”一样。只是不允许。我只见过它被用作“不平等”。没有歧义,因为它没有任何歧义。为什么要同时指定
additional\u expression GT additional\u expression
和expression GT additional\u expression
?仅仅测试语法是没有意义的。完整的代码太长了。不“只测试语法”没有任何意义,不管这个建议来自哪里。不是我的。你还没有回答这里问你的任何问题。
translation_unit
: expression
{}
;
expression
: additive_expression GT additive_expression
{}
| additive_expression LT additive_expression
{}
| expression GT additive_expression
{}
| expression LT additive_expression
{}
;
additive_expression
: function_call
{}
| IDENTIFIER
{}
;
function_call
: IDENTIFIER LT IDENTIFIER GT LP argument_list RP // identifier < identifier > ( expression, expression )
{}
;
argument_list
: IDENTIFIER
{}
| function_call
{}
| expression
{}
| argument_list COMMA IDENTIFIER
{}
| argument_list COMMA function_call
{}
| argument_list COMMA expression
{}
;
state 1
7 additive_expression: IDENTIFIER .
8 function_call: IDENTIFIER . LT IDENTIFIER GT LP argument_list RP
LT shift, and go to state 6
LT [reduce using rule 7 (additive_expression)]
$default reduce using rule 7 (additive_expression)