Advertisement
Guest User

Untitled

a guest
May 12th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
BNF 1.46 KB | None | 0 0
  1. program ::= expressions
  2. ident ::= [a-zA-Z_][a-zA-Z0-9_]*
  3. digit ::= [0-9]
  4. type_defs ::= ident type_def | ident type_def ',' type_defs
  5. type_def ::= ':' ident
  6. expressions ::= expression | expressions expression
  7. expression ::= function_def | extern_def | funcptr_def | struct_def | var_def | if_stmt | for_stmt | while_stmt | expression
  8. function_def ::= ident ':=' 'block' '(' type_defs ')' type_def
  9. extern_def ::= ident ':=' 'extern' '(' type_defs ')' type_def |
  10.                ident ':=' 'extern' '(' ')' type_def
  11. var_def ::= ident ':=' expression
  12. if_stmt ::= 'if' '(' expression ',' expression ',' expression ')' |
  13.             'if' '(' expression ',' expression ')' |
  14.             'if' '(' expression ')' 'then' '(' expression ')' elseif_list 'else' '(' expression ')' |
  15.             'if' '(' expression ')' 'then' '(' expression ')' elseif_list |
  16.             'if' '(' expression ')' 'then' '(' expression ')' 'else' '(' expression ')'
  17. elseif_list ::= elseif_list 'elseif' '(' expression ')' |
  18.                 'elseif' '(' expression ')'
  19. for_stmt ::= 'for' '(' ident ',' expression ',' expression ',' expression ')'
  20. while_stmt ::= 'while' '(' expression ',' expression ')'
  21. expression ::= func_call | number_def | string_def | struct_member_access
  22. func_call ::= ident '(' call_argument_list ')' |
  23.               ident '(' ')'
  24. call_argument_list ::= expression | call_argument_list ',' expression
  25. number_def ::= digit+ | digit+ '.' digit+
  26. string_def ::= '"' [^"] any* '"'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement