C++ 解析树中的一元和二元减号

C++ 解析树中的一元和二元减号,c++,operator-precedence,unary-operator,parse-tree,binary-operators,C++,Operator Precedence,Unary Operator,Parse Tree,Binary Operators,我正在创建一个解析树,它将包含与 3-4*8 或 8*-5 或 -(10*1) 我需要一种区分一元负号和二元负号的方法。现在我的语法是先达到二进制减号,但我正在考虑改变它并添加一个包含最后一个变量的标志变量 例如:如果是5-6 该标志保持5,如果它看到减号,标志是一个数字,则跳过一元,转到二进制 但是,我不确定如何在C中实现这一点++ 任何帮助都将不胜感激 谢谢实现解析器最简单的方法是使用。确保二进制减号的优先级高于一元减号,如在引用站点中: E --> | E "+" E

我正在创建一个解析树,它将包含与

3-4*8

8*-5

-(10*1)

我需要一种区分一元负号和二元负号的方法。现在我的语法是先达到二进制减号,但我正在考虑改变它并添加一个包含最后一个变量的标志变量

例如:如果是
5-6

该标志保持5,如果它看到减号,标志是一个数字,则跳过一元,转到二进制

但是,我不确定如何在C中实现这一点++

任何帮助都将不胜感激


谢谢

实现解析器最简单的方法是使用。确保二进制减号的优先级高于一元减号,如在引用站点中:

 E -->  | E "+" E
        | E "-" E
        | "-" E
        | E "*" E
        | E "/" E
        | E "^" E
        | "(" E ")"
        | v

您是指在解析时区分它们的方法,还是在解析树中区分它们的方法?在解析树中,它很简单——只需要使用单独的
一元减
二元减
运算符。如果你的意思是在解析时,当你需要一个操作数而不是一个运算符时,就会出现一元负号。在我的解析器中,我希望它能区分-5和4-5。我的下一部分将此树的叶子转换为AST树(正在工作),但我的解析器将所有内容都视为二进制减号(4-5)。查看站点后,我可能会重新编写语法规则,以遵循站点的语法规则,但其中的一个问题是,此解析器还必须能够处理=、<、>=、或, not@Dfranc3373有关C++@Dfranc3373的完整运算符优先级,请参见!顺便问一下,你是否已经阅读了关于如何评分答案的常见问题?你已经接受了你提出的每一个问题的答案,这很好,但你也可以为任何你觉得有用的答案打分。