]> git.huck.website - metaforge.git/commitdiff
updated grammar to include '-' as a sigil
authorHuck Boles <huck@huck.website>
Tue, 16 May 2023 00:13:02 +0000 (19:13 -0500)
committerHuck Boles <huck@huck.website>
Tue, 16 May 2023 00:13:02 +0000 (19:13 -0500)
src/meta.pest

index 3a2a68660eaf50362e1df69f859e9e42c809cfca..b108f261e08bd108c09ec86da124d2b9fcaa7b5e 100644 (file)
@@ -1,10 +1,10 @@
 WHITESPACE = _{ " " | "\t" | NEWLINE }
 COMMENT    = _{ "-{" ~ (!"}" ~ ANY)* ~ "}" }
 
-sigil = _{ ("$" | "@" | "&" | "#") ~ "{" }
+sigil = _{ ("$" | "@" | "&" | "#" | "-") ~ "{" }
 
 raw_char = _{ !(sigil) ~ ANY }
-char_seq =  { raw_char+ }
+char_seq =  ${ raw_char+ }
 
 string = { escaped_string | raw_string }
 escaped_string = @{ "\"" ~ char+ ~ "\"" }
@@ -12,7 +12,6 @@ raw_string = @{ "'" ~ (!("'") ~ ANY)+ ~ "'" }
 char   =  _{
     !("\"" | "\\") ~ ANY
   | "\\" ~ ("\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t")
-  | "\\" ~ ("u" ~ ASCII_HEX_DIGIT{4})
 }
 
 array = _{
@@ -24,14 +23,17 @@ key_chars = @{ (ASCII_ALPHANUMERIC | "_" | ".")* }
 key       = @{ key_chars }
 
 value  = ${ string | array | "BLANK" | "DEFAULT" }
-assign =  { key ~ "=" ~ value }
+assign =  { "*"? ~ key ~ "=" ~ value }
 
 def_block  = _{ sigil ~ assign* ~ "}" }
 var_def    =  { &("$") ~ def_block }
 arr_def    =  { &("@") ~ def_block }
 pat_def    =  { &("&") ~ def_block }
 definition = _{ var_def | arr_def | pat_def }
-header    =  { &("#") ~ def_block }
+
+header_assign =  { "!"? ~ key ~ "=" ~ value }
+header_block  = _{ sigil ~ header_assign* ~ "}" }
+header    =  { &("#") ~ header_block }
 
 substitution = _{ sigil ~ key ~ "}" }
 var_sub      =  { &("$") ~ substitution }