diff options
Diffstat (limited to 'src/reduce.cc')
-rw-r--r-- | src/reduce.cc | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/reduce.cc b/src/reduce.cc index 953dc652..4b6fa230 100644 --- a/src/reduce.cc +++ b/src/reduce.cc @@ -660,6 +660,31 @@ void Compiler::writeCommit() " read_reduce_node *child;\n" "};\n" "\n" + "void unescape( colm_data *tokdata )\n" + "{\n" + " unsigned char *src = (unsigned char*)tokdata->data, *dest = (unsigned char*)tokdata->data;\n" + " while ( *src != 0 ) {\n" + " if ( *src == '\\\\' ) {\n" + " unsigned int i;\n" + " char buf[3];\n" + "\n" + " src += 1;\n" + " buf[0] = *src++;\n" + " buf[1] = *src++;\n" + " buf[2] = 0;\n" + "\n" + " sscanf( buf, \"%x\", &i );\n" + " *dest++ = (unsigned char)i;\n" + "\n" + " tokdata->length -= 2;\n" + " }\n" + " else {\n" + " *dest++ = *src++;\n" + " }\n" + " }\n" + " *dest = 0;\n" + "}\n" + "\n" "void " << reduction->name << "::read_reduce_forward( program_t *prg )\n" "{\n" " std::ifstream in( \"postfix.txt\" );\n" @@ -681,6 +706,7 @@ void Compiler::writeCommit() " node->loc.byte = byte;\n" " node->data.data = strdup( text.c_str() );\n" " node->data.length = text.size();\n" + " unescape( &node->data );\n" "\n" " node->next = stack;\n" " node->child = 0;\n" @@ -688,7 +714,6 @@ void Compiler::writeCommit() " }\n" " else if ( type == \"r\" ) {\n" " in >> tok >> _id >> prod_num >> children;\n" - " std::cout << \"reducing: \" << tok << std::endl;\n" " read_reduce_node *node = new read_reduce_node;\n" " memset( &node->loc, 0, sizeof(colm_location) );\n" " memset( &node->data, 0, sizeof(colm_data) );\n" |