From b96af395b9af2ff9df94b3e82213171f30827c8d Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Tue, 5 May 2015 21:17:24 -0700 Subject: 1276 - make C++ version the default I've tried to update the Readme, but there are at least a couple of issues. --- cpp/013literal_string.cc | 78 ------------------------------------------------ 1 file changed, 78 deletions(-) delete mode 100644 cpp/013literal_string.cc (limited to 'cpp/013literal_string.cc') diff --git a/cpp/013literal_string.cc b/cpp/013literal_string.cc deleted file mode 100644 index 57ac8c3a..00000000 --- a/cpp/013literal_string.cc +++ /dev/null @@ -1,78 +0,0 @@ -//: For convenience, some instructions will take literal arrays of characters (strings). -//: -//: Instead of quotes, we'll use [] to delimit strings. That'll reduce the -//: need for escaping since we can support nested brackets. And we can also -//: imagine that 'recipe' might one day itself be defined in mu, doing its own -//: parsing. - -:(scenarios load) -:(scenario string_literal) -recipe main [ - 1:address:array:character <- copy [abc def] # copy can't really take a string -] -+parse: ingredient: {name: "abc def", value: 0, type: 0, properties: ["abc def": "literal-string"]} - -:(scenario string_literal_with_colons) -recipe main [ - 1:address:array:character <- copy [abc:def/ghi] -] -+parse: ingredient: {name: "abc:def/ghi", value: 0, type: 0, properties: ["abc:def/ghi": "literal-string"]} - -:(before "End Mu Types Initialization") -Type_number["literal-string"] = 0; - -:(after "string next_word(istream& in)") - if (in.peek() == '[') { - string result = slurp_quoted(in); - skip_whitespace(in); - skip_comment(in); - return result; - } - -:(code) -string slurp_quoted(istream& in) { - assert(!in.eof()); - assert(in.peek() == '['); - ostringstream out; - int size = 0; - while (!in.eof()) { - char c = in.get(); -//? cout << c << '\n'; //? 1 - out << c; -//? cout << out.str() << "$\n"; //? 1 - if (c == '[') ++size; - if (c == ']') --size; - if (size == 0) break; - } - return out.str(); -} - -:(after "reagent::reagent(string s)") -//? cout << s[0] << '\n'; //? 1 - if (s[0] == '[') { - assert(s[s.size()-1] == ']'); - // delete [] delimiters - s.erase(0, 1); - s.erase(s.size()-1, s.size()); - name = s; - types.push_back(0); - properties.push_back(pair >(name, vector())); - properties.back().second.push_back("literal-string"); - return; - } - -:(scenario string_literal_nested) -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: copy -+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"]} -# no other ingredients -$parse: 3 -- cgit 1.4.1-2-gfad0