From 1a61f9537e3ab85b75a742b3a3e92e1790b8dbc3 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Fri, 22 Dec 2023 23:04:15 +0200 Subject: [PATCH] Parse require delimiters after bools, numbers, symbols --- src/preserves/pegs.nim | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/preserves/pegs.nim b/src/preserves/pegs.nim index a413f4f..09a472e 100644 --- a/src/preserves/pegs.nim +++ b/src/preserves/pegs.nim @@ -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