* 式 [#dc9e1708]
#contents

** 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)*

IdentityOperator:
  "is"
  | "!" "is"

IdentityExpression:
  EqualityExpression (IdentityOperator EqualityExpression )* 

BitwiseAndOperator:
  "&"

BitwiseAndExpression:
  IdentityExpression (BitwiseAndOperator IdentityExpression )* 

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