Support types in grammar

This commit is contained in:
Alex Beregszaszi 2017-04-21 17:04:27 +01:00
parent 0493828916
commit be470f107e

View File

@ -78,12 +78,12 @@ Grammar::
BreakContinue | BreakContinue |
SubAssembly SubAssembly
FunctionDefinition = FunctionDefinition =
'function' Identifier '(' IdentifierList? ')' 'function' Identifier '(' TypedIdentifierList? ')'
( '->' IdentifierList )? Block ( '->' TypedIdentifierList )? Block
VariableDeclaration = VariableDeclaration =
'let' IdentifierOrList ( ':=' Expression )? 'let' TypedIdentifierList ( ':=' Expression )?
Assignment = Assignment =
IdentifierOrList ':=' Expression IdentifierList ':=' Expression
Expression = Expression =
FunctionCall | Identifier | Literal FunctionCall | Identifier | Literal
Switch = Switch =
@ -98,11 +98,11 @@ Grammar::
'assembly' Identifier Block 'assembly' Identifier Block
FunctionCall = FunctionCall =
Identifier '(' ( Expression ( ',' Expression )* )? ')' Identifier '(' ( Expression ( ',' Expression )* )? ')'
IdentifierOrList = Identifier | '(' IdentifierList ')'
Identifier = [a-zA-Z_$] [a-zA-Z_0-9]* Identifier = [a-zA-Z_$] [a-zA-Z_0-9]*
IdentifierList = Identifier ( ',' Identifier)* IdentifierList = Identifier ( ',' Identifier)*
TypedIdentifierList = Identifier ':' Identifier ( ',' Identifier ':' Identifier )*
Literal = Literal =
NumberLiteral | StringLiteral | HexLiteral (NumberLiteral | StringLiteral | HexLiteral) ':' Identifier
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\\] | '\\' .)* '"'