From 602e30a421da6e29bf8e21f0f2c9b3c786718dc0 Mon Sep 17 00:00:00 2001 From: Calvin Rose Date: Sun, 24 Feb 2019 14:46:16 -0500 Subject: [PATCH] Add "\v" string esca[e sequence. --- src/core/parse.c | 3 +++ src/core/pp.c | 9 +++++++++ tools/highlight.janet | 6 +++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/core/parse.c b/src/core/parse.c index 841440b3..24ec333a 100644 --- a/src/core/parse.c +++ b/src/core/parse.c @@ -32,6 +32,7 @@ static int is_whitespace(uint8_t c) { || c == '\n' || c == '\r' || c == '\0' + || c == '\v' || c == '\f'; } @@ -207,6 +208,8 @@ static int checkescape(uint8_t c) { return '\0'; case 'f': return '\f'; + case 'v': + return '\v'; case 'e': return 27; case '"': diff --git a/src/core/pp.c b/src/core/pp.c index 25650fef..8492f207 100644 --- a/src/core/pp.c +++ b/src/core/pp.c @@ -136,6 +136,15 @@ static void janet_escape_string_impl(JanetBuffer *buffer, const uint8_t *str, in case '\0': janet_buffer_push_bytes(buffer, (const uint8_t *)"\\0", 2); break; + case '\f': + janet_buffer_push_bytes(buffer, (const uint8_t *)"\\f", 2); + break; + case '\v': + janet_buffer_push_bytes(buffer, (const uint8_t *)"\\v", 2); + break; + case 27: + janet_buffer_push_bytes(buffer, (const uint8_t *)"\\e", 2); + break; case '\\': janet_buffer_push_bytes(buffer, (const uint8_t *)"\\\\", 2); break; diff --git a/tools/highlight.janet b/tools/highlight.janet index 75b6a212..f353dab8 100644 --- a/tools/highlight.janet +++ b/tools/highlight.janet @@ -37,13 +37,13 @@ (def should-color (or (specials sym) (core-env sym))) (paint (if should-color :coresym :symbol) text)) - ~{:ws (set " \t\r\f\n\0") + ~{:ws (set " \t\r\f\n\v\0") :readermac (set "';~,") :symchars (+ (range "09" "AZ" "az" "\x80\xFF") (set "!$%&*+-./:@^_|")) :token (some :symchars) :hex (range "09" "af" "AF") - :escape (* "\\" (+ (set "ntrzf0\"\\e") - (* "x" :hex :hex) + :escape (* "\\" (+ (set "ntrvzf0\"\\e") + (* "x" :hex :hex) (error (constant "bad hex escape")))) :comment ,(<-c :comment ~(* "#" (any (if-not (+ "\n" -1) 1))))