mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #3357 from federicobond/improve-asm-grammar
docs: Improve assembly grammar definition
This commit is contained in:
commit
59f5a31376
@ -861,38 +861,37 @@ Grammar::
|
|||||||
AssemblyItem =
|
AssemblyItem =
|
||||||
Identifier |
|
Identifier |
|
||||||
AssemblyBlock |
|
AssemblyBlock |
|
||||||
FunctionalAssemblyExpression |
|
AssemblyExpression |
|
||||||
AssemblyLocalDefinition |
|
AssemblyLocalDefinition |
|
||||||
FunctionalAssemblyAssignment |
|
|
||||||
AssemblyAssignment |
|
AssemblyAssignment |
|
||||||
|
AssemblyStackAssignment |
|
||||||
LabelDefinition |
|
LabelDefinition |
|
||||||
AssemblyIf |
|
AssemblyIf |
|
||||||
AssemblySwitch |
|
AssemblySwitch |
|
||||||
AssemblyFunctionDefinition |
|
AssemblyFunctionDefinition |
|
||||||
AssemblyFor |
|
AssemblyFor |
|
||||||
'break' | 'continue' |
|
'break' |
|
||||||
SubAssembly | 'dataSize' '(' Identifier ')' |
|
'continue' |
|
||||||
LinkerSymbol |
|
SubAssembly
|
||||||
'errorLabel' | 'bytecodeSize' |
|
AssemblyExpression = AssemblyCall | Identifier | AssemblyLiteral
|
||||||
NumberLiteral | StringLiteral | HexLiteral
|
AssemblyLiteral = NumberLiteral | StringLiteral | HexLiteral
|
||||||
Identifier = [a-zA-Z_$] [a-zA-Z_0-9]*
|
Identifier = [a-zA-Z_$] [a-zA-Z_0-9]*
|
||||||
FunctionalAssemblyExpression = Identifier '(' ( AssemblyItem ( ',' AssemblyItem )* )? ')'
|
AssemblyCall = Identifier '(' ( AssemblyExpression ( ',' AssemblyExpression )* )? ')'
|
||||||
AssemblyLocalDefinition = 'let' IdentifierOrList ':=' FunctionalAssemblyExpression
|
AssemblyLocalDefinition = 'let' IdentifierOrList ( ':=' AssemblyExpression )?
|
||||||
FunctionalAssemblyAssignment = IdentifierOrList ':=' FunctionalAssemblyExpression
|
AssemblyAssignment = IdentifierOrList ':=' AssemblyExpression
|
||||||
IdentifierOrList = Identifier | '(' IdentifierList ')'
|
IdentifierOrList = Identifier | '(' IdentifierList ')'
|
||||||
IdentifierList = Identifier ( ',' Identifier)*
|
IdentifierList = Identifier ( ',' Identifier)*
|
||||||
AssemblyAssignment = '=:' Identifier
|
AssemblyStackAssignment = '=:' Identifier
|
||||||
LabelDefinition = Identifier ':'
|
LabelDefinition = Identifier ':'
|
||||||
AssemblyIf = 'if' FunctionalAssemblyExpression AssemblyBlock
|
AssemblyIf = 'if' AssemblyExpression AssemblyBlock
|
||||||
AssemblySwitch = 'switch' FunctionalAssemblyExpression AssemblyCase*
|
AssemblySwitch = 'switch' AssemblyExpression AssemblyCase*
|
||||||
( 'default' AssemblyBlock )?
|
( 'default' AssemblyBlock )?
|
||||||
AssemblyCase = 'case' FunctionalAssemblyExpression AssemblyBlock
|
AssemblyCase = 'case' AssemblyExpression AssemblyBlock
|
||||||
AssemblyFunctionDefinition = 'function' Identifier '(' IdentifierList? ')'
|
AssemblyFunctionDefinition = 'function' Identifier '(' IdentifierList? ')'
|
||||||
( '->' '(' IdentifierList ')' )? AssemblyBlock
|
( '->' '(' IdentifierList ')' )? AssemblyBlock
|
||||||
AssemblyFor = 'for' ( AssemblyBlock | FunctionalAssemblyExpression)
|
AssemblyFor = 'for' ( AssemblyBlock | AssemblyExpression )
|
||||||
FunctionalAssemblyExpression ( AssemblyBlock | FunctionalAssemblyExpression) AssemblyBlock
|
AssemblyExpression ( AssemblyBlock | AssemblyExpression ) AssemblyBlock
|
||||||
SubAssembly = 'assembly' Identifier AssemblyBlock
|
SubAssembly = 'assembly' Identifier AssemblyBlock
|
||||||
LinkerSymbol = 'linkerSymbol' '(' StringLiteral ')'
|
|
||||||
NumberLiteral = HexNumber | DecimalNumber
|
NumberLiteral = HexNumber | DecimalNumber
|
||||||
HexLiteral = 'hex' ('"' ([0-9a-fA-F]{2})* '"' | '\'' ([0-9a-fA-F]{2})* '\'')
|
HexLiteral = 'hex' ('"' ([0-9a-fA-F]{2})* '"' | '\'' ([0-9a-fA-F]{2})* '\'')
|
||||||
StringLiteral = '"' ([^"\r\n\\] | '\\' .)* '"'
|
StringLiteral = '"' ([^"\r\n\\] | '\\' .)* '"'
|
||||||
|
Loading…
Reference in New Issue
Block a user