* 式 [#dc9e1708] #contents ** 演算子優先順位 [#a79fdee2] - 上にあるほど優先が高い。 - ほぼCと同じ。 - 諸事情により一部の演算子は全角文字で記述してあります |カテゴリ|C演算子|オリジナル|h |subscript|[ ]|| |postfix|++ --|| |unary_prefix|++ -- + - ! ~ ( )|| |arithmetic_multiplicative|* / %|| |arithmetic_additive|+ -|| |shift|>> <<|| |comparison_relational|< <= > >=|| |comparison_equality|== !=|| |bitwise_and|&|| |bitwise_xor|^|| |bitwise_or|||| |boolean_and|&&|| |boolean_or||||| |conditional|? :|| |assignment|= += -= *= /= %= >>= <<= &= |= ^=|| |sequence|,|| ** ExpressionのEBNF [#abe280b9] #code(){{ UnaryOperator: "+" | "-" | "!" | "~" | "@" PrefixOperator: "++" | "--" NewExpression: "new" IdentPath FunctionCallExpression PrimaryExpression: IdentPath | NewExpression | ConstantLiteral | "(" Expression ")" IndexExpression: "[" Expression "]" FunctionCallExpression: "(" SequenceExpression ")" PostfixOperator: "++" | "--" | IndexExpression | FunctionCallExpression PostfixExpression: PrimaryExpression (PostfixOperator)* UnaryExpression: UnaryOperator CastExpression | (PrefixOperator)* PostfixExpression CastExpression: ( "cast" "(" IdentPath ")" )* UnaryExpression MultiplicativeOperator: "*" | "/" | "%" MultiplicativeExpression: CastExpression (MultiplicativeOperator CastExpression) AdditiveOperator: "+" | "-" AdditiveExpression: MultiplicativeExpression (AdditiveOperator MultiplicativeExpression)* ShiftOperator: ">>" | "<<" ShiftExpression: AdditiveExpression (ShiftOperator AdditiveExpression)* RelationalOperator: ">" | "<" | "<=" | ">=" RelationalExpression: ShiftExpression (RelationalOperator ShiftExpression)* EqualityOperator: "==" | "!=" EqualityExpression: RelationalExpression (EqulityOperator RelationalExpression)* BitwiseAndOperator: "&" BitwiseAndExpression: EqualityExpression (BitwiseAndOperator EqualityExpression )* BitwiseXorOperator: "^" BitwiseXorExpression: BitwiseAndExpression (BitwiseXorOperator BitwiseAndExpression)* BitwiseOrOperator: "|" BitwiseOrExpression: BitwiseXorExpression (BitwiseOrOperator BitwiseXorExpression)* LogicalAndOperator: "&&" LogicalAndExpression: BitwiseOrExpression (LogicalAndOperator BitwiseOrExpression)* LogicalOrOperator: "||" LogicalOrExpression: LogicalAndExpression (LogicalOrOperator LogicalAndExpression)* ConditionalExpression: LogicalOrExpression ("?" Expression ":" ConditionalExpression)* AssignmentOperator: "=" | "+=" | "-=" | "*=" | "/=" | "%=" | ">>=" | "<<=" | "&=" | "|=" | "^=" AssignmentExpression: (VariableReference AssignmentOperator)* ConditionalExpression SequenceOperator: "," SequenceExpression: AssignmentExpression (SequenceOperator AssignmentExpression)* Expression: SequenceExpression }} |