diff options
Diffstat (limited to 'subx/022transform_immediate.cc')
-rw-r--r-- | subx/022transform_immediate.cc | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/subx/022transform_immediate.cc b/subx/022transform_immediate.cc index eefe9a40..48f5dfa9 100644 --- a/subx/022transform_immediate.cc +++ b/subx/022transform_immediate.cc @@ -23,17 +23,29 @@ Transform.push_back(transform_immediate); :(code) void transform_immediate(const string& input, string& output) { istringstream in(input); - in >> std::noskipws; ostringstream out; while (has_data(in)) { - string word = next_word(in); - if (word.find("/imm") == string::npos) - out << word << ' '; - else { - string output = transform_immediate(word); - trace("translate") << "converting '" << word << "' to '" << output << "'" << end(); - out << output << ' '; + string line_data; + getline(in, line_data); + istringstream line(line_data); + while (has_data(line)) { + string word; + line >> word; + if (word.empty()) continue; + if (word[0] == '#') { + // skip comment + break; + } + if (word.find("/imm") == string::npos) { + out << word << ' '; + } + else { + string output = transform_immediate(word); + trace("translate") << "converting '" << word << "' to '" << output << "'" << end(); + out << output << ' '; + } } + out << '\n'; } out.str().swap(output); } |