diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-03-16 22:47:28 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-03-16 22:48:41 -0700 |
commit | 100157d1a83ccb02d82af21c5767ecda3d7cb1c2 (patch) | |
tree | d540d4a6351473119bf49c4ad03de9856caacc61 /cpp/011load | |
parent | 5df82e48a2548e7d30b3e86dab0d866851a1c47d (diff) | |
download | mu-100157d1a83ccb02d82af21c5767ecda3d7cb1c2.tar.gz |
939 - c++: fix an old parsing hack
Diffstat (limited to 'cpp/011load')
-rw-r--r-- | cpp/011load | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/cpp/011load b/cpp/011load index 9806bfd0..d01c72d2 100644 --- a/cpp/011load +++ b/cpp/011load @@ -109,6 +109,8 @@ string next_word(istream& in) { ostringstream out; skip_whitespace(in); slurp_word(in, out); + skip_whitespace(in); + skip_comment(in); return out.str(); } @@ -144,12 +146,68 @@ void skip_comments_and_newlines(istream& in) { } } +void skip_comment(istream& in) { + if (in.peek() == '#') { + in.get(); + while (in.peek() != '\n') in.get(); + } +} + void skip_comma(istream& in) { skip_whitespace(in); if (in.peek() == ',') in.get(); skip_whitespace(in); } +:(scenario parse_comment_outside_recipe) +# comment +recipe main [ + 1:integer <- copy 23:literal +] ++parse: instruction: 1 ++parse: ingredient: {name: "23", type: 0} ++parse: product: {name: "1", type: 1} + +:(scenario parse_comment_amongst_instruction) +recipe main [ + # comment + 1:integer <- copy 23:literal +] ++parse: instruction: 1 ++parse: ingredient: {name: "23", type: 0} ++parse: product: {name: "1", type: 1} + +:(scenario parse_comment_amongst_instruction2) +recipe main [ + # comment + 1:integer <- copy 23:literal + # comment +] ++parse: instruction: 1 ++parse: ingredient: {name: "23", type: 0} ++parse: product: {name: "1", type: 1} + +:(scenario parse_comment_amongst_instruction3) +recipe main [ + 1:integer <- copy 23:literal + # comment + 2:integer <- copy 23:literal +] ++parse: instruction: 1 ++parse: ingredient: {name: "23", type: 0} ++parse: product: {name: "1", type: 1} ++parse: instruction: 1 ++parse: ingredient: {name: "23", type: 0} ++parse: product: {name: "2", type: 1} + +:(scenario parse_comment_after_instruction) +recipe main [ + 1:integer <- copy 23:literal # comment +] ++parse: instruction: 1 ++parse: ingredient: {name: "23", type: 0} ++parse: product: {name: "1", type: 1} + :(scenario parse_label) recipe main [ +foo |