aboutsummaryrefslogtreecommitdiff
path: root/MoonParser/moon_parser.cpp
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2019-09-12 16:12:20 +0800
committerLi Jin <dragon-fly@qq.com>2019-09-12 16:12:20 +0800
commit50353c1456324e7bd3c130fceaf400aed7880a41 (patch)
tree0afe5823040dc9fc9ab39a9d7f4af647c061d7c1 /MoonParser/moon_parser.cpp
parent4e6f4e8124316866a08f9ddf3322fde87abc3c21 (diff)
downloadyuescript-50353c1456324e7bd3c130fceaf400aed7880a41.tar.gz
yuescript-50353c1456324e7bd3c130fceaf400aed7880a41.tar.bz2
yuescript-50353c1456324e7bd3c130fceaf400aed7880a41.zip
spec/assign.moon and spec/bubbling.moon compiled
Diffstat (limited to 'MoonParser/moon_parser.cpp')
-rw-r--r--MoonParser/moon_parser.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/MoonParser/moon_parser.cpp b/MoonParser/moon_parser.cpp
index 7731513..ae8c53d 100644
--- a/MoonParser/moon_parser.cpp
+++ b/MoonParser/moon_parser.cpp
@@ -1,5 +1,13 @@
1#include "moon_parser.h" 1#include "moon_parser.h"
2 2
3std::unordered_set<std::string> State::keywords = {
4 "and", "while", "else", "using", "continue",
5 "local", "not", "then", "return", "from",
6 "extends", "for", "do", "or", "export",
7 "class", "in", "unless", "when", "elseif",
8 "switch", "break", "if", "with", "import", "true", "false", "nil"
9};
10
3rule plain_space = *set(" \t"); 11rule plain_space = *set(" \t");
4rule Break = nl(-expr('\r') >> '\n'); 12rule Break = nl(-expr('\r') >> '\n');
5rule Any = Break | any(); 13rule Any = Break | any();
@@ -185,7 +193,9 @@ rule For = key("for") >> DisableDo >>
185 193
186extern rule AssignableNameList; 194extern rule AssignableNameList;
187 195
188rule for_in = sym('*') >> Exp | ExpList; 196extern rule star_exp;
197
198rule for_in = star_exp | ExpList;
189 199
190rule ForEach = key("for") >> AssignableNameList >> key("in") >> 200rule ForEach = key("for") >> AssignableNameList >> key("in") >>
191 DisableDo >> ensure(for_in, PopDo) >> 201 DisableDo >> ensure(for_in, PopDo) >>