summary refs log tree commit diff stats
path: root/nimdoc/testproject
Commit message (Collapse)AuthorAgeFilesLines
* docgen: sort symbols (fix #17910) (#18560)Andrey Makarov2021-07-252-335/+335
| | | | | | | | | | | | | | * docgen: sort symbols (fix #17910) * add workaround + change naming * switch to a dedicated sort comparator * fix numbers with unequal string lengths * dedicated `sortName` instead of `plainNameEsc`: * more compact names for non-overloaded symbols * more predictable Ascii sort (e.g. `<` instead of `&lt;`)
* nim doc now correctly renders deprecated pragmas for routines and types (#18515)Timothee Cour2021-07-194-3/+23
|
* docgen: move to shared RST state (fix #16990) (#18256)Andrey Makarov2021-06-201-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * docgen: move to shared RST state (fix #16990) * Update lib/packages/docutils/rst.nim Co-authored-by: Andreas Rumpf <rumpf_a@web.de> * Update lib/packages/docutils/rst.nim Co-authored-by: Andreas Rumpf <rumpf_a@web.de> * Update lib/packages/docutils/rst.nim Co-authored-by: Andreas Rumpf <rumpf_a@web.de> * Update compiler/docgen.nim Co-authored-by: Timothee Cour <timothee.cour2@gmail.com> * Update compiler/docgen.nim Co-authored-by: Timothee Cour <timothee.cour2@gmail.com> * Update compiler/docgen.nim Co-authored-by: Timothee Cour <timothee.cour2@gmail.com> * Update lib/packages/docutils/rst.nim Co-authored-by: Timothee Cour <timothee.cour2@gmail.com> * rename `cmdDoc2` to `cmdDoc` * fix (P)RstSharedState convention * new style of initialization * misc suggestions * 1 more rename * fix a regression Co-authored-by: Andreas Rumpf <rumpf_a@web.de> Co-authored-by: Timothee Cour <timothee.cour2@gmail.com>
* Fix JS error on index page and detect dark mode (#18191)drtheuns2021-06-073-12/+27
| | | | | | | | | | | | | | | | * Fix JS error on index page and detect dark mode The theindex.html page doesn't have a dark mode switch so the main function will error because `toggleSwitch` is not defined. Checks have been added to prevent this from happening. Also add automatic detection of system settings for dark-mode. This could also be done with pure css, but then the dark mode variable declarations would have to be duplicated to work with the switch so I went with this approach. * Fix nimdoc tests * Fix rst2html tests
* fix #16993, #18054, #17835 runnableExamples now works with templates and ↵Timothee Cour2021-06-023-10/+15
| | | | nested templates (#18082)
* fix warnings/hints in nimdoc/tester.nim (#18083)Timothee Cour2021-05-302-8/+9
| | | | | | | * fix warnings/hints in nimdoc/tester.nim * improve err msg for nimdoc/tester.nim and change flag from fixup to nimTestsNimdocFixup * address comment: put back quit instead of doAssert
* `doc2tex`: generate docs to Latex (#17997)Andrey Makarov2021-05-142-90/+90
| | | | | * `doc2tex`: generate docs to Latex * address some comments
* follow-up #17837: add `Console` for interactive sessions (#17930)Andrey Makarov2021-05-061-0/+8
| | | | | * follow-up #17837: add `Console` for interactive sessions * fix Latex
* typo: nonexistant => nonexistent (#17918)Timothee Cour2021-05-024-11/+11
| | | | | * typo: nonexistant => nonexistent * fix test (ordering differs because of https://github.com/nim-lang/Nim/issues/17910)
* improve nimsuggest/tester, minor improvements to koch.nim (#17879)Timothee Cour2021-04-291-1/+1
| | | | | * improve nimsuggest/tester * koch improvements
* add RST highlighting for command line / shells (also fixes #16858) (#17789)Andrey Makarov2021-04-211-5/+26
|
* restyle RST option lists (#17637)Andrey Makarov2021-04-101-0/+27
| | | | | | | | | | | | | * WIP: restyle RST option lists * apply similar style to Latex * fix tests * minor visual tweaks * update tests * remove leftover comments
* fix #17615(runnableExamples silently ignored if placed after some code) (#17619)flywind2021-04-022-4/+4
| | | Co-authored-by: Timothee Cour <timothee.cour2@gmail.com>
* enable syntax highlighting for inline code (#17585)Andrey Makarov2021-04-021-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | * enable syntax highlighting for inline code * finish '.. default-role' and preliminary '.. role' implementation * more compact check in dirRole * set :literal: as default role for *.rst * Update lib/packages/docutils/rst.nim Co-authored-by: Timothee Cour <timothee.cour2@gmail.com> * use whichRole for setting currRoleKind * Update lib/packages/docutils/rst.nim Co-authored-by: Timothee Cour <timothee.cour2@gmail.com> * rename rnGeneralRole -> rnUnknownRole Co-authored-by: Timothee Cour <timothee.cour2@gmail.com>
* docgen: render pragmas by default except for a select list (and fix #9074) ↵Timothee Cour2021-04-012-42/+42
| | | | (#17054)
* fix https://github.com/nim-lang/RFCs/issues/352: show top-level import for ↵Timothee Cour2021-03-291-4/+8
| | | | | | | | | top-level runnableExamples in generated docs (#17542) * fix https://github.com/nim-lang/RFCs/issues/352: show top-level import for top-level runnableExamples in generated docs * use canonical imoprt * fix test
* fix #16901: sidebar groups now works with all routines, not just proc,func ↵Timothee Cour2021-03-192-33/+90
| | | | | | | (#17416) * fix #16901: sidebar groups now works with all routines, not just proc,func * fix tests
* RST heading improvements (fix #17091) (#17195)Andrey Makarov2021-03-021-0/+1
|
* RST: implement footnotes and citations (#16960)Andrey Makarov2021-02-151-0/+13
| | | | | | | | | * RST: implement footnotes and citations * manual fixup of nimdoc.out.css * remove unused code * shorter printing code * Update lib/packages/docutils/rst.nim Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* fix #16885: nimdoc css warning (#16893)zetashift2021-02-011-0/+2
| | | | | | | | | | | | | | | | | | | * fix #16885 * Fixup nimdoc for the CSS filter change * Use the same Nim devel versions * Revert "Use the same Nim devel versions" This reverts commit 8559308f9be54a674f3ac3893efe16e03ecf4d38. * Revert "Fixup nimdoc for the CSS filter change" This reverts commit 99ec00a4bd7c448763b2073a7c6f1332bbab924b. * Fixup nimdoc.out.css Co-authored-by: zetashift <rishi2@laptop.localdomain>
* fix #9102 docgen: sidebar now shows proc signatures instead of encoding (#16857)Timothee Cour2021-01-293-33/+971
|
* conservative approach to fix #15184 (#16723)Andrey Makarov2021-01-154-0/+23
|
* put both funcs and procs under the same section in the documentation (#16301)Miran2020-12-091-23/+12
| | | | | * both funcs and procs are under the same section in the documentation * update the test
* nimdoc: Initialize theme switch and pragma dots on DOMContentLoaded (#16247)Sebastian Reinhard2020-12-063-3/+9
| | | | | | | | | The default HTML template for nimdoc currently initializes the dark mode switch and pragma dots when the onload event is fired. But since the onload event does not fire until all external resources (images, stylesheets, fonts, etc.) have been loaded, the light theme is shown for a brief moment before the document is fully loaded, and it switches to the dark theme. This is quite jarring, especially on slower internet connections. So let's instead initialize these things on the DOMContentLoaded event, which is fired right after the document has been parsed and the initial DOM structure is ready. This means that we now display the dark mode immediately, without having to wait for external resources to load first. For reference, see: - https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event - https://developer.mozilla.org/en-US/docs/Web/API/Window/DOMContentLoaded_event I have updated the snapshot tests in `nimdoc/`, and done some manual testing of both the theme switch and the pragma dots, to confirm that this does not break anything. Please let me know if I've missed anything.
* fix #16164, render doc comments (#16230)Miran2020-12-024-1/+18
| | | | | * fix #16164, render doc comments * add a test
* Correct all eggs (#15906)Miran2020-11-101-1/+1
| | | | * "eg" is a misspelled "egg", "e.g." is "exempli gratia" * Also, "ie" is "i.e.".
* fix #15702, show enum fields documentation (#15792)Miran2020-10-304-1/+44
|
* [backport: 1.4] Better linebreaks (#15658)Miran2020-10-222-60/+60
|
* add Source+Edit links on top of every docgend file (#15642)Timothee Cour2020-10-222-0/+2
|
* docgen: improve alignment of comments (still not perfect) (#15506)Andreas Rumpf2020-10-071-5/+6
| | | | | | | * docgen: improve alignment of comments (still not perfect) * fix error message text in `tunknown_named_parameter` Co-authored-by: narimiran <narimiran@disroot.org>
* group procs of the same name in TOC (#15487)Miran2020-10-052-60/+153
| | | | | | | | | | | * group procs of the same name in TOC * correctly show `sink` parameters in TOC * no need to reinvent the wheel - `mgetorPut` exists * better setting of text color [ci skip] * fix CSS for better alignment
* Fix theme switch load from local storage (#14897)Manuel Bojato2020-07-103-42/+15
| | | | | | | * fix theme switch load from local storage * Fix tests Co-authored-by: Clyybber <darkmine956@gmail.com>
* cleanup comment now that #14434 was fixed (#14874)Timothee Cour2020-07-011-2/+0
|
* fix #14846; add macros.extractDocCommentsAndRunnables (#14849)Timothee Cour2020-07-014-0/+58
| | | | | | | | | * fix #14846; add macros.extractDocCommentsAndRunnables * fixup * update tests * address comment
* fix #14691 docgen works again for methods (#14701)Timothee Cour2020-06-184-0/+105
| | | | | * fix #14691 docgen methods * fixup
* runnableExamples: correctly handle multiline string litterals (#14492)Timothee Cour2020-06-014-0/+90
| | | | | * runnableExamples: correctly handle multiline string litterals * address comments: improve doc comments + variable namings
* hotfix doc comments for procs without body (#14494)Timothee Cour2020-05-294-0/+98
|
* fix #14485 (#14487)Timothee Cour2020-05-284-0/+42
|
* fix #8871 runnableExamples now preserves source code comments, litterals, ↵Timothee Cour2020-05-287-19/+721
| | | | | | | | | | | and all formatting; other bug fix (#14439) * fix #8871 runnableExamples now preserves source code comments, litterals, and all formatting * remove orig deadcode from getAllRunnableExamplesImpl * fix expected examples * add test to close https://github.com/nim-lang/Nim/issues/14473 * correctly handle regular comments before 1st token inside runnableExamples * add test to answer https://github.com/nim-lang/Nim/pull/14439#discussion_r431829199 * update tests
* Propagate the outDir to rstgen to fix hrefs for modules in subdirs (#14479)Kaushal Modi2020-05-283-1/+27
|
* fix #6583, fix #14376, index+search now generated for all projects, many bug ↵Timothee Cour2020-05-252-1/+7
| | | | | | | | | fixes with nim doc (#14324) * refs #6583 fix nim doc output * changelog * change default for outDir when unspecified * cleanups * --project implies --index
* fix #10731 ; `runnableExamples "-b:cpp --run:off": code` works (#14384)Timothee Cour2020-05-201-1/+1
| | | | * runnableExamples "-b:cpp -r:off": code
* fix #13150 `nim doc --project` now works reliably (#13223)Timothee Cour2020-02-061-2/+2
| | | | | | | | | | * fix #13150 `nim doc --project` works with duplicate names and with imports below main project file * add to help; fixup after #13212 isRelativeTo got merged * fix test tests/compilerapi/tcompilerapi.nim * remove nimblePkg field; compute on the fly instead * kochdocs: compiler docs now under compiler/ * --docRoot now has smart default: best among @pkg, @path
* Fix docs for subdirs too (#13180)Clyybber2020-01-171-1/+1
| | | | | * Fix doc subdirs * Extract to helper proc, and fix on windows
* Fix docs (#13176)Clyybber2020-01-163-3/+3
|
* fixes #12998 nim doc regression (#13117)Timothee Cour2020-01-163-3/+3
|
* feature dracula themed doc (#12816)Andreas Rumpf2019-12-103-2301/+113
| | | | | | | | | | * Implement gorgeous Dracula themed Nim documentation * Add color for escape sequences * fixes the test cases * the big CSS cleanup
* Removing the mention of using `discard` for block comments (#12837) [backport]Elliot Waite2019-12-083-0/+3
| | | | | | * Remove mention of using `discard` for block comments * Add a 32x32 alternate favicon
* renderer letAux fix only for octal literal (#12343)Ridho Pratama2019-10-083-1/+69
| | | | | | | | * renderer letAux fix only for octal literal * Handle when it's octal -1 for i64 * Added testcases
* Implement some custom formatting for input fields in the documentation (#11632)Hugo Locurcio2019-07-033-0/+51
| | | | | | | | | | * Implement some custom formatting for input fields in the documentation Aside of resulting in more consistent appearance across browsers, this also fixes input form rendering when using Firefox with a dark system theme on Linux. * change the expected html in the tests
ed042'>^
2c678a4e ^
204dae92 ^

201458e3 ^
204dae92 ^













4a48bedc ^
805d58c6 ^


204dae92 ^



201458e3 ^
5fe060d5 ^
204dae92 ^



201458e3 ^
5fe060d5 ^
204dae92 ^



201458e3 ^
5fe060d5 ^
204dae92 ^




201458e3 ^
5fe060d5 ^
204dae92 ^
201458e3 ^
5fe060d5 ^
204dae92 ^




201458e3 ^
204dae92 ^





201458e3 ^
204dae92 ^
805d58c6 ^

204dae92 ^




201458e3 ^
204dae92 ^








672e3e50 ^


a654e4ec ^
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289



                                                                                          
                                        
                                         
                                                
                                  
                                                                                                               
                                                 

                       

                                                                                                 
                                     
                             

                             
                             





                                                                           

        



                               






















                                                                                 

         
       
                             
                                                                                                                                             
                         









                                                                                                                                                   
                                                                                                                            
                                                                                                                                                                                        



                                                                                                                                                   
                                                                                                                            
                                                                                                                                                                                            



                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                  
                                         
                                                                                                                                                            
                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                      
                                                                                                                                                                                             



                                                                                                                        
                                                                                                                                                                                                                        
                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                          
                                                                           
                                                                                                                                                                                                                              




                                                                                                                                                          
                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                            


                                                                                                                                                                                                                       
                                                                                                                                                         


                                                                                                                                                                                                                    
                                                                                                                                                        
                                                                             
                                                                           
                                                                                                                                                     



                                                                                                                                              
                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                        
                                                                                                                                                                                                                                                            








                                                                                                                                                                                                                                                                

                                                                                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                             
                                                                                                                                                             



                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                 

                                                                                                                                                                                           
















                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
                                                                            
                                                                                                                                                                                                                                            
                                                                                                                                                            


                                                                                                                       
                                                                                                                                                                                                                                                                                                                                     



                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                        







                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                           

                                                                                
                                                                                                                                                                                                                                                                                        


                                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                             

                                                                                                                                                                 

                                                                                                                                                                                                                                                                                                                                                                            

                                                                          
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                            


                                                                                                                         
                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                                                                                                                                                    

                                                                          
                                                                                                                                                                                                                                                                                                                   













                                                                                                                                                   
                                                                                                                                                                                                                                                             


                                                                                                                                                                                                                                                          



                                                                                                          
                                                                                                                             
                                                                                                                                                                                           



                                                                                                                                                      
                                                                                                                             
                                                                                                                                                                                           



                                                                                                                                                     
                                                                                                                             
                                                                                                                                                                                 




                                                                                                                                                        
                                                                                                                             
                                                                                                                                                                                                                             
                                           
                                                                                                                                                 
                                                                                                                                      




                                                                                                                                                                  
                                                                                                                             





                                                                                                                                                     
                                                                                                                             
                                                  

                                                                                               




                                                                                                                                                                                    
                                                                                                                             








                                                                                                                                             


       
                                     
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Mu - 014literal_string.cc</title>
<meta name="Generator" content="Vim/8.0">
<meta name="plugin-version" content="vim7.4_v2">
<meta name="syntax" content="cpp">
<meta name="settings" content="number_lines,use_css,pre_wrap,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
<meta name="colorscheme" content="minimal-light">
<style type="text/css">
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #000000; background-color: #c6c6c6; }
body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
* { font-size:12pt; font-size: 1em; }
.cSpecial { color: #008000; }
.LineNr { }
.Constant { color: #008787; }
.muRecipe { color: #ff8700; }
.Delimiter { color: #c000c0; }
.Special { color: #d70000; }
.Identifier { color: #af5f00; }
.Normal { color: #000000; background-color: #c6c6c6; padding-bottom: 1px; }
.Comment { color: #005faf; }
.traceContains { color: #005f00; }
-->
</style>

<script type='text/javascript'>
<!--

/* function to open any folds containing a jumped-to line before jumping to it */
function JumpToLine()
{
  var lineNum;
  lineNum = window.location.hash;
  lineNum = lineNum.substr(1); /* strip off '#' */

  if (lineNum.indexOf('L') == -1) {
    lineNum = 'L'+lineNum;
  }
  lineElem = document.getElementById(lineNum);
  /* Always jump to new location even if the line was hidden inside a fold, or
   * we corrected the raw number to a line ID.
   */
  if (lineElem) {
    lineElem.scrollIntoView(true);
  }
  return true;
}
if ('onhashchange' in window) {
  window.onhashchange = JumpToLine;
}

-->
</script>
</head>
<body onload='JumpToLine();'>
<a href='https://github.com/akkartik/mu/blob/master/014literal_string.cc'>https://github.com/akkartik/mu/blob/master/014literal_string.cc</a>
<pre id='vimCodeElement'>
<span id="L1" class="LineNr">  1 </span><span class="Comment">//: For convenience, some instructions will take literal arrays of characters</span>
<span id="L2" class="LineNr">  2 </span><span class="Comment">//: (text or strings).</span>
<span id="L3" class="LineNr">  3 </span><span class="Comment">//:</span>
<span id="L4" class="LineNr">  4 </span><span class="Comment">//: Instead of quotes, we'll use [] to delimit strings. That'll reduce the</span>
<span id="L5" class="LineNr">  5 </span><span class="Comment">//: need for escaping since we can support nested brackets. And we can also</span>
<span id="L6" class="LineNr">  6 </span><span class="Comment">//: imagine that 'recipe' might one day itself be defined in Mu, doing its own</span>
<span id="L7" class="LineNr">  7 </span><span class="Comment">//: parsing.</span>
<span id="L8" class="LineNr">  8 </span>
<span id="L9" class="LineNr">  9 </span><span class="Delimiter">:(scenarios load)</span>
<span id="L10" class="LineNr"> 10 </span><span class="Delimiter">:(scenario string_literal)</span>
<span id="L11" class="LineNr"> 11 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L12" class="LineNr"> 12 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L101'>address</a>:array:character<span class="Special"> &lt;- </span>copy [abc def]
<span id="L13" class="LineNr"> 13 </span>]
<span id="L14" class="LineNr"> 14 </span><span class="traceContains">+parse:   ingredient: {&quot;abc def&quot;: &quot;literal-string&quot;}</span>
<span id="L15" class="LineNr"> 15 </span>
<span id="L16" class="LineNr"> 16 </span><span class="Delimiter">:(scenario string_literal_with_colons)</span>
<span id="L17" class="LineNr"> 17 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L18" class="LineNr"> 18 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L101'>address</a>:array:character<span class="Special"> &lt;- </span>copy [abc:def/ghi]
<span id="L19" class="LineNr"> 19 </span>]
<span id="L20" class="LineNr"> 20 </span><span class="traceContains">+parse:   ingredient: {&quot;abc:def/ghi&quot;: &quot;literal-string&quot;}</span>
<span id="L21" class="LineNr"> 21 </span>
<span id="L22" class="LineNr"> 22 </span><span class="Delimiter">:(before &quot;End Mu Types Initialization&quot;)</span>
<span id="L23" class="LineNr"> 23 </span><a href='001help.cc.html#L221'>put</a><span class="Delimiter">(</span><span class="Special">Type_ordinal</span><span class="Delimiter">,</span> <span class="Constant">&quot;literal-string&quot;</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
<span id="L24" class="LineNr"> 24 </span>
<span id="L25" class="LineNr"> 25 </span><span class="Delimiter">:(before &quot;End <a href='011load.cc.html#L169'>next_word</a> Special-cases&quot;)</span>
<span id="L26" class="LineNr"> 26 </span><span class="Normal">if</span> <span class="Delimiter">(</span>in<span class="Delimiter">.</span>peek<span class="Delimiter">()</span> == <span class="Constant">'['</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L27" class="LineNr"> 27 </span>  string result = <a href='014literal_string.cc.html#L33'>slurp_quoted</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
<span id="L28" class="LineNr"> 28 </span>  <a href='011load.cc.html#L222'>skip_whitespace_and_comments_but_not_newline</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
<span id="L29" class="LineNr"> 29 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
<span id="L30" class="LineNr"> 30 </span><span class="Delimiter">}</span>
<span id="L31" class="LineNr"> 31 </span>
<span id="L32" class="LineNr"> 32 </span><span class="Delimiter">:(code)</span>
<span id="L33" class="LineNr"> 33 </span>string <a href='014literal_string.cc.html#L33'>slurp_quoted</a><span class="Delimiter">(</span>istream&amp; in<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L34" class="LineNr"> 34 </span>  ostringstream out<span class="Delimiter">;</span>
<span id="L35" class="LineNr"> 35 </span>  assert<span class="Delimiter">(</span><a href='001help.cc.html#L239'>has_data</a><span class="Delimiter">(</span>in<span class="Delimiter">));</span>  assert<span class="Delimiter">(</span>in<span class="Delimiter">.</span>peek<span class="Delimiter">()</span> == <span class="Constant">'['</span><span class="Delimiter">);</span>  out &lt;&lt; <span class="Normal">static_cast</span>&lt;<span class="Normal">char</span>&gt;<span class="Delimiter">(</span>in<span class="Delimiter">.</span>get<span class="Delimiter">());</span>  <span class="Comment">// slurp the '['</span>
<span id="L36" class="LineNr"> 36 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='014literal_string.cc.html#L45'>is_code_string</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> out<span class="Delimiter">))</span>
<span id="L37" class="LineNr"> 37 </span>    <a href='014literal_string.cc.html#L82'>slurp_quoted_comment_aware</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
<span id="L38" class="LineNr"> 38 </span>  <span class="Normal">else</span>
<span id="L39" class="LineNr"> 39 </span>    <a href='014literal_string.cc.html#L62'>slurp_quoted_comment_oblivious</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
<span id="L40" class="LineNr"> 40 </span>  <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
<span id="L41" class="LineNr"> 41 </span><span class="Delimiter">}</span>
<span id="L42" class="LineNr"> 42 </span>
<span id="L43" class="LineNr"> 43 </span><span class="Comment">// A string is a code string (ignores comments when scanning for matching</span>
<span id="L44" class="LineNr"> 44 </span><span class="Comment">// brackets) if it contains a newline at the start before any non-whitespace.</span>
<span id="L45" class="LineNr"> 45 </span><span class="Normal">bool</span> <a href='014literal_string.cc.html#L45'>is_code_string</a><span class="Delimiter">(</span>istream&amp; in<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L46" class="LineNr"> 46 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><a href='001help.cc.html#L239'>has_data</a><span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L47" class="LineNr"> 47 </span>    <span class="Normal">char</span> c = in<span class="Delimiter">.</span>get<span class="Delimiter">();</span>
<span id="L48" class="LineNr"> 48 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>!isspace<span class="Delimiter">(</span>c<span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L49" class="LineNr"> 49 </span>      in<span class="Delimiter">.</span>putback<span class="Delimiter">(</span>c<span class="Delimiter">);</span>
<span id="L50" class="LineNr"> 50 </span>      <span class="Identifier">return</span><span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L51" class="LineNr"> 51 </span>    <span class="Delimiter">}</span>
<span id="L52" class="LineNr"> 52 </span>    out &lt;&lt; c<span class="Delimiter">;</span>
<span id="L53" class="LineNr"> 53 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="cSpecial">'\n'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L54" class="LineNr"> 54 </span>      <span class="Identifier">return</span><span class="Constant"> true</span><span class="Delimiter">;</span>
<span id="L55" class="LineNr"> 55 </span>    <span class="Delimiter">}</span>
<span id="L56" class="LineNr"> 56 </span>  <span class="Delimiter">}</span>
<span id="L57" class="LineNr"> 57 </span>  <span class="Identifier">return</span><span class="Constant"> false</span><span class="Delimiter">;</span>
<span id="L58" class="LineNr"> 58 </span><span class="Delimiter">}</span>
<span id="L59" class="LineNr"> 59 </span>
<span id="L60" class="LineNr"> 60 </span><span class="Comment">// Read a regular string. Regular strings can only contain other regular</span>
<span id="L61" class="LineNr"> 61 </span><span class="Comment">// strings.</span>
<span id="L62" class="LineNr"> 62 </span><span class="Normal">void</span> <a href='014literal_string.cc.html#L62'>slurp_quoted_comment_oblivious</a><span class="Delimiter">(</span>istream&amp; in<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L63" class="LineNr"> 63 </span>  <span class="Normal">int</span> brace_depth = <span class="Constant">1</span><span class="Delimiter">;</span>
<span id="L64" class="LineNr"> 64 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><a href='001help.cc.html#L239'>has_data</a><span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L65" class="LineNr"> 65 </span>    <span class="Normal">char</span> c = in<span class="Delimiter">.</span>get<span class="Delimiter">();</span>
<span id="L66" class="LineNr"> 66 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="cSpecial">'\\'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L67" class="LineNr"> 67 </span>      <a href='014literal_string.cc.html#L148'>slurp_one_past_backslashes</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
<span id="L68" class="LineNr"> 68 </span>      <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L69" class="LineNr"> 69 </span>    <span class="Delimiter">}</span>
<span id="L70" class="LineNr"> 70 </span>    out &lt;&lt; c<span class="Delimiter">;</span>
<span id="L71" class="LineNr"> 71 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">'['</span><span class="Delimiter">)</span> ++brace_depth<span class="Delimiter">;</span>
<span id="L72" class="LineNr"> 72 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">']'</span><span class="Delimiter">)</span> --brace_depth<span class="Delimiter">;</span>
<span id="L73" class="LineNr"> 73 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>brace_depth == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L74" class="LineNr"> 74 </span>  <span class="Delimiter">}</span>
<span id="L75" class="LineNr"> 75 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">)</span> &amp;&amp; brace_depth &gt; <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L76" class="LineNr"> 76 </span>    <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced '['\n&quot;</span> &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L77" class="LineNr"> 77 </span>    out<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
<span id="L78" class="LineNr"> 78 </span>  <span class="Delimiter">}</span>
<span id="L79" class="LineNr"> 79 </span><span class="Delimiter">}</span>
<span id="L80" class="LineNr"> 80 </span>
<span id="L81" class="LineNr"> 81 </span><span class="Comment">// Read a code string. Code strings can contain either code or regular strings.</span>
<span id="L82" class="LineNr"> 82 </span><span class="Normal">void</span> <a href='014literal_string.cc.html#L82'>slurp_quoted_comment_aware</a><span class="Delimiter">(</span>istream&amp; in<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L83" class="LineNr"> 83 </span>  <span class="Normal">char</span> c<span class="Delimiter">;</span>
<span id="L84" class="LineNr"> 84 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>in &gt;&gt; c<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L85" class="LineNr"> 85 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="cSpecial">'\\'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L86" class="LineNr"> 86 </span>      <a href='014literal_string.cc.html#L148'>slurp_one_past_backslashes</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
<span id="L87" class="LineNr"> 87 </span>      <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L88" class="LineNr"> 88 </span>    <span class="Delimiter">}</span>
<span id="L89" class="LineNr"> 89 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">'#'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L90" class="LineNr"> 90 </span>      out &lt;&lt; c<span class="Delimiter">;</span>
<span id="L91" class="LineNr"> 91 </span>      <span class="Normal">while</span> <span class="Delimiter">(</span><a href='001help.cc.html#L239'>has_data</a><span class="Delimiter">(</span>in<span class="Delimiter">)</span> &amp;&amp; in<span class="Delimiter">.</span>peek<span class="Delimiter">()</span> != <span class="cSpecial">'\n'</span><span class="Delimiter">)</span> out &lt;&lt; <span class="Normal">static_cast</span>&lt;<span class="Normal">char</span>&gt;<span class="Delimiter">(</span>in<span class="Delimiter">.</span>get<span class="Delimiter">());</span>
<span id="L92" class="LineNr"> 92 </span>      <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L93" class="LineNr"> 93 </span>    <span class="Delimiter">}</span>
<span id="L94" class="LineNr"> 94 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">'['</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L95" class="LineNr"> 95 </span>      in<span class="Delimiter">.</span>putback<span class="Delimiter">(</span>c<span class="Delimiter">);</span>
<span id="L96" class="LineNr"> 96 </span>      <span class="Comment">// recurse</span>
<span id="L97" class="LineNr"> 97 </span>      out &lt;&lt; <a href='014literal_string.cc.html#L33'>slurp_quoted</a><span class="Delimiter">(</span>in<span class="Delimiter">);</span>
<span id="L98" class="LineNr"> 98 </span>      <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L99" class="LineNr"> 99 </span>    <span class="Delimiter">}</span>
<span id="L100" class="LineNr">100 </span>    out &lt;&lt; c<span class="Delimiter">;</span>
<span id="L101" class="LineNr">101 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>c == <span class="Constant">']'</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L102" class="LineNr">102 </span>  <span class="Delimiter">}</span>
<span id="L103" class="LineNr">103 </span>  <a href='003trace.cc.html#L196'>raise</a> &lt;&lt; <span class="Constant">&quot;unbalanced '['\n&quot;</span> &lt;&lt; <a href='003trace.cc.html#L225'>end</a><span class="Delimiter">();</span>
<span id="L104" class="LineNr">104 </span>  out<span class="Delimiter">.</span><a href='050scenario.cc.html#L60'>clear</a><span class="Delimiter">();</span>
<span id="L105" class="LineNr">105 </span><span class="Delimiter">}</span>
<span id="L106" class="LineNr">106 </span>
<span id="L107" class="LineNr">107 </span><span class="Delimiter">:(after &quot;Parsing reagent(string s)&quot;)</span>
<span id="L108" class="LineNr">108 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L77'>starts_with</a><span class="Delimiter">(</span>s<span class="Delimiter">,</span> <span class="Constant">&quot;[&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L109" class="LineNr">109 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>*s<span class="Delimiter">.</span>rbegin<span class="Delimiter">()</span> != <span class="Constant">']'</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// unbalanced bracket; handled elsewhere</span>
<span id="L110" class="LineNr">110 </span>  name = s<span class="Delimiter">;</span>
<span id="L111" class="LineNr">111 </span>  <span class="Comment">// delete [] delimiters</span>
<span id="L112" class="LineNr">112 </span>  name<span class="Delimiter">.</span>erase<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">);</span>
<span id="L113" class="LineNr">113 </span>  <a href='014literal_string.cc.html#L144'>strip_last</a><span class="Delimiter">(</span>name<span class="Delimiter">);</span>
<span id="L114" class="LineNr">114 </span>  type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;literal-string&quot;</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
<span id="L115" class="LineNr">115 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L116" class="LineNr">116 </span><span class="Delimiter">}</span>
<span id="L117" class="LineNr">117 </span>
<span id="L118" class="LineNr">118 </span><span class="Comment">//: Unlike other reagents, escape newlines in literal strings to make them</span>
<span id="L119" class="LineNr">119 </span><span class="Comment">//: more friendly to trace().</span>
<span id="L120" class="LineNr">120 </span>
<span id="L121" class="LineNr">121 </span><span class="Delimiter">:(after &quot;string to_string(const reagent&amp; r)&quot;)</span>
<span id="L122" class="LineNr">122 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='014literal_string.cc.html#L126'>is_literal_text</a><span class="Delimiter">(</span>r<span class="Delimiter">))</span>
<span id="L123" class="LineNr">123 </span>    <span class="Identifier">return</span> <a href='014literal_string.cc.html#L130'>emit_literal_string</a><span class="Delimiter">(</span>r<span class="Delimiter">.</span>name<span class="Delimiter">);</span>
<span id="L124" class="LineNr">124 </span>
<span id="L125" class="LineNr">125 </span><span class="Delimiter">:(code)</span>
<span id="L126" class="LineNr">126 </span><span class="Normal">bool</span> <a href='014literal_string.cc.html#L126'>is_literal_text</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L127" class="LineNr">127 </span>  <span class="Identifier">return</span> x<span class="Delimiter">.</span>type &amp;&amp; x<span class="Delimiter">.</span>type<span class="Delimiter">-&gt;</span>name == <span class="Constant">&quot;literal-string&quot;</span><span class="Delimiter">;</span>
<span id="L128" class="LineNr">128 </span><span class="Delimiter">}</span>
<span id="L129" class="LineNr">129 </span>
<span id="L130" class="LineNr">130 </span>string <a href='014literal_string.cc.html#L130'>emit_literal_string</a><span class="Delimiter">(</span>string name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L131" class="LineNr">131 </span>  <span class="Normal">size_t</span> pos = <span class="Constant">0</span><span class="Delimiter">;</span>
<span id="L132" class="LineNr">132 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span>pos != string::npos<span class="Delimiter">)</span>
<span id="L133" class="LineNr">133 </span>    pos = <a href='014literal_string.cc.html#L137'>replace</a><span class="Delimiter">(</span>name<span class="Delimiter">,</span> <span class="Constant">&quot;\n&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;\\n&quot;</span><span class="Delimiter">,</span> pos<span class="Delimiter">);</span>
<span id="L134" class="LineNr">134 </span>  <span class="Identifier">return</span> <span class="Constant">&quot;{\&quot;&quot;+name+&quot;</span>\<span class="Constant">&quot;: \&quot;</span>literal-string\<span class="Constant">&quot;}&quot;</span><span class="Delimiter">;</span>
<span id="L135" class="LineNr">135 </span><span class="Delimiter">}</span>
<span id="L136" class="LineNr">136 </span>
<span id="L137" class="LineNr">137 </span><span class="Normal">size_t</span> <a href='014literal_string.cc.html#L137'>replace</a><span class="Delimiter">(</span>string&amp; str<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; from<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; to<span class="Delimiter">,</span> <span class="Normal">size_t</span> n<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L138" class="LineNr">138 </span>  <span class="Normal">size_t</span> result = str<span class="Delimiter">.</span>find<span class="Delimiter">(</span>from<span class="Delimiter">,</span> n<span class="Delimiter">);</span>
<span id="L139" class="LineNr">139 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>result != string::npos<span class="Delimiter">)</span>
<span id="L140" class="LineNr">140 </span>    str<span class="Delimiter">.</span><a href='014literal_string.cc.html#L137'>replace</a><span class="Delimiter">(</span>result<span class="Delimiter">,</span> from<span class="Delimiter">.</span>length<span class="Delimiter">(),</span> to<span class="Delimiter">);</span>
<span id="L141" class="LineNr">141 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
<span id="L142" class="LineNr">142 </span><span class="Delimiter">}</span>
<span id="L143" class="LineNr">143 </span>
<span id="L144" class="LineNr">144 </span><span class="Normal">void</span> <a href='014literal_string.cc.html#L144'>strip_last</a><span class="Delimiter">(</span>string&amp; s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L145" class="LineNr">145 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!s<span class="Delimiter">.</span>empty<span class="Delimiter">())</span> s<span class="Delimiter">.</span>erase<span class="Delimiter">(</span><a href='001help.cc.html#L141'>SIZE</a><span class="Delimiter">(</span>s<span class="Delimiter">)</span>-<span class="Constant">1</span><span class="Delimiter">);</span>
<span id="L146" class="LineNr">146 </span><span class="Delimiter">}</span>
<span id="L147" class="LineNr">147 </span>
<span id="L148" class="LineNr">148 </span><span class="Normal">void</span> <a href='014literal_string.cc.html#L148'>slurp_one_past_backslashes</a><span class="Delimiter">(</span>istream&amp; in<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L149" class="LineNr">149 </span>  <span class="Comment">// When you encounter a backslash, strip it out and pass through any</span>
<span id="L150" class="LineNr">150 </span>  <span class="Comment">// following run of backslashes. If we 'escaped' a single following</span>
<span id="L151" class="LineNr">151 </span>  <span class="Comment">// character, then the character '\' would be:</span>
<span id="L152" class="LineNr">152 </span>  <span class="Comment">//   '\\' escaped once</span>
<span id="L153" class="LineNr">153 </span>  <span class="Comment">//   '\\\\' escaped twice</span>
<span id="L154" class="LineNr">154 </span>  <span class="Comment">//   '\\\\\\\\' escaped thrice (8 backslashes)</span>
<span id="L155" class="LineNr">155 </span>  <span class="Comment">// ..and so on. With our approach it'll be:</span>
<span id="L156" class="LineNr">156 </span>  <span class="Comment">//   '\\' escaped once</span>
<span id="L157" class="LineNr">157 </span>  <span class="Comment">//   '\\\' escaped twice</span>
<span id="L158" class="LineNr">158 </span>  <span class="Comment">//   '\\\\' escaped thrice</span>
<span id="L159" class="LineNr">159 </span>  <span class="Comment">// This only works as long as backslashes aren't also overloaded to create</span>
<span id="L160" class="LineNr">160 </span>  <span class="Comment">// special characters. So Mu doesn't follow C's approach of overloading</span>
<span id="L161" class="LineNr">161 </span>  <span class="Comment">// backslashes both to escape quote characters and also as a notation for</span>
<span id="L162" class="LineNr">162 </span>  <span class="Comment">// unprintable characters like '\n'.</span>
<span id="L163" class="LineNr">163 </span>  <span class="Normal">while</span> <span class="Delimiter">(</span><a href='001help.cc.html#L239'>has_data</a><span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L164" class="LineNr">164 </span>    <span class="Normal">char</span> c = in<span class="Delimiter">.</span>get<span class="Delimiter">();</span>
<span id="L165" class="LineNr">165 </span>    out &lt;&lt; c<span class="Delimiter">;</span>
<span id="L166" class="LineNr">166 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>c != <span class="cSpecial">'\\'</span><span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L167" class="LineNr">167 </span>  <span class="Delimiter">}</span>
<span id="L168" class="LineNr">168 </span><span class="Delimiter">}</span>
<span id="L169" class="LineNr">169 </span>
<span id="L170" class="LineNr">170 </span><span class="Delimiter">:(scenario string_literal_nested)</span>
<span id="L171" class="LineNr">171 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L172" class="LineNr">172 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L101'>address</a>:array:character<span class="Special"> &lt;- </span>copy [abc [def]]
<span id="L173" class="LineNr">173 </span>]
<span id="L174" class="LineNr">174 </span><span class="traceContains">+parse:   ingredient: {&quot;abc [def]&quot;: &quot;literal-string&quot;}</span>
<span id="L175" class="LineNr">175 </span>
<span id="L176" class="LineNr">176 </span><span class="Delimiter">:(scenario string_literal_escaped)</span>
<span id="L177" class="LineNr">177 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L178" class="LineNr">178 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L101'>address</a>:array:character<span class="Special"> &lt;- </span>copy [abc \[def]
<span id="L179" class="LineNr">179 </span>]
<span id="L180" class="LineNr">180 </span><span class="traceContains">+parse:   ingredient: {&quot;abc [def&quot;: &quot;literal-string&quot;}</span>
<span id="L181" class="LineNr">181 </span>
<span id="L182" class="LineNr">182 </span><span class="Delimiter">:(scenario string_literal_escaped_twice)</span>
<span id="L183" class="LineNr">183 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L184" class="LineNr">184 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L101'>address</a>:array:character<span class="Special"> &lt;- </span>copy [
<span id="L185" class="LineNr">185 </span>abc \\[def]
<span id="L186" class="LineNr">186 </span>]
<span id="L187" class="LineNr">187 </span><span class="traceContains">+parse:   ingredient: {&quot;\nabc \[def&quot;: &quot;literal-string&quot;}</span>
<span id="L188" class="LineNr">188 </span>
<span id="L189" class="LineNr">189 </span><span class="Delimiter">:(scenario string_literal_and_comment)</span>
<span id="L190" class="LineNr">190 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L191" class="LineNr">191 </span>  <span class="Constant">1</span>:<a href='043space.cc.html#L101'>address</a>:array:character<span class="Special"> &lt;- </span>copy [abc]  <span class="Comment"># comment</span>
<span id="L192" class="LineNr">192 </span>]
<span id="L193" class="LineNr">193 </span><span class="traceContains">+parse: --- defining <a href='000organization.cc.html#L113'>main</a></span>
<span id="L194" class="LineNr">194 </span><span class="traceContains">+parse: <a href='010vm.cc.html#L33'>instruction</a>: copy</span>
<span id="L195" class="LineNr">195 </span><span class="traceContains">+parse:   number of ingredients: 1</span>
<span id="L196" class="LineNr">196 </span><span class="traceContains">+parse:   ingredient: {&quot;abc&quot;: &quot;literal-string&quot;}</span>
<span id="L197" class="LineNr">197 </span><span class="traceContains">+parse:   product: {1: (&quot;address&quot; &quot;array&quot; &quot;character&quot;)}</span>
<span id="L198" class="LineNr">198 </span>
<span id="L199" class="LineNr">199 </span><span class="Delimiter">:(scenario string_literal_escapes_newlines_in_trace)</span>
<span id="L200" class="LineNr">200 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L201" class="LineNr">201 </span>  copy [abc
<span id="L202" class="LineNr">202 </span><span class="muRecipe">def</span>]
<span id="L203" class="LineNr">203 </span>]
<span id="L204" class="LineNr">204 </span><span class="traceContains">+parse:   ingredient: {&quot;abc\ndef&quot;: &quot;literal-string&quot;}</span>
<span id="L205" class="LineNr">205 </span>
<span id="L206" class="LineNr">206 </span><span class="Delimiter">:(scenario string_literal_can_skip_past_comments)</span>
<span id="L207" class="LineNr">207 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L208" class="LineNr">208 </span>  copy [
<span id="L209" class="LineNr">209 </span>    <span class="Comment"># ']' inside comment</span>
<span id="L210" class="LineNr">210 </span>    bar
<span id="L211" class="LineNr">211 </span>  ]
<span id="L212" class="LineNr">212 </span>]
<span id="L213" class="LineNr">213 </span><span class="traceContains">+parse:   ingredient: {&quot;\n    # ']' inside comment\n    bar\n  &quot;: &quot;literal-string&quot;}</span>
<span id="L214" class="LineNr">214 </span>
<span id="L215" class="LineNr">215 </span><span class="Delimiter">:(scenario string_literal_empty)</span>
<span id="L216" class="LineNr">216 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L217" class="LineNr">217 </span>  copy []
<span id="L218" class="LineNr">218 </span>]
<span id="L219" class="LineNr">219 </span><span class="traceContains">+parse:   ingredient: {&quot;&quot;: &quot;literal-string&quot;}</span>
<span id="L220" class="LineNr">220 </span>
<span id="L221" class="LineNr">221 </span><span class="Delimiter">:(scenario multiple_unfinished_recipes)</span>
<span id="L222" class="LineNr">222 </span><span class="Special">% Hide_errors = true;</span>
<span id="L223" class="LineNr">223 </span><span class="muRecipe">def</span> f1 [
<span id="L224" class="LineNr">224 </span><span class="muRecipe">def</span> f2 [
<span id="L225" class="LineNr">225 </span><span class="traceContains">+error: unbalanced '['</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->