Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program ::= expressions
- ident ::= [a-zA-Z_][a-zA-Z0-9_]*
- digit ::= [0-9]
- type_defs ::= ident type_def | ident type_def ',' type_defs
- type_def ::= ':' ident
- expressions ::= expression | expressions expression
- expression ::= function_def | extern_def | funcptr_def | struct_def | var_def | if_stmt | for_stmt | while_stmt | expression
- function_def ::= ident ':=' 'block' '(' type_defs ')' type_def
- extern_def ::= ident ':=' 'extern' '(' type_defs ')' type_def |
- ident ':=' 'extern' '(' ')' type_def
- var_def ::= ident ':=' expression
- if_stmt ::= 'if' '(' expression ',' expression ',' expression ')' |
- 'if' '(' expression ',' expression ')' |
- 'if' '(' expression ')' 'then' '(' expression ')' elseif_list 'else' '(' expression ')' |
- 'if' '(' expression ')' 'then' '(' expression ')' elseif_list |
- 'if' '(' expression ')' 'then' '(' expression ')' 'else' '(' expression ')'
- elseif_list ::= elseif_list 'elseif' '(' expression ')' |
- 'elseif' '(' expression ')'
- for_stmt ::= 'for' '(' ident ',' expression ',' expression ',' expression ')'
- while_stmt ::= 'while' '(' expression ',' expression ')'
- expression ::= func_call | number_def | string_def | struct_member_access
- func_call ::= ident '(' call_argument_list ')' |
- ident '(' ')'
- call_argument_list ::= expression | call_argument_list ',' expression
- number_def ::= digit+ | digit+ '.' digit+
- string_def ::= '"' [^"] any* '"'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement