回答編集履歴
3
追記
answer
CHANGED
@@ -19,4 +19,6 @@
|
|
19
19
|
0. while loop に入って token に put が入り、result は
|
20
20
|
result = [:put,1.0,factor] となります
|
21
21
|
0. そのfactor は "a" を返すので result = [:put,1.0,"a"] が3の結果です
|
22
|
-
0. よって1の結果は [:eq,1, [:put,1.0,"a"]]
|
22
|
+
0. よって1の結果は [:eq,1, [:put,1.0,"a"]]
|
23
|
+
|
24
|
+
ということで、二項演算の二項目の処理を考えてください
|
2
追記
answer
CHANGED
@@ -9,4 +9,14 @@
|
|
9
9
|
としてまず頭の空白を削除してみてください
|
10
10
|
|
11
11
|
追記
|
12
|
-
put が消えてしまうのは、空白の処理で解決しますが、思った通りの結果にならないのは expression の二項演算の処理がうまく行っていないようです。そこを見なおしてください
|
12
|
+
put が消えてしまうのは、空白の処理で解決しますが、思った通りの結果にならないのは expression の二項演算の処理がうまく行っていないようです。そこを見なおしてください
|
13
|
+
|
14
|
+
追記2
|
15
|
+
ではもう少し
|
16
|
+
0. expressionで:eq を見つけて result = [:eq, result, term] が実行されます
|
17
|
+
つまり [:eq, 1.0,term]
|
18
|
+
0. その term の入り口で result = factor にて ==の後ろの1が入り result=1.0
|
19
|
+
0. while loop に入って token に put が入り、result は
|
20
|
+
result = [:put,1.0,factor] となります
|
21
|
+
0. そのfactor は "a" を返すので result = [:put,1.0,"a"] が3の結果です
|
22
|
+
0. よって1の結果は [:eq,1, [:put,1.0,"a"]]
|
1
追記
answer
CHANGED
@@ -6,4 +6,7 @@
|
|
6
6
|
def get_token()
|
7
7
|
@scanner.scan(/\A\s*/)
|
8
8
|
```
|
9
|
-
としてまず頭の空白を削除してみてください
|
9
|
+
としてまず頭の空白を削除してみてください
|
10
|
+
|
11
|
+
追記
|
12
|
+
put が消えてしまうのは、空白の処理で解決しますが、思った通りの結果にならないのは expression の二項演算の処理がうまく行っていないようです。そこを見なおしてください
|