pass_parser

<module> = <declaration>* EOF <declaration> = <alias_decl> / <func_decl> / <var_decl> / <struct_decl> / <enum_decl>

<alias_decl> = "alias" <id> "=" <expr> ";" <func_decl> = <type> <identifier> ("[" <template_args> "]")? "(" <param_list> ")" (<block_statement> / ';') <param_list> = <parameter> "," <parameter_list> / <parameter>? <parameter> = <type> <identifier>?

<var_decl> = <type> <identifier> ("=" <expression>)? ";" <struct_decl> = "struct" <identifier> ("[" <template_args> "]")? "{" <declaration>* "}" <enum_decl> = <enum_decl_single> / <enum_decl_multi> <enum_decl_multi> = "enum" [<identifier>] [":" <type>] "{" (<identifier> ["=" <expr>] ",") * "}" <enum_decl_single> = "enum" <identifier> [ "=" <expr> ] ";"

<statement> = "if" <paren_expression> <statement> ("else" <statement>)? "while" <paren_expression> <statement> / "do" <statement> "while" <paren_expression> ";" / "return" <expression>? ";" / "continue" ";" / "break" ";" / <block_statement> / <expression> ("=" <expression>)? ";" / <declaration_statement>

<declaration_statement> = <declaration> <block_statement> = "{" <statement>* "}"

<expression> = <test> <test> = <sum> | <sum> ("=="|"!="|"<"|">"|"<="|">=") <sum> <sum> = <term> / <sum> ("+"|"-") <term> <term> = <identifier> "(" <expression_list> ")" / <identifier> "[" <expression> "]" / <identifier> / <int_literal> / <string_literal> / <paren_expression> <paren_expression> = "(" <expression> ")"

<expression_list> = (<expression> ",")* <identifier> = [_a-zA-Z] [_a-zA-Z0-9]*

<type> = (<type_basic> / <type_struct>) <type_specializer>* <type_specializer> = "*" / "[" <expression> "]" / "[" "]" / "function" "(" <param_list> ")" <type_basic> = ("i8" | "i16" | "i32" | "i64" | "u8" | "u16" | "u32" | "u64" | "void" | "f32" | "f64")

<type_struct> = <identifier>

<int_literal> = <literal_dec_int> / <literal_hex_int> / <literal_bin_int> <literal_dec_int> = 0|[1-9][0-9_]* <literal_hex_int> = ("0x"|"0X")[0-9A-Fa-f_]+ <literal_bin_int> = ("0b"|"0B")[01_]+

void
pass_parser
(
ref CompilationContext ctx
,)

Meta