• 追加された行はこの色です。
  • 削除された行はこの色です。
* 式 [#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:
  | "++"
  | "--"
  | "+"
  | "-"
  | "!"
  | "~"
  | "@"  

NewExpression:
  "new" TypePath FunctionCallExpression

DeleteExpression:
  "delete" UnaryExpression

PrimaryExpression:
  Identifier # ScopeRootIdentExpression
  | "." Identifier # NamespaceRootIdentExpression
  | ConstantLiteral
  | "(" Expression ")"

IndexExpression:
  "[" Expression "]"

FunctionCallExpression:
  "(" SequenceExpression ")"

PostfixOperator:
  "++"
  | "--"
  | IndexExpression
  | FunctionCallExpression
  | "." Identifier # ChildIdentExpression

PostfixExpression:
  PrimaryExpression (PostfixOperator)*

CastExpression:
  "cast" "(" TypePath ")" UnaryExpression

UnaryExpression:
  (UnaryOperator)* (CastExpression | NewExpression | DeleteExpression | PostfixExpression)

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 ("?" ConditionalExpression ":" ConditionalExpression)*

AssignmentOperator:
  "="
  | "+="
  | "-="
  | "*="
  | "/="
  | "%="
  | ">>="
  | "<<="
  | "&="
  | "|="
  | "^="

AssignmentExpression:
  (ConditionalExpression AssignmentOperator)* ConditionalExpression

Expression:
  AssignmentExpression

SequenceOperator:
  ","

SequenceExpression:
  Expression (SequenceOperator Expression)*

}}



    ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS