diff options
Diffstat (limited to 'src/output.cpp')
-rw-r--r-- | src/output.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/output.cpp b/src/output.cpp index 7f6e5c8..9c30443 100644 --- a/src/output.cpp +++ b/src/output.cpp @@ -64,6 +64,48 @@ void output_t::initialize() { } } +std::string output_t::symbol_case(const symbol_t &sym) { + if (sym.get_type() == SYMBOL_TYPE_CHAR) { + switch (sym.get_value()[0]) { + case '\a': + return "'\\a'"; + + case '\b': + return "'\\b'"; + + case '\f': + return "'\\f'"; + + case '\n': + return "'\\n'"; + + case '\r': + return "'\\r'"; + + case '\t': + return "'\\t'"; + + case '\v': + return "'\\v'"; + + case '\\': + return "'\\\\'"; + + case '\'': + return "'\\''"; + + default: + return "'" + sym.get_value() + "'"; + } + } + else { + if (sym.get_value().empty()) + return "0"; + else + return token_prefix_str + sym.get_value(); + } +} + void output_t::emit_tokens() { if (tokens.empty()) return; |