diff options
| author | Cori Barker <coribarker2@gmail.com> | 2026-03-04 15:26:45 +0000 |
|---|---|---|
| committer | Cori Barker <coribarker2@gmail.com> | 2026-03-04 15:26:45 +0000 |
| commit | 5b1a49ccc676d9a3564050e203a7a68bf0ece578 (patch) | |
| tree | e09aa6deb14ef9e5f62d253cecbbdbf89f84c12e /bnf | |
| parent | 8a95bb221d348966fe85a9735ae61722502e0d23 (diff) | |
removed bnf since not needed, and added some more nodes to the AST
Diffstat (limited to 'bnf')
| -rw-r--r-- | bnf | 115 |
1 files changed, 0 insertions, 115 deletions
@@ -1,115 +0,0 @@ -<program> ::= { <function_declaration> } - -<function_declaration> ::= - "function" <identifier> "(" [ <parameter_list> ] ")" - "->" <type> - <block> - -<parameter_list> ::= <parameter> { "," <parameter> } - -<parameter> ::= <type> <identifier> - -<type> ::= "int" - | "bool" - - -<block> ::= "{" - <statement_list> - "}" - -<statement_list> ::= { <statement> } - -<statement> ::= <variable_declaration> - | <assignment_statement> - | <if_statement> - | <while_statement> - | <for_statement> - | <return_statement> - | <expression_statement> - - -<variable_declaration> ::= - <type> <identifier> [ "=" <expression> ] ";" - -<assignment_statement> ::= - <identifier> "=" <expression> ";" - -<return_statement> ::= - "return" [ <expression> ] ";" - -<expression_statement> ::= - <expression> ";" - - -<if_statement> ::= - "if" "(" <expression> ")" - <block> - [ "else" <block> ] - -<while_statement> ::= - "while" "(" <expression> ")" - <block> - -<for_statement> ::= - "for" "(" - [ <for_init> ] - ";" - [ <expression> ] - ";" - [ <expression> ] - ")" - <block> - -<for_init> ::= <type> <identifier> [ "=" <expression> ] - | <expression> - - -<expression> ::= <logical_or> - -<logical_or> ::= <logical_and> - { "||" <logical_and> } - -<logical_and> ::= <equality> - { "&&" <equality> } - -<equality> ::= <comparison> - { ( "==" | "!=" ) <comparison> } - -<comparison> ::= <term> - { ( "<" | ">" | "<=" | ">=" ) <term> } - -<term> ::= <factor> - { ( "+" | "-" ) <factor> } - -<factor> ::= <unary> - { ( "*" | "/" | "%" ) <unary> } - -<unary> ::= ( "!" | "-" ) <unary> - | <primary> - -<primary> ::= <number> - | <boolean> - | <identifier> - | <function_call> - | "(" <expression> ")" - - -<function_call> ::= - <identifier> "(" [ <argument_list> ] ")" - -<argument_list> ::= <expression> - { "," <expression> } - - -<identifier> ::= <letter> { <letter> | <digit> } - -<number> ::= <digit> { <digit> } - -<boolean> ::= "true" - | "false" - -<letter> ::= "a" | ... | "z" - | "A" | ... | "Z" - | "_" - -<digit> ::= "0" | ... | "9"
\ No newline at end of file |
