回答編集履歴

2

追記

2019/12/14 04:45

投稿

asm
asm

スコア15149

test CHANGED
@@ -31,3 +31,59 @@
31
31
  - rule(:chars)に`str("")`が混じっているとrepeatした時無限にメモリを食い潰します。
32
32
 
33
33
  - `match`は1文字以上にマッチさせる事はできません。
34
+
35
+
36
+
37
+
38
+
39
+ ---
40
+
41
+
42
+
43
+ まずは、小さなテストからやってみるべきです。
44
+
45
+
46
+
47
+ ```ruby
48
+
49
+ np = NumericParser.new
50
+
51
+ np.integer.parse %(123)
52
+
53
+ np.string.parse %("aiueo")
54
+
55
+ np.func.parse %(print(123))
56
+
57
+ np.func.parse %(print("aiueo"))
58
+
59
+ np.parse <<CODE
60
+
61
+ print{
62
+
63
+ print("aiueo")
64
+
65
+ }
66
+
67
+ CODE
68
+
69
+ ```
70
+
71
+
72
+
73
+ これで、どこが間違ったルールなのか分かるかと思います。
74
+
75
+
76
+
77
+ funcだけはちょっと面倒なので答えておきます。
78
+
79
+
80
+
81
+ ```ruby
82
+
83
+ rule(:func) {
84
+
85
+ idens.map{|f| str(f)}.inject(:|) >> block
86
+
87
+ }
88
+
89
+ ```

1

追記

2019/12/14 04:44

投稿

asm
asm

スコア15149

test CHANGED
@@ -21,3 +21,13 @@
21
21
 
22
22
 
23
23
  空行で死にませんか?
24
+
25
+
26
+
27
+ ---
28
+
29
+
30
+
31
+ - rule(:chars)に`str("")`が混じっているとrepeatした時無限にメモリを食い潰します。
32
+
33
+ - `match`は1文字以上にマッチさせる事はできません。