linmeric 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +51 -0
- data/Rakefile +10 -0
- data/bin/help/Help.rb +184 -0
- data/bin/help/Help_inst.rb +244 -0
- data/bin/linguide +23 -0
- data/bin/linmeric +36 -70
- data/doc/Archive.html +352 -0
- data/doc/Calculator/Evaluator.html +477 -0
- data/doc/Calculator/Lexer.html +186 -0
- data/doc/Calculator/Token.html +257 -0
- data/doc/Calculator.html +181 -0
- data/doc/Dim.html +257 -0
- data/doc/Filename.html +246 -0
- data/doc/Fixnum.html +253 -0
- data/doc/Float.html +253 -0
- data/doc/Function.html +784 -0
- data/doc/InputError.html +102 -0
- data/doc/Instructions_en.txt +6 -7
- data/doc/Instructions_it.txt +6 -9
- data/doc/Integrators.html +436 -0
- data/doc/LU.html +435 -0
- data/doc/Lexer.html +261 -0
- data/doc/Linmeric.html +109 -0
- data/doc/Listener.html +605 -0
- data/doc/Matrix.html +1719 -0
- data/doc/MyArgError.html +102 -0
- data/doc/NilClass.html +202 -0
- data/doc/Numeric.html +251 -0
- data/doc/Parser.html +389 -0
- data/doc/PrintError.html +622 -0
- data/doc/README_md.html +142 -0
- data/doc/Scp.html +530 -0
- data/doc/Sizer.html +652 -0
- data/doc/String.html +540 -0
- data/doc/Token.html +341 -0
- data/doc/Tool.html +394 -0
- data/doc/created.rid +18 -0
- data/doc/css/fonts.css +167 -0
- data/doc/css/rdoc.css +590 -0
- data/doc/fonts/Lato-Light.ttf +0 -0
- data/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/doc/fonts/Lato-Regular.ttf +0 -0
- data/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +190 -0
- data/doc/js/darkfish.js +161 -0
- data/doc/js/jquery.js +9404 -0
- data/doc/js/navigation.js +142 -0
- data/doc/js/navigation.js.gz +0 -0
- data/doc/js/search.js +109 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/search_index.js.gz +0 -0
- data/doc/js/searcher.js +228 -0
- data/doc/js/searcher.js.gz +0 -0
- data/doc/table_of_contents.html +834 -0
- data/lib/linmeric/Archive.rb +22 -1
- data/lib/linmeric/Calculator.rb +252 -0
- data/lib/linmeric/CnGal_Matrix_class.rb +130 -49
- data/lib/linmeric/CnGal_new_classes.rb +139 -37
- data/lib/linmeric/CnGal_tools.rb +23 -40
- data/lib/linmeric/Error_print.rb +35 -1
- data/lib/linmeric/Function_class.rb +70 -11
- data/lib/linmeric/Integrators.rb +81 -35
- data/lib/linmeric/LU.rb +26 -5
- data/lib/linmeric/Lexer.rb +19 -1
- data/lib/linmeric/Listener.rb +25 -5
- data/lib/linmeric/Parser.rb +23 -1
- data/lib/linmeric/Scopify.rb +52 -31
- data/lib/linmeric/Sizer.rb +43 -10
- data/lib/linmeric/Token.rb +23 -4
- data/lib/linmeric/version.rb +3 -0
- data/lib/linmeric.rb +10 -8
- data/lib/linmeric_bin.rb +12 -0
- metadata +126 -22
- data/doc/Instructions_en.html +0 -231
- data/doc/Instructions_it.html +0 -231
- data/doc/README_en.html +0 -177
- data/doc/README_en.txt +0 -30
- data/doc/README_it.html +0 -187
- data/doc/README_it.txt +0 -32
data/doc/Sizer.html
ADDED
|
@@ -0,0 +1,652 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
|
|
7
|
+
<title>class Sizer - RDoc Documentation</title>
|
|
8
|
+
|
|
9
|
+
<script type="text/javascript">
|
|
10
|
+
var rdoc_rel_prefix = "./";
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<script src="./js/jquery.js"></script>
|
|
14
|
+
<script src="./js/darkfish.js"></script>
|
|
15
|
+
|
|
16
|
+
<link href="./css/fonts.css" rel="stylesheet">
|
|
17
|
+
<link href="./css/rdoc.css" rel="stylesheet">
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
<body id="top" role="document" class="class">
|
|
22
|
+
<nav role="navigation">
|
|
23
|
+
<div id="project-navigation">
|
|
24
|
+
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
|
25
|
+
<h2>
|
|
26
|
+
<a href="./index.html" rel="home">Home</a>
|
|
27
|
+
</h2>
|
|
28
|
+
|
|
29
|
+
<div id="table-of-contents-navigation">
|
|
30
|
+
<a href="./table_of_contents.html#pages">Pages</a>
|
|
31
|
+
<a href="./table_of_contents.html#classes">Classes</a>
|
|
32
|
+
<a href="./table_of_contents.html#methods">Methods</a>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<div id="search-section" role="search" class="project-section initially-hidden">
|
|
37
|
+
<form action="#" method="get" accept-charset="utf-8">
|
|
38
|
+
<div id="search-field-wrapper">
|
|
39
|
+
<input id="search-field" role="combobox" aria-label="Search"
|
|
40
|
+
aria-autocomplete="list" aria-controls="search-results"
|
|
41
|
+
type="text" name="search" placeholder="Search" spellcheck="false"
|
|
42
|
+
title="Type to search, Up and Down to navigate, Enter to load">
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
<ul id="search-results" aria-label="Search Results"
|
|
46
|
+
aria-busy="false" aria-expanded="false"
|
|
47
|
+
aria-atomic="false" class="initially-hidden"></ul>
|
|
48
|
+
</form>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
<div id="class-metadata">
|
|
56
|
+
|
|
57
|
+
<div id="parent-class-section" class="nav-section">
|
|
58
|
+
<h3>Parent</h3>
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
<p class="link">Object
|
|
62
|
+
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
<!-- Method Quickref -->
|
|
68
|
+
<div id="method-list-section" class="nav-section">
|
|
69
|
+
<h3>Methods</h3>
|
|
70
|
+
|
|
71
|
+
<ul class="link-list" role="directory">
|
|
72
|
+
|
|
73
|
+
<li ><a href="#method-c-new">::new</a>
|
|
74
|
+
|
|
75
|
+
<li ><a href="#method-i-analyze">#analyze</a>
|
|
76
|
+
|
|
77
|
+
<li ><a href="#method-i-balanced_brackets-3F">#balanced_brackets?</a>
|
|
78
|
+
|
|
79
|
+
<li ><a href="#method-i-check_block">#check_block</a>
|
|
80
|
+
|
|
81
|
+
<li ><a href="#method-i-count">#count</a>
|
|
82
|
+
|
|
83
|
+
</ul>
|
|
84
|
+
</div>
|
|
85
|
+
|
|
86
|
+
</div>
|
|
87
|
+
</nav>
|
|
88
|
+
|
|
89
|
+
<main role="main" aria-labelledby="class-Sizer">
|
|
90
|
+
<h1 id="class-Sizer" class="class">
|
|
91
|
+
class Sizer
|
|
92
|
+
</h1>
|
|
93
|
+
|
|
94
|
+
<section class="description">
|
|
95
|
+
|
|
96
|
+
<p><a href="Sizer.html">Sizer</a> analyzes the sintax of the inserted commands
|
|
97
|
+
printing errors if they are found, before the string is manipulated by <a
|
|
98
|
+
href="Scp.html">Scp</a> and parsed by <a href="Parser.html">Parser</a>.</p>
|
|
99
|
+
<dl class="rdoc-list note-list"><dt>Author
|
|
100
|
+
<dd>
|
|
101
|
+
<p>Massimiliano Dal Mas (<a
|
|
102
|
+
href="mailto:max.codeware@gmail.com">max.codeware@gmail.com</a>)</p>
|
|
103
|
+
</dd><dt>License
|
|
104
|
+
<dd>
|
|
105
|
+
<p>Distributed under MIT license</p>
|
|
106
|
+
</dd></dl>
|
|
107
|
+
|
|
108
|
+
</section>
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
<section id="5Buntitled-5D" class="documentation-section">
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
|
|
124
|
+
<header>
|
|
125
|
+
<h3>Public Class Methods</h3>
|
|
126
|
+
</header>
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
<div id="method-c-new" class="method-detail ">
|
|
130
|
+
|
|
131
|
+
<div class="method-heading">
|
|
132
|
+
<span class="method-name">new</span><span
|
|
133
|
+
class="method-args">()</span>
|
|
134
|
+
|
|
135
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
136
|
+
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
<div class="method-description">
|
|
141
|
+
|
|
142
|
+
<p>Builds a new lexer</p>
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
<div class="method-source-code" id="new-source">
|
|
148
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Sizer.rb, line 19</span>
|
|
149
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>()
|
|
150
|
+
<span class="ruby-ivar">@lexer</span> = <span class="ruby-constant">Lexer</span>.<span class="ruby-identifier">new</span>
|
|
151
|
+
<span class="ruby-keyword">end</span></pre>
|
|
152
|
+
</div>
|
|
153
|
+
|
|
154
|
+
</div>
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
</div>
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
</section>
|
|
163
|
+
|
|
164
|
+
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
|
|
165
|
+
<header>
|
|
166
|
+
<h3>Public Instance Methods</h3>
|
|
167
|
+
</header>
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
<div id="method-i-analyze" class="method-detail ">
|
|
171
|
+
|
|
172
|
+
<div class="method-heading">
|
|
173
|
+
<span class="method-name">analyze</span><span
|
|
174
|
+
class="method-args">(string, equal = true)</span>
|
|
175
|
+
|
|
176
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
177
|
+
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
<div class="method-description">
|
|
182
|
+
|
|
183
|
+
<p>Analyzes the stream of tokens to check the sintax. It uses a turing machine
|
|
184
|
+
to find errors.</p>
|
|
185
|
+
<ul><li>
|
|
186
|
+
<p>*<strong>argument</strong>*: input comand string to analyze or stream of
|
|
187
|
+
tokens (array)</p>
|
|
188
|
+
</li><li>
|
|
189
|
+
<p>*<strong>argument</strong>*: boolean value which identifies the possibility
|
|
190
|
+
to find the</p>
|
|
191
|
+
</li></ul>
|
|
192
|
+
|
|
193
|
+
<p>assign symbol `=`. <code>true</code> is default (`=` is allowed)</p>
|
|
194
|
+
<ul><li>
|
|
195
|
+
<p>*<strong>returns</strong>*: <code>true</code> if the sintax is correct;
|
|
196
|
+
<code>false</code> else</p>
|
|
197
|
+
</li></ul>
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
<div class="method-source-code" id="analyze-source">
|
|
203
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Sizer.rb, line 30</span>
|
|
204
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">analyze</span>(<span class="ruby-identifier">string</span>, <span class="ruby-identifier">equal</span> = <span class="ruby-keyword">true</span>)
|
|
205
|
+
<span class="ruby-ivar">@i</span> = <span class="ruby-value">0</span>
|
|
206
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">0</span>
|
|
207
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">string</span> <span class="ruby-operator">==</span> <span class="ruby-string">""</span>
|
|
208
|
+
<span class="ruby-identifier">@@string</span> = <span class="ruby-identifier">string</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">string</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>
|
|
209
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">string</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
|
|
210
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">balanced_brackets?</span> <span class="ruby-identifier">string</span>
|
|
211
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-string">"Sintax Error: unbalanced brackets"</span>
|
|
212
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
213
|
+
<span class="ruby-keyword">end</span>
|
|
214
|
+
<span class="ruby-keyword">end</span>
|
|
215
|
+
<span class="ruby-identifier">token</span> = <span class="ruby-ivar">@lexer</span>.<span class="ruby-identifier">tokenize</span>(<span class="ruby-identifier">string</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">string</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
|
|
216
|
+
<span class="ruby-identifier">token</span> = <span class="ruby-identifier">string</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">string</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
|
|
217
|
+
<span class="ruby-keyword">while</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
218
|
+
|
|
219
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">state</span>
|
|
220
|
+
<span class="ruby-comment"># beginning state</span>
|
|
221
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">0</span>
|
|
222
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span>
|
|
223
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"SUM_OPERATOR"</span>
|
|
224
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">1</span>
|
|
225
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"VARIABLE"</span>
|
|
226
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
227
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"NUMBER"</span>
|
|
228
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
229
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"L_BRACE"</span>
|
|
230
|
+
<span class="ruby-identifier">sizer</span> = <span class="ruby-constant">Sizer</span>.<span class="ruby-identifier">new</span>
|
|
231
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">sizer</span>.<span class="ruby-identifier">analyze</span>(<span class="ruby-identifier">token</span>[(<span class="ruby-ivar">@i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>])
|
|
232
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sizer</span>.<span class="ruby-identifier">count</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
|
|
233
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
234
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"KEYWORD"</span>
|
|
235
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">me</span>
|
|
236
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"mx:"</span>
|
|
237
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">6</span>
|
|
238
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"integ:"</span>
|
|
239
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">7</span>
|
|
240
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"shwvar:"</span>
|
|
241
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">equal</span>
|
|
242
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">reduced</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
243
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
244
|
+
<span class="ruby-keyword">end</span>
|
|
245
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">5</span>
|
|
246
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"solve:"</span>
|
|
247
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">8</span>
|
|
248
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"f:"</span>
|
|
249
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">4</span>
|
|
250
|
+
<span class="ruby-keyword">else</span>
|
|
251
|
+
<span class="ruby-keyword">if</span> [<span class="ruby-string">"t:"</span>,<span class="ruby-string">"det:"</span>,<span class="ruby-string">"norm:"</span>,<span class="ruby-string">"id_mx:"</span>,<span class="ruby-string">"shw:"</span>].<span class="ruby-identifier">include?</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">me</span> <span class="ruby-keyword">then</span>
|
|
252
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">equal</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">me</span> <span class="ruby-operator">!=</span> <span class="ruby-string">"shw:"</span>
|
|
253
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">reduced</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
254
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
255
|
+
<span class="ruby-keyword">end</span>
|
|
256
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">3</span>
|
|
257
|
+
<span class="ruby-keyword">elsif</span> <span class="ruby-keyword">not</span> <span class="ruby-constant">Tool</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">me</span> <span class="ruby-keyword">then</span>
|
|
258
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">unknown</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
259
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
260
|
+
<span class="ruby-keyword">else</span>
|
|
261
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">reduced</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
262
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
263
|
+
<span class="ruby-keyword">end</span>
|
|
264
|
+
<span class="ruby-keyword">end</span>
|
|
265
|
+
<span class="ruby-keyword">else</span>
|
|
266
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">default</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
267
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
268
|
+
<span class="ruby-keyword">end</span>
|
|
269
|
+
|
|
270
|
+
<span class="ruby-comment"># expecting numbers,variables, keywords, (</span>
|
|
271
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">1</span>
|
|
272
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span>
|
|
273
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"NUMBER"</span>
|
|
274
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
275
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"VARIABLE"</span>
|
|
276
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
277
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"L_BRACE"</span>
|
|
278
|
+
<span class="ruby-identifier">sizer</span> = <span class="ruby-constant">Sizer</span>.<span class="ruby-identifier">new</span>
|
|
279
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">sizer</span>.<span class="ruby-identifier">analyze</span>(<span class="ruby-identifier">token</span>[(<span class="ruby-ivar">@i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>])
|
|
280
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sizer</span>.<span class="ruby-identifier">count</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
|
|
281
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
282
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"KEYWORD"</span>
|
|
283
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">me</span>
|
|
284
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"mx:"</span>
|
|
285
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">6</span>
|
|
286
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"integ:"</span>
|
|
287
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">7</span>
|
|
288
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"shwvar:"</span>
|
|
289
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">5</span>
|
|
290
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"solve:"</span>
|
|
291
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">8</span>
|
|
292
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"f:"</span>
|
|
293
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">4</span>
|
|
294
|
+
<span class="ruby-keyword">else</span>
|
|
295
|
+
<span class="ruby-keyword">if</span> [<span class="ruby-string">"t:"</span>,<span class="ruby-string">"det:"</span>,<span class="ruby-string">"norm:"</span>,<span class="ruby-string">"id_mx:"</span>].<span class="ruby-identifier">include?</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">me</span> <span class="ruby-keyword">then</span>
|
|
296
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">3</span>
|
|
297
|
+
<span class="ruby-keyword">elsif</span> <span class="ruby-keyword">not</span> <span class="ruby-constant">Tool</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">me</span> <span class="ruby-keyword">then</span>
|
|
298
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">unknown</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
299
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
300
|
+
<span class="ruby-keyword">else</span>
|
|
301
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">reduced</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
302
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
303
|
+
<span class="ruby-keyword">end</span>
|
|
304
|
+
<span class="ruby-keyword">end</span>
|
|
305
|
+
<span class="ruby-keyword">else</span>
|
|
306
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">default</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
307
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
308
|
+
<span class="ruby-keyword">end</span>
|
|
309
|
+
|
|
310
|
+
<span class="ruby-comment"># expecting operators, )</span>
|
|
311
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">2</span>
|
|
312
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span>
|
|
313
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"OPERATOR"</span>
|
|
314
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">1</span>
|
|
315
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"SUM_OPERATOR"</span>
|
|
316
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">1</span>
|
|
317
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"EQUAL_OP"</span>
|
|
318
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">equal</span>
|
|
319
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
320
|
+
<span class="ruby-identifier">sizer</span> = <span class="ruby-constant">Sizer</span>.<span class="ruby-identifier">new</span>
|
|
321
|
+
<span class="ruby-keyword">return</span> <span class="ruby-identifier">sizer</span>.<span class="ruby-identifier">analyze</span>(<span class="ruby-identifier">token</span>[(<span class="ruby-ivar">@i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>],<span class="ruby-keyword">false</span>)
|
|
322
|
+
<span class="ruby-keyword">end</span>
|
|
323
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missing_expression_after_equal</span>(<span class="ruby-ivar">@i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>,<span class="ruby-identifier">@@string</span>)
|
|
324
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
325
|
+
<span class="ruby-keyword">else</span>
|
|
326
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">default</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
327
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
328
|
+
<span class="ruby-keyword">end</span>
|
|
329
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"TO_FILE_OP"</span>
|
|
330
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">equal</span>
|
|
331
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">default</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
332
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
333
|
+
<span class="ruby-keyword">end</span>
|
|
334
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">4</span>
|
|
335
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"R_BRACE"</span>
|
|
336
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span>
|
|
337
|
+
<span class="ruby-keyword">else</span>
|
|
338
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">default</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
339
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
340
|
+
<span class="ruby-keyword">end</span>
|
|
341
|
+
|
|
342
|
+
<span class="ruby-comment"># expecting only variables or numbers</span>
|
|
343
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">3</span>
|
|
344
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span>
|
|
345
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"VARIABLE"</span>
|
|
346
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
347
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"NUMBER"</span>
|
|
348
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
349
|
+
<span class="ruby-keyword">else</span>
|
|
350
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">default</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
351
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
352
|
+
<span class="ruby-keyword">end</span>
|
|
353
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">5</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>].<span class="ruby-identifier">me</span> <span class="ruby-operator">==</span> <span class="ruby-string">"shw:"</span>
|
|
354
|
+
|
|
355
|
+
<span class="ruby-comment"># expects blocks (full chek) than nothing</span>
|
|
356
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">4</span>
|
|
357
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">check_block</span>(<span class="ruby-identifier">token</span>)
|
|
358
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">5</span>
|
|
359
|
+
|
|
360
|
+
<span class="ruby-comment"># expects nothing</span>
|
|
361
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">5</span>
|
|
362
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">default</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
363
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
364
|
+
|
|
365
|
+
<span class="ruby-comment"># checking mx arguments (full check)</span>
|
|
366
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">6</span>
|
|
367
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span>
|
|
368
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"KEYWORD"</span>
|
|
369
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">me</span> <span class="ruby-operator">==</span> <span class="ruby-string">"from:"</span> <span class="ruby-keyword">then</span>
|
|
370
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
371
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
372
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missing</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>],<span class="ruby-identifier">@@string</span>)
|
|
373
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
374
|
+
<span class="ruby-keyword">end</span>
|
|
375
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">check_block</span>(<span class="ruby-identifier">token</span>)
|
|
376
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
377
|
+
<span class="ruby-keyword">else</span>
|
|
378
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missmatch</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>,<span class="ruby-string">"keyword 'from:' or block"</span>)
|
|
379
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
380
|
+
<span class="ruby-keyword">end</span>
|
|
381
|
+
<span class="ruby-keyword">when</span> <span class="ruby-string">"QUOTES"</span>
|
|
382
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">check_block</span>(<span class="ruby-identifier">token</span>)
|
|
383
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
384
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"KEYWORD"</span> <span class="ruby-keyword">then</span>
|
|
385
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
386
|
+
<span class="ruby-comment"># unless @i < token.size</span>
|
|
387
|
+
<span class="ruby-comment"># PrintError.missing(token[@i-1],@@string)</span>
|
|
388
|
+
<span class="ruby-comment"># return false</span>
|
|
389
|
+
<span class="ruby-comment"># end</span>
|
|
390
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">me</span> <span class="ruby-operator">==</span> <span class="ruby-string">"as:"</span>
|
|
391
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missmatch</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>,<span class="ruby-string">"keyword 'as:' or operator"</span>)
|
|
392
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
393
|
+
<span class="ruby-keyword">end</span>
|
|
394
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
395
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
396
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missing_general_string</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>].<span class="ruby-identifier">position</span><span class="ruby-operator">+</span><span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>],<span class="ruby-identifier">@@string</span>)
|
|
397
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
398
|
+
<span class="ruby-keyword">end</span>
|
|
399
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"QUOTES"</span>
|
|
400
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">check_block</span>(<span class="ruby-identifier">token</span>)
|
|
401
|
+
<span class="ruby-keyword">else</span>
|
|
402
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"VARIABLE"</span>
|
|
403
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">default</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
404
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
405
|
+
<span class="ruby-keyword">end</span>
|
|
406
|
+
<span class="ruby-keyword">end</span>
|
|
407
|
+
<span class="ruby-keyword">end</span>
|
|
408
|
+
<span class="ruby-keyword">end</span>
|
|
409
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
410
|
+
<span class="ruby-keyword">end</span>
|
|
411
|
+
|
|
412
|
+
<span class="ruby-comment"># checking integ arguments (full check)</span>
|
|
413
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">7</span>
|
|
414
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
415
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missing</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>],<span class="ruby-identifier">@@string</span>)
|
|
416
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
417
|
+
<span class="ruby-keyword">end</span>
|
|
418
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"QUOTES"</span> <span class="ruby-keyword">then</span>
|
|
419
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">check_block</span>(<span class="ruby-identifier">token</span>)
|
|
420
|
+
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">!=</span> <span class="ruby-string">"VARIABLE"</span> <span class="ruby-keyword">then</span>
|
|
421
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missmatch</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>,<span class="ruby-string">"variable or block"</span>)
|
|
422
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
423
|
+
<span class="ruby-keyword">end</span>
|
|
424
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
425
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
426
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missing_integ_range</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>].<span class="ruby-identifier">position</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>,<span class="ruby-identifier">@@string</span>)
|
|
427
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
428
|
+
<span class="ruby-keyword">end</span>
|
|
429
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">check_block</span>(<span class="ruby-identifier">token</span>)
|
|
430
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
431
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
432
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">numPoint_missing</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>].<span class="ruby-identifier">position</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>,<span class="ruby-identifier">@@string</span>)
|
|
433
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
434
|
+
<span class="ruby-keyword">end</span>
|
|
435
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
436
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"QUOTES"</span> <span class="ruby-keyword">then</span>
|
|
437
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
438
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">check_block</span>(<span class="ruby-identifier">token</span>)
|
|
439
|
+
<span class="ruby-keyword">end</span>
|
|
440
|
+
<span class="ruby-keyword">end</span>
|
|
441
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
442
|
+
|
|
443
|
+
<span class="ruby-comment"># checking solve args (full check) </span>
|
|
444
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">8</span>
|
|
445
|
+
<span class="ruby-identifier">inner_state</span> = <span class="ruby-value">0</span>
|
|
446
|
+
<span class="ruby-keyword">while</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"EQUALS_TO"</span>) <span class="ruby-keyword">and</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
447
|
+
<span class="ruby-keyword">case</span> <span class="ruby-identifier">inner_state</span>
|
|
448
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">0</span>
|
|
449
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"VARIABLE"</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"NUMBER"</span> <span class="ruby-keyword">then</span>
|
|
450
|
+
<span class="ruby-identifier">inner_state</span> = <span class="ruby-value">1</span>
|
|
451
|
+
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"L_BRACE"</span>
|
|
452
|
+
<span class="ruby-identifier">sizer</span> = <span class="ruby-constant">Sizer</span>.<span class="ruby-identifier">new</span>
|
|
453
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">sizer</span>.<span class="ruby-identifier">analyze</span>(<span class="ruby-identifier">token</span>[(<span class="ruby-ivar">@i</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>])
|
|
454
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sizer</span>.<span class="ruby-identifier">count</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
|
|
455
|
+
<span class="ruby-keyword">else</span>
|
|
456
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">unexpected_token_in_solve</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
457
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
458
|
+
<span class="ruby-keyword">end</span>
|
|
459
|
+
<span class="ruby-keyword">when</span> <span class="ruby-value">1</span>
|
|
460
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"OPERATOR"</span> <span class="ruby-keyword">then</span>
|
|
461
|
+
<span class="ruby-identifier">inner_state</span> = <span class="ruby-value">0</span>
|
|
462
|
+
<span class="ruby-keyword">else</span>
|
|
463
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">unexpected_token_in_solve</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>)
|
|
464
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
465
|
+
<span class="ruby-keyword">end</span>
|
|
466
|
+
<span class="ruby-keyword">end</span>
|
|
467
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
468
|
+
<span class="ruby-keyword">end</span>
|
|
469
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-value">1</span>
|
|
470
|
+
<span class="ruby-keyword">end</span>
|
|
471
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
472
|
+
<span class="ruby-keyword">end</span>
|
|
473
|
+
|
|
474
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">state</span> <span class="ruby-operator">==</span> <span class="ruby-value">2</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">state</span> <span class="ruby-operator">==</span> <span class="ruby-value">5</span>
|
|
475
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"R_BRACE"</span> <span class="ruby-keyword">then</span>
|
|
476
|
+
<span class="ruby-identifier">tk</span> = <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">2</span>]
|
|
477
|
+
<span class="ruby-keyword">else</span>
|
|
478
|
+
<span class="ruby-identifier">tk</span> = <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>]
|
|
479
|
+
<span class="ruby-keyword">end</span>
|
|
480
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missing</span>(<span class="ruby-identifier">tk</span>,<span class="ruby-identifier">@@string</span>)
|
|
481
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
482
|
+
<span class="ruby-keyword">end</span>
|
|
483
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span>
|
|
484
|
+
<span class="ruby-keyword">end</span></pre>
|
|
485
|
+
</div>
|
|
486
|
+
|
|
487
|
+
</div>
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
</div>
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
<div id="method-i-count" class="method-detail ">
|
|
496
|
+
|
|
497
|
+
<div class="method-heading">
|
|
498
|
+
<span class="method-name">count</span><span
|
|
499
|
+
class="method-args">()</span>
|
|
500
|
+
|
|
501
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
502
|
+
|
|
503
|
+
</div>
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
<div class="method-description">
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
<div class="method-source-code" id="count-source">
|
|
514
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Sizer.rb, line 312</span>
|
|
515
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">count</span>
|
|
516
|
+
<span class="ruby-keyword">return</span> <span class="ruby-ivar">@i</span>
|
|
517
|
+
<span class="ruby-keyword">end</span></pre>
|
|
518
|
+
</div>
|
|
519
|
+
|
|
520
|
+
</div>
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
</div>
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
</section>
|
|
529
|
+
|
|
530
|
+
<section id="private-instance-5Buntitled-5D-method-details" class="method-section">
|
|
531
|
+
<header>
|
|
532
|
+
<h3>Private Instance Methods</h3>
|
|
533
|
+
</header>
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
<div id="method-i-balanced_brackets-3F" class="method-detail ">
|
|
537
|
+
|
|
538
|
+
<div class="method-heading">
|
|
539
|
+
<span class="method-name">balanced_brackets?</span><span
|
|
540
|
+
class="method-args">(exp)</span>
|
|
541
|
+
|
|
542
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
543
|
+
|
|
544
|
+
</div>
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
<div class="method-description">
|
|
548
|
+
|
|
549
|
+
<p>checks if the input expression has balanced brackets</p>
|
|
550
|
+
<ul><li>
|
|
551
|
+
<p>*<strong>argument</strong>*: expression (string) to check</p>
|
|
552
|
+
</li><li>
|
|
553
|
+
<p>*<strong>returns</strong>*: <code>true</code> if brackets are balanced;
|
|
554
|
+
<code>false</code> else</p>
|
|
555
|
+
</li></ul>
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
<div class="method-source-code" id="balanced_brackets-3F-source">
|
|
561
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Sizer.rb, line 322</span>
|
|
562
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">balanced_brackets?</span>(<span class="ruby-identifier">exp</span>)
|
|
563
|
+
<span class="ruby-identifier">open_b</span> = <span class="ruby-value">0</span>
|
|
564
|
+
<span class="ruby-keyword">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword">in</span> <span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-identifier">exp</span>.<span class="ruby-identifier">size</span>
|
|
565
|
+
<span class="ruby-identifier">open_b</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">exp</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">==</span> <span class="ruby-string">"("</span>
|
|
566
|
+
<span class="ruby-identifier">open_b</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">exp</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">==</span> <span class="ruby-string">")"</span>
|
|
567
|
+
<span class="ruby-keyword">end</span>
|
|
568
|
+
<span class="ruby-identifier">open_b</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> (<span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span>) <span class="ruby-operator">:</span> (<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>)
|
|
569
|
+
<span class="ruby-keyword">end</span></pre>
|
|
570
|
+
</div>
|
|
571
|
+
|
|
572
|
+
</div>
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
</div>
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
<div id="method-i-check_block" class="method-detail ">
|
|
581
|
+
|
|
582
|
+
<div class="method-heading">
|
|
583
|
+
<span class="method-name">check_block</span><span
|
|
584
|
+
class="method-args">(token)</span>
|
|
585
|
+
|
|
586
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
587
|
+
|
|
588
|
+
</div>
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
<div class="method-description">
|
|
592
|
+
|
|
593
|
+
<p>Checks the sintax of a block, that is: QUOTES-STRING-QUOTES</p>
|
|
594
|
+
<ul><li>
|
|
595
|
+
<p>*<strong>argument</strong>*: stream of tokens</p>
|
|
596
|
+
</li><li>
|
|
597
|
+
<p>*<strong>returns</strong>*: <code>true</code> if the sintax is correct;
|
|
598
|
+
<code>false</code> else</p>
|
|
599
|
+
</li></ul>
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
<div class="method-source-code" id="check_block-source">
|
|
605
|
+
<pre><span class="ruby-comment"># File lib/linmeric/Sizer.rb, line 335</span>
|
|
606
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">check_block</span>(<span class="ruby-identifier">token</span>)
|
|
607
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"QUOTES"</span> <span class="ruby-keyword">then</span>
|
|
608
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missmatch</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>,<span class="ruby-string">"quotes for block"</span>)
|
|
609
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
610
|
+
<span class="ruby-keyword">end</span>
|
|
611
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
612
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
613
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missing_general_string</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>].<span class="ruby-identifier">position</span><span class="ruby-operator">+</span><span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>].<span class="ruby-identifier">me</span>.<span class="ruby-identifier">size</span>,<span class="ruby-identifier">@@string</span>,)
|
|
614
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
615
|
+
<span class="ruby-keyword">end</span>
|
|
616
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"GENERAL_STRING"</span> <span class="ruby-keyword">then</span>
|
|
617
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missmatch</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>,<span class="ruby-string">"block argument"</span>)
|
|
618
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
619
|
+
<span class="ruby-keyword">end</span>
|
|
620
|
+
<span class="ruby-ivar">@i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
621
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
622
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">no_final_quotes</span>(<span class="ruby-identifier">@@string</span>,<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>].<span class="ruby-identifier">position</span><span class="ruby-operator">+</span><span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>].<span class="ruby-identifier">me</span>.<span class="ruby-identifier">size</span>)
|
|
623
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
624
|
+
<span class="ruby-keyword">end</span>
|
|
625
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>].<span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-string">"QUOTES"</span> <span class="ruby-keyword">then</span>
|
|
626
|
+
<span class="ruby-constant">PrintError</span>.<span class="ruby-identifier">missmatch</span>(<span class="ruby-identifier">token</span>[<span class="ruby-ivar">@i</span>],<span class="ruby-identifier">@@string</span>,<span class="ruby-string">"quotes for block"</span>)
|
|
627
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
628
|
+
<span class="ruby-keyword">end</span>
|
|
629
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span>
|
|
630
|
+
<span class="ruby-keyword">end</span></pre>
|
|
631
|
+
</div>
|
|
632
|
+
|
|
633
|
+
</div>
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
</div>
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
</section>
|
|
642
|
+
|
|
643
|
+
</section>
|
|
644
|
+
</main>
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
<footer id="validator-badges" role="contentinfo">
|
|
648
|
+
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
|
649
|
+
<p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.0.
|
|
650
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
|
651
|
+
</footer>
|
|
652
|
+
|