fix rule naming in grammar spec

I forgot that ABNF rule names don't accept underscores...
This commit is contained in:
tocariimaa 2025-01-14 19:27:38 -03:00
parent 47dfde6b3b
commit 0f27e9965a

View file

@ -1,45 +1,45 @@
; Rutile's grammar formal definition in ABNF ; Rutile's grammar formal definition in ABNF
; NOTE: terminal strings are case sensitive here ; NOTE: terminal strings are case sensitive here
function_kind = "proc" / "iter" function-kind = "proc" / "iter"
proc_decl = function_kind "(" [proc_decl_args] ")" [ident] *stmt 'end' proc-decl = function-kind "(" [proc-decl-args] ")" [ident] *stmt 'end'
proc_decl_args = symbol_type_pair *("," symbol_type_pair) proc-decl-args = symbol-type-pair *("," symbol-type-pair)
symbol_type_pair = ident ":" ident symbol-type-pair = ident ":" ident
symbol_decl = ("var" / "let" / "const") ident_type_expr ; "Variable" declaration symbol-decl = ("var" / "let" / "const") ident-type-expr ; "Variable" declaration
ident_type_expr = ident [":" ident] ["=" expr] ident-type-expr = ident [":" ident] ["=" expr]
function_call = ident_qualified "(" [funcargs] ")" function-call = ident-qualified "(" [funcargs] ")"
funcargs = expr_list funcargs = expr-list
array_literal = "[" expr_list "]" array-literal = "[" expr-list "]"
expr_list = expr *("," expr) [","] ; Allows a trailling comma expr-list = expr *("," expr) [","] ; Allows a trailling comma
expr = number expr = number
expr =/ array_literal expr =/ array-literal
expr =/ function_call expr =/ function-call
pragma = "#" "[" "]" ; TODO pragma = "#" "[" "]" ; TODO
decorated_decl = pragma (proc_decl / symbol_decl) decorated-decl = pragma (proc-decl / symbol-decl)
; Statements ; Statements
while_stmt = "while" expr *stmt "end" while-stmt = "while" expr *stmt "end"
if_expr = "if" expr *stmt "end" if-expr = "if" expr *stmt "end"
break_expr = "break" *expr break-expr = "break" *expr
return_stmt = "return" *expr return-stmt = "return" *expr
yield_stmt = "yield" *expr yield-stmt = "yield" *expr
loop_control = "next" / break_expr loop-control = "next" / break-expr
stmt = proc_decl stmt = proc-decl
stmt =/ expr stmt =/ expr
stmt =/ loop_control stmt =/ loop-control
stmt =/ if_expr stmt =/ if-expr
stmt =/ while_stmt stmt =/ while-stmt
stmt =/ return_stmt stmt =/ return-stmt
stmt =/ yield_stmt stmt =/ yield-stmt
ident = (ALPHA / "_") *(ALPHA / DIGIT / "_" / "?" / "!") ident = (ALPHA / "_") *(ALPHA / DIGIT / "_" / "?" / "!")
; Identifier accounting for namespacing: std:io.print, aaa:bbb:ccc ; Identifier accounting for namespacing: std:io.print, aaa:bbb:ccc
ident_qualified = (ALPHA / "_") *(ALPHA / DIGIT / "_" / "?" / "!" / ":" / ".") ident-qualified = (ALPHA / "_") *(ALPHA / DIGIT / "_" / "?" / "!" / ":" / ".")
number = 1*DIGIT ; Decimal number = 1*DIGIT ; Decimal
/ "0b" 1*("0" / "1") ; Binary / "0b" 1*("0" / "1") ; Binary
@ -49,4 +49,4 @@ number = 1*DIGIT ; Decimal
byte = %x00-FF byte = %x00-FF
escape = "\" ("\" / DQUOTE / "0" / "a" / "b" / "n" / "r" / "t" / ("x" 1*2HEXDIGIT)) escape = "\" ("\" / DQUOTE / "0" / "a" / "b" / "n" / "r" / "t" / ("x" 1*2HEXDIGIT))
character = byte / escape character = byte / escape
string_literal = DQUOTE *character DQUOTE string-literal = DQUOTE *character DQUOTE