about summary refs log tree commit diff stats
path: root/cpp/013literal_string.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-04-28 22:45:38 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-04-28 22:55:04 -0700
commitc51043abdf83243f81685858d8f76793faed042b (patch)
tree362afefaa547dc1f8dd490947056a558d5fe3b17 /cpp/013literal_string.cc
parente3fa6cc7af792a6c0d83d9004859d6e9452c5fdb (diff)
downloadmu-c51043abdf83243f81685858d8f76793faed042b.tar.gz
1217 - string literals weren't handling later comments
Diffstat (limited to 'cpp/013literal_string.cc')
-rw-r--r--cpp/013literal_string.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/cpp/013literal_string.cc b/cpp/013literal_string.cc
index b27ede36..203859e1 100644
--- a/cpp/013literal_string.cc
+++ b/cpp/013literal_string.cc
@@ -22,7 +22,12 @@ recipe main [
 Type_number["literal-string"] = 0;
 
 :(after "string next_word(istream& in)")
-if (in.peek() == '[') return slurp_quoted(in);
+  if (in.peek() == '[') {
+    string result = slurp_quoted(in);
+    skip_whitespace(in);
+    skip_comment(in);
+    return result;
+  }
 
 :(code)
 string slurp_quoted(istream& in) {
@@ -61,3 +66,12 @@ recipe main [
   1:address:array:character <- copy [abc [def]]
 ]
 +parse:   ingredient: {name: "abc [def]", value: 0, type: 0, properties: ["abc [def]": "literal-string"]}
+
+:(scenario string_literal_and_comment)
+recipe main [
+  1:address:array:character <- copy [abc]  # comment
+]
++parse: instruction: 1
++parse:   ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]}
++parse:   product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character"]}
+$parse: 3