Merge pull request #3357 from federicobond/improve-asm-grammar

docs: Improve assembly grammar definition
This commit is contained in:
chriseth 2018-02-19 19:30:54 +01:00 committed by GitHub
commit 59f5a31376
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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\\] | '\\' .)* '"'