質問編集履歴

3

hh

2019/12/14 04:53

投稿

light180
light180

スコア161

test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  どなたか、ご教示いただけると、嬉しいです。
4
4
 
5
+
6
+
7
+ > 追記、解決しました。@asmさん、ありがとうございます。
8
+
5
9
  ```Error
6
10
 
7
11
  Traceback (most recent call last):
@@ -18,6 +22,22 @@
18
22
 
19
23
 
20
24
 
25
+ 以下、新しいエラーです。
26
+
27
+ ```
28
+
29
+ Traceback (most recent call last):
30
+
31
+ 2: from temp.rb:64:in `<main>'
32
+
33
+ 1: from /Library/Ruby/Gems/2.6.0/gems/parslet-1.8.2/lib/parslet/atoms/base.rb:49:in `parse'
34
+
35
+ /Library/Ruby/Gems/2.6.0/gems/parslet-1.8.2/lib/parslet/cause.rb:70:in `raise': Extra input after last repetition at line 2 char 1. (Parslet::ParseFailed)
36
+
37
+ ```
38
+
39
+
40
+
21
41
  ```parser.rb
22
42
 
23
43
  require 'parslet'
@@ -64,7 +84,7 @@
64
84
 
65
85
  rule(:integer) {
66
86
 
67
- match("[0-9]")
87
+ match("[0-9]").repeat(1)
68
88
 
69
89
  }
70
90
 
@@ -88,7 +108,7 @@
88
108
 
89
109
  rule(:func) {
90
110
 
91
- match("#{idens.join(" | ")}") >> block
111
+ idens.map{|f| str(f)}.inject(:|) >> block
92
112
 
93
113
  }
94
114
 

2

追加

2019/12/14 04:53

投稿

light180
light180

スコア161

test CHANGED
File without changes
test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  rule(:sprt?){ (return_mark | space).repeat(0)}
44
44
 
45
- rule(:chars){ str("!") | str("#") | str("$") | str("%") | str("&") | str("") | str("(") | str(")") | str("*") | str("+") | str(",") | str("-") | str(".") | str("/") | str("0") | match("[0-9]") | str(":") | str(";") | str("<") | str("=") | str(">") | str("?") | str("@") | match("[A-Z]") | str("[") | str("\") | str("]") | str("^") | str("_") | str("`") | match("[a-z]") | str("{") | str("|") | str("}") | str("~") | str("\\"") }
45
+ rule(:chars){ str("a") | str("b") | str("c") | str("d") | str("e") | str("f") | str("g") | str("h") | str("i") | str("j") | str("k") | str("l") | str("m") | str("n") | str("o") | str("p") | str("q") | str("r") | str("s") | str("t") | str("u") | str("v") | str("w") | str("x") | str("y") | str("z") | str("A") | str("B") | str("C") | str("D") | str("E") | str("F") | str("G") | str("H") | str("I") | str("J") | str("K") | str("L") | str("M") | str("N") | str("O") | str("P") | str("Q") | str("R") | str("S") | str("T") | str("U") | str("V") | str("W") | str("X") | str("Y") | str("Z") | str("0") | str("1") | str("2") | str("3") | str("4") | str("5") | str("6") | str("7") | str("8") | str("9") | str(" ") | str("!") | str("\\"") | str("#") | str("$") | str("%") | str("&") | str("\'") | str("(") | str(")") | str("-") | str("^") | str("@") | str("[") | str(";") | str(":") | str("]") | str(",") | str(".") | str("/") | str("\\") | str("=") | str("~") | str("|") | str("`") | str("{") | str("+") | str("*") | str("}") | str("<") | str(">") | str("?") | str("_") | str("\n") | str("\s") | str("\t") }
46
46
 
47
47
 
48
48
 
@@ -88,7 +88,7 @@
88
88
 
89
89
  rule(:func) {
90
90
 
91
- match("#{idens.join("|")}") >> block
91
+ match("#{idens.join(" | ")}") >> block
92
92
 
93
93
  }
94
94
 
@@ -146,6 +146,44 @@
146
146
 
147
147
  f.close
148
148
 
149
- NumericParser.new.parse(code.join("\n"))
149
+ NumericParser.new.parse(code.join("\n")+"\n")
150
150
 
151
151
  ```
152
+
153
+
154
+
155
+ テストデータです。
156
+
157
+ ```
158
+
159
+ 123
160
+
161
+ ```
162
+
163
+
164
+
165
+ ```
166
+
167
+ print(123)
168
+
169
+ ```
170
+
171
+
172
+
173
+ ```
174
+
175
+ print("aiueo")
176
+
177
+ ```
178
+
179
+
180
+
181
+ ```
182
+
183
+ print{
184
+
185
+ print("aiueo")
186
+
187
+ }
188
+
189
+ ```

1

修正

2019/12/14 03:50

投稿

light180
light180

スコア161

test CHANGED
File without changes
test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  rule(:line) {
82
82
 
83
- func | assign | value
83
+ func | assign | value | sprt?
84
84
 
85
85
  }
86
86