mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #2402 from ethereum/grammar-updates
Grammar updates (mostly assembly)
This commit is contained in:
commit
54e97d1c34
@ -7,7 +7,7 @@ ImportDirective = 'import' StringLiteral ('as' Identifier)? ';'
|
|||||||
| 'import' ('*' | Identifier) ('as' Identifier)? 'from' StringLiteral ';'
|
| 'import' ('*' | Identifier) ('as' Identifier)? 'from' StringLiteral ';'
|
||||||
| 'import' '{' Identifier ('as' Identifier)? ( ',' Identifier ('as' Identifier)? )* '}' 'from' StringLiteral ';'
|
| 'import' '{' Identifier ('as' Identifier)? ( ',' Identifier ('as' Identifier)? )* '}' 'from' StringLiteral ';'
|
||||||
|
|
||||||
ContractDefinition = ( 'contract' | 'library' ) Identifier
|
ContractDefinition = ( 'contract' | 'library' | 'interface' ) Identifier
|
||||||
( 'is' InheritanceSpecifier (',' InheritanceSpecifier )* )?
|
( 'is' InheritanceSpecifier (',' InheritanceSpecifier )* )?
|
||||||
'{' ContractPart* '}'
|
'{' ContractPart* '}'
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ WhileStatement = 'while' '(' Expression ')' Statement
|
|||||||
PlaceholderStatement = '_'
|
PlaceholderStatement = '_'
|
||||||
SimpleStatement = VariableDefinition | ExpressionStatement
|
SimpleStatement = VariableDefinition | ExpressionStatement
|
||||||
ForStatement = 'for' '(' (SimpleStatement)? ';' (Expression)? ';' (ExpressionStatement)? ')' Statement
|
ForStatement = 'for' '(' (SimpleStatement)? ';' (Expression)? ';' (ExpressionStatement)? ')' Statement
|
||||||
InlineAssemblyStatement = 'assembly' InlineAssemblyBlock
|
InlineAssemblyStatement = 'assembly' StringLiteral? InlineAssemblyBlock
|
||||||
DoWhileStatement = 'do' Statement 'while' '(' Expression ')'
|
DoWhileStatement = 'do' Statement 'while' '(' Expression ')'
|
||||||
Continue = 'continue'
|
Continue = 'continue'
|
||||||
Break = 'break'
|
Break = 'break'
|
||||||
@ -137,7 +137,8 @@ Ufixed = 'ufixed' | 'ufixed0x8' | 'ufixed0x16' | 'ufixed0x24' | 'ufixed0x32' | '
|
|||||||
|
|
||||||
InlineAssemblyBlock = '{' AssemblyItem* '}'
|
InlineAssemblyBlock = '{' AssemblyItem* '}'
|
||||||
|
|
||||||
AssemblyItem = Identifier | FunctionalAssemblyExpression | InlineAssemblyBlock | AssemblyLocalBinding | AssemblyAssignment | NumberLiteral | StringLiteral | HexLiteral
|
AssemblyItem = Identifier | FunctionalAssemblyExpression | InlineAssemblyBlock | AssemblyLocalBinding | AssemblyAssignment | AssemblyLabel | NumberLiteral | StringLiteral | HexLiteral
|
||||||
AssemblyLocalBinding = 'let' Identifier ':=' FunctionalAssemblyExpression
|
AssemblyLocalBinding = 'let' Identifier ':=' FunctionalAssemblyExpression
|
||||||
AssemblyAssignment = Identifier ':=' FunctionalAssemblyExpression | '=:' Identifier
|
AssemblyAssignment = ( Identifier ':=' FunctionalAssemblyExpression ) | ( '=:' Identifier )
|
||||||
|
AssemblyLabel = Identifier ':'
|
||||||
FunctionalAssemblyExpression = Identifier '(' AssemblyItem? ( ',' AssemblyItem )* ')'
|
FunctionalAssemblyExpression = Identifier '(' AssemblyItem? ( ',' AssemblyItem )* ')'
|
||||||
|
Loading…
Reference in New Issue
Block a user