teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2019/12/14 04:45

投稿

asm
asm

スコア15149

answer CHANGED
@@ -14,4 +14,32 @@
14
14
  ---
15
15
 
16
16
  - rule(:chars)に`str("")`が混じっているとrepeatした時無限にメモリを食い潰します。
17
- - `match`は1文字以上にマッチさせる事はできません。
17
+ - `match`は1文字以上にマッチさせる事はできません。
18
+
19
+
20
+ ---
21
+
22
+ まずは、小さなテストからやってみるべきです。
23
+
24
+ ```ruby
25
+ np = NumericParser.new
26
+ np.integer.parse %(123)
27
+ np.string.parse %("aiueo")
28
+ np.func.parse %(print(123))
29
+ np.func.parse %(print("aiueo"))
30
+ np.parse <<CODE
31
+ print{
32
+ print("aiueo")
33
+ }
34
+ CODE
35
+ ```
36
+
37
+ これで、どこが間違ったルールなのか分かるかと思います。
38
+
39
+ funcだけはちょっと面倒なので答えておきます。
40
+
41
+ ```ruby
42
+ rule(:func) {
43
+ idens.map{|f| str(f)}.inject(:|) >> block
44
+ }
45
+ ```

1

追記

2019/12/14 04:44

投稿

asm
asm

スコア15149

answer CHANGED
@@ -9,4 +9,9 @@
9
9
  }
10
10
  ```
11
11
 
12
- 空行で死にませんか?
12
+ 空行で死にませんか?
13
+
14
+ ---
15
+
16
+ - rule(:chars)に`str("")`が混じっているとrepeatした時無限にメモリを食い潰します。
17
+ - `match`は1文字以上にマッチさせる事はできません。