aboutsummaryrefslogtreecommitdiff
path: root/bnf
diff options
context:
space:
mode:
authorCori Barker <coribarker2@gmail.com>2026-03-04 15:26:45 +0000
committerCori Barker <coribarker2@gmail.com>2026-03-04 15:26:45 +0000
commit5b1a49ccc676d9a3564050e203a7a68bf0ece578 (patch)
treee09aa6deb14ef9e5f62d253cecbbdbf89f84c12e /bnf
parent8a95bb221d348966fe85a9735ae61722502e0d23 (diff)
removed bnf since not needed, and added some more nodes to the AST
Diffstat (limited to 'bnf')
-rw-r--r--bnf115
1 files changed, 0 insertions, 115 deletions
diff --git a/bnf b/bnf
deleted file mode 100644
index cc49d87..0000000
--- a/bnf
+++ /dev/null
@@ -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