summaryrefslogtreecommitdiffstats
path: root/src/output.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/output.cpp')
-rw-r--r--src/output.cpp42
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;