diff options
-rw-r--r-- | main.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -264,6 +264,8 @@ static inline enum zx_basic_token_type zx_basic_token_type_get(uint8_t b) { if ((codepoint >= 'A' && codepoint <= 'Z') || (codepoint >= '0' && codepoint <= '9')) { return ZX_BASIC_TOKEN_ALNUM; + } else if (codepoint == '"') { + return ZX_BASIC_TOKEN_QUOTE; } else { return ZX_BASIC_TOKEN_SYMBOL; } @@ -319,7 +321,7 @@ static ssize_t zx_dump_basic(int fd) { break; } - if (printf("%d", (int)be16toh(line.num)) < 0) { + if (printf("%d ", (int)be16toh(line.num)) < 0) { goto error_io; } @@ -339,10 +341,16 @@ static ssize_t zx_dump_basic(int fd) { if (type_last == ZX_BASIC_TOKEN_WORD) { space = 1; } + } else if (type == ZX_BASIC_TOKEN_QUOTE) { + if (type_last == ZX_BASIC_TOKEN_WORD) { + space = 1; + } } else if (type == ZX_BASIC_TOKEN_SYMBOL) { space = 0; } else if (type == ZX_BASIC_TOKEN_WORD) { - space = 1; + if (type_last != ZX_BASIC_TOKEN_SYMBOL) { + space = 1; + } } else if (ZX_CHAR_TOKEN_INTEGRAL(c) || ZX_CHAR_TOKEN_FLOAT(c)) { i += 5; } |