From 99a1cd4d15d5b8755f26dc65157f13d8743dcaaa Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Sun, 6 Nov 2022 11:04:16 -0600 Subject: [PATCH] Symbol escaping --- preserves.nimble | 2 +- src/preserves/pegs.nim | 2 +- src/preserves/private/parse.nim | 2 +- src/preserves/schemaparse.nim | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/preserves.nimble b/preserves.nimble index bbd7362..8ddd12a 100644 --- a/preserves.nimble +++ b/preserves.nimble @@ -1,6 +1,6 @@ # Package -version = "20221102" +version = "20221106" author = "Emery Hemingway" description = "data model and serialization format" license = "Unlicense" diff --git a/src/preserves/pegs.nim b/src/preserves/pegs.nim index d2072d6..8db4a66 100644 --- a/src/preserves/pegs.nim +++ b/src/preserves/pegs.nim @@ -52,7 +52,7 @@ grammar "Preserves": binunescaped <- {' '..'!', '#'..'[', ']'..'~'} base64char <- {'A'..'Z', 'a'..'z', '0'..'9', '+', '/', '-', '_', '='} - Symbol <- (symstart * *symcont) | ('|' * *symchar * '|') + Symbol <- >(symstart * *symcont) | ('|' * >(*symchar) * '|') symstart <- Alpha | sympunct | symustart symcont <- Alpha | sympunct | symustart | symucont | Digit | '-' diff --git a/src/preserves/private/parse.nim b/src/preserves/private/parse.nim index c65740c..e1bd502 100644 --- a/src/preserves/private/parse.nim +++ b/src/preserves/private/parse.nim @@ -159,7 +159,7 @@ proc parsePreserves*(text: string): Preserve[void] {.gcsafe.} = pushStack Value(kind: pkByteString, bytes: cast[seq[byte]](base64.decode(joinWhitespace($1)))) Preserves.Symbol <- Preserves.Symbol: - pushStack Value(kind: pkSymbol, symbol: Symbol $0) + pushStack Value(kind: pkSymbol, symbol: Symbol $1) Preserves.Embedded <- Preserves.Embedded: var v = stack.pop.value diff --git a/src/preserves/schemaparse.nim b/src/preserves/schemaparse.nim index c04f702..3ab8062 100644 --- a/src/preserves/schemaparse.nim +++ b/src/preserves/schemaparse.nim @@ -272,7 +272,8 @@ const parser = peg("Schema", p: ParseState): Preserves.String | Preserves.ByteString - Value <- Preserves.Value + Value <- Preserves.Value: + discard editorCruft <- '@' * @'\n'