Skip to content

6.2. Yul Expressions#


YulExpression = (* variant: *) YulFunctionCallExpression
| (* variant: *) YulLiteral
| (* variant: *) YulPath;

(* Postfix unary operator *)
YulFunctionCallExpression = (* operand: *) YulExpression
(* open_paren: *) OPEN_PAREN
(* arguments: *) YulArguments
(* close_paren: *) CLOSE_PAREN;

YulArguments = ((* item: *) YulExpression ((* separator: *) COMMA (* item: *) YulExpression)*)?;

YulPaths = (* item: *) YulPath ((* separator: *) COMMA (* item: *) YulPath)*;

YulPath = (* item: *) YUL_IDENTIFIER ((* separator: *) PERIOD (* item: *) YUL_IDENTIFIER)*;

(* Introduced in 0.5.8 and deprecated in 0.7.0. *)
YUL_IDENTIFIER = «IDENTIFIER_START» («IDENTIFIER_PART» | ".")*;

YUL_IDENTIFIER = «IDENTIFIER_START» «IDENTIFIER_PART»*;

YulLiteral = (* variant: *) YUL_TRUE_KEYWORD (* Introduced in 0.6.2 *)
| (* variant: *) YUL_FALSE_KEYWORD (* Introduced in 0.6.2 *)
| (* variant: *) YUL_DECIMAL_LITERAL
| (* variant: *) YUL_HEX_LITERAL
| (* variant: *) HexStringLiteral
| (* variant: *) StringLiteral;

YUL_DECIMAL_LITERAL = ("0" | ("1""9" "0""9"*)) (?!«IDENTIFIER_START»);

YUL_HEX_LITERAL = "0x" «HEX_CHARACTER»+ (?!«IDENTIFIER_START»);