相关疑难解决方法(0)

将一元运算符联合起来是否有意义?

来自http://en.cppreference.com/w/cpp/language/operator_precedence的C++运算符优先级表(我知道它不是规范性的,但标准不讨论优先级或关联性)将一元运算符标记为右/左关联.

从对不同问题的讨论中,我怀疑.将一元运算符联合起来是否有意义?

c++ operators unary-operator associativity

15
推荐指数
1
解决办法
4830
查看次数

从这个例子中确定LR(k)的k?

我准备了以下语法,生成C逻辑和整数算术表达式的子集:

Expression:
    LogicalOrExpression
    LogicalOrExpression ? Expression : LogicalOrExpression

LogicalOrExpression:
    LogicalAndExpression
    LogicalOrExpression || LogicalAndExpression

LogicalAndExpression:
    EqualityExpression
    LogicalAndExpression && RelationalExpression

EqualityExpression:
    RelationalExpression
    EqualityExpression EqualityOperator RelationalExpression

EqualityOperator:
    ==
    !=

RelationalExpression:
    AdditiveExpression
    RelationalExpression RelationalOperator AdditiveExpression

RelationalOperator:
    <
    >
    <=
    >=

AdditiveExpression:
    MultiplicativeExpression
    AdditiveExpression AdditiveOperator MultiplicativeExpression

AdditiveOperator:
    +
    -

MultiplicativeExpression:
    UnaryExpression
    MultiplicativeExpression MultiplicativeOperator UnaryExpression

MultiplicativeOperator:
    *
    /
    %

UnaryExpression:
    PrimaryExpression
    UnaryOperator UnaryExpression

UnaryOperator:
    +
    -
    !

PrimaryExpression:
    BoolLiteral    // TERMINAL
    IntegerLiteral // TERMINAL
    Identifier     // TERMINAL
    ( Expression )
Run Code Online (Sandbox Code Playgroud)

我想尝试使用shift/reduce解析,因此想知道这个语法是LR(k)的最小k(如果有的话)是什么?(更一般地说,如果可能的话,如何从任意语法中确定k?)

c algorithm parsing

5
推荐指数
1
解决办法
360
查看次数

标签 统计

algorithm ×1

associativity ×1

c ×1

c++ ×1

operators ×1

parsing ×1

unary-operator ×1