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)