Parse require delimiters after bools, numbers, symbols

This commit is contained in:
Emery Hemingway 2023-12-22 23:04:15 +02:00
parent 522be62186
commit 1a61f9537e
1 changed files with 7 additions and 6 deletions

View File

@ -9,8 +9,9 @@ when defined(nimHasUsed): {.used.}
grammar "Preserves":
ws <- *(' ' | '\t' | '\r' | '\n' )
ws <- *{ ' ', '\t', '\r', '\n' }
commas <- *(ws * ',') * ws
delimiter <- { ' ', '\t', '\r', '\n', '<', '>', '[', ']', '{', '}', '#', ':', '"', '|', '@', ';', ',' } | !1
Document <- Value * ws * !1
@ -31,7 +32,7 @@ grammar "Preserves":
Set <- "#{" * *(commas * Value) * commas * '}'
Boolean <- "#f" | "#t"
Boolean <- '#' * {'f', 't'} * &delimiter
nat <- '0' | (Digit-'0') * *Digit
int <- ?('-'|'+') * nat
@ -39,10 +40,10 @@ grammar "Preserves":
exp <- 'e' * ?('-'|'+') * +Digit
flt <- int * ((frac * exp) | frac | exp)
Float <- >flt * {'f','F'}
Double <- flt
Float <- >flt * {'f','F'} * &delimiter
Double <- flt * &delimiter
SignedInteger <- int
SignedInteger <- int * &delimiter
char <- unescaped | '|' | (escape * (escaped | '"' | ('u' * Xdigit[4])))
String <- '"' * >(*char) * '"'
@ -61,7 +62,7 @@ grammar "Preserves":
sympunct <- {'~', '!', '$', '%', '^', '&', '*', '?', '_', '=', '+', '-', '/', '.'}
symuchar <- utf8.any - { 0..127 }
SymbolOrNumber <- >(+(Alpha | Digit | sympunct | symuchar))
Symbol <- QuotedSymbol | SymbolOrNumber
Symbol <- QuotedSymbol | (SymbolOrNumber * &delimiter)
Embedded <- "#!" * Value