Revision | 2745ab232133cb6f576b58da06dc2f5177b59a90 (tree) |
---|---|
Zeit | 2015-11-06 10:26:34 |
Autor | MirrgieRiana |
Commiter | MirrgieRiana |
mirrg.compile.lithiumbromide: 長いブロックコメントを使用するとStackOverflowになる問題を修正
@@ -55,7 +55,7 @@ | ||
55 | 55 | or((Class<ArrayList<?>>) null) |
56 | 56 | .or(HBromine.regex("[ \\t\\r\\n]+", tag -> null)) |
57 | 57 | .or(HBromine.regex("//[^\\r\\n]*", tag -> null)) |
58 | - .or(HBromine.regex("/\\*(.|[\\r\\n])*?\\*/", tag -> null)), | |
58 | + .or(HBromine.regex("(?s)/\\*.*?\\*/", tag -> null)), | |
59 | 59 | (node, index, child) -> {} , (node, index) -> {}); |
60 | 60 | |
61 | 61 | Syntax<NodeString> syntaxString = h.regex("'([^\\']|\\.)*'", |
@@ -190,6 +190,19 @@ | ||
190 | 190 | "1 + 2", |
191 | 191 | 3, 0, 0.001); |
192 | 192 | |
193 | + { | |
194 | + String string = ""; | |
195 | + | |
196 | + for (int i = 0; i < 1000; i++) { | |
197 | + string += "AAAAAAAAAAAAAAAAAA"; | |
198 | + } | |
199 | + | |
200 | + assert1(compiler, | |
201 | + "1+/*" + string + "*/2", | |
202 | + "1 + 2", | |
203 | + 3, 0, 0.001); | |
204 | + } | |
205 | + | |
193 | 206 | assert1(compiler, |
194 | 207 | "1+/* \r\n */2", |
195 | 208 | "1 + 2", |
@@ -2,7 +2,7 @@ | ||
2 | 2 | // コメント |
3 | 3 | comment := { "[ \t\r\n]+" |
4 | 4 | | "//[^\r\n]*" |
5 | - | "/\*(.|[\r\n])*?\*/" | |
5 | + | "(?s)/\*.*?\*/" | |
6 | 6 | }; |
7 | 7 | |
8 | 8 | // リテラル |