about summary refs log tree commit diff stats
path: root/034call.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-08-02 15:26:58 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-08-02 16:18:16 -0700
commit7f402c85eb34a739055dc3e5bb4be337169ec68c (patch)
treecbb0365029213b87f8da70b00268bf8981b9a892 /034call.cc
parentd082b17675f40037b0e6c26384d99362acd0749e (diff)
downloadmu-7f402c85eb34a739055dc3e5bb4be337169ec68c.tar.gz
1921 - show trace by clicking on code
Region to click on to edit is now reduced to just the menu bar for the
sandbox (excluding the 'x' for deleting the sandbox). The symmetry there
might be useful, but we'll see if the relative click area is
in line with how commonly the actions are performed.
Diffstat (limited to '034call.cc')
0 files changed, 0 insertions, 0 deletions
artik/mu/commit/cpp/029string?h=main&id=5e21a9f608f413eb1df4736f4c143f18ba7ac1ec'>5e21a9f6 ^
66b97b4d ^
088665ef ^
66b97b4d ^
7a9b05fa ^





66b97b4d ^








7a9b05fa ^
66b97b4d ^
7a9b05fa ^
66b97b4d ^

66b97b4d ^


7a9b05fa ^


66b97b4d ^


5e21a9f6 ^
7a9b05fa ^













3d6c13dc ^




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
                                                                                        

                                                                          


                                                                              
 
                        

                            
                                            
 
                                                                                                     
 





                                                                                                             








                                              
                           
                    
               

                      


                                         


                         


                   
 













                                                                                




                                                                                                         
//: 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 add_recipes)
:(scenario "string_literal")
recipe main [
  1:address:array:character <- new [abc def]
]
+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 <- new [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() == '[') return slurp_quoted(in);

:(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<string, vector<string> >(name, vector<string>()));
    properties.back().second.push_back("literal-string");
    return;
  }

:(scenario "string_literal_nested")
recipe main [
  1:address:array:character <- new [abc [def]]
]
+parse:   ingredient: {name: "abc [def]", value: 0, type: 0, properties: ["abc [def]": "literal-string"]}