aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2021-02-09 16:23:15 +0800
committerLi Jin <dragon-fly@qq.com>2021-02-09 16:23:15 +0800
commit9f622c5bbd9cfb7e66a9fd3c371461af4249d566 (patch)
tree72a9157ca752b629dde288f4d2b97a072b7e0d5f
parent4b5b9181d484607b6eeeda2608ff6483647222a9 (diff)
downloadyuescript-9f622c5bbd9cfb7e66a9fd3c371461af4249d566.tar.gz
yuescript-9f622c5bbd9cfb7e66a9fd3c371461af4249d566.tar.bz2
yuescript-9f622c5bbd9cfb7e66a9fd3c371461af4249d566.zip
partially fix another issue from issue #38.
-rw-r--r--spec/inputs/syntax.mp16
-rw-r--r--src/MoonP/moon_ast.h2
-rw-r--r--src/MoonP/moon_compiler.cpp3
-rw-r--r--src/MoonP/moon_parser.cpp3
4 files changed, 21 insertions, 3 deletions
diff --git a/spec/inputs/syntax.mp b/spec/inputs/syntax.mp
index 1bb962f..c8ad96d 100644
--- a/spec/inputs/syntax.mp
+++ b/spec/inputs/syntax.mp
@@ -82,6 +82,22 @@ something [[else]], 2
82 82
83_ = here(we)"go"[12123] 83_ = here(we)"go"[12123]
84 84
85split"abc xyz 123"\map"#"\printAll!
86
87_ = f""[a]
88_ = f""\b!
89_ = f"".c!
90
91f ""[a]
92f ""\b!
93f "".c!
94
95list{"abc", "xyz", "123"}\map"#"\printAll!
96
97_ = f{}[a]
98_ = f{}\b!
99_ = f{}.c!
100
85-- this runs 101-- this runs
86something = 102something =
87 test: 12323 103 test: 12323
diff --git a/src/MoonP/moon_ast.h b/src/MoonP/moon_ast.h
index c426ef7..d00d855 100644
--- a/src/MoonP/moon_ast.h
+++ b/src/MoonP/moon_ast.h
@@ -506,7 +506,7 @@ AST_END(Parens)
506 506
507AST_NODE(Invoke) 507AST_NODE(Invoke)
508 ast_ptr<true, Seperator_t> sep; 508 ast_ptr<true, Seperator_t> sep;
509 ast_sel_list<false, Exp_t, SingleString_t, DoubleString_t, LuaString_t> args; 509 ast_sel_list<false, Exp_t, SingleString_t, DoubleString_t, LuaString_t, TableLit_t> args;
510 AST_MEMBER(Invoke, &sep, &args) 510 AST_MEMBER(Invoke, &sep, &args)
511AST_END(Invoke) 511AST_END(Invoke)
512 512
diff --git a/src/MoonP/moon_compiler.cpp b/src/MoonP/moon_compiler.cpp
index 09185ce..73bbd60 100644
--- a/src/MoonP/moon_compiler.cpp
+++ b/src/MoonP/moon_compiler.cpp
@@ -53,7 +53,7 @@ inline std::string s(std::string_view sv) {
53 return std::string(sv); 53 return std::string(sv);
54} 54}
55 55
56const std::string_view version = "0.5.1"sv; 56const std::string_view version = "0.5.2"sv;
57const std::string_view extension = "mp"sv; 57const std::string_view extension = "mp"sv;
58 58
59class MoonCompilerImpl { 59class MoonCompilerImpl {
@@ -3439,6 +3439,7 @@ private:
3439 case id<SingleString_t>(): transformSingleString(static_cast<SingleString_t*>(arg), temp); break; 3439 case id<SingleString_t>(): transformSingleString(static_cast<SingleString_t*>(arg), temp); break;
3440 case id<DoubleString_t>(): transformDoubleString(static_cast<DoubleString_t*>(arg), temp); break; 3440 case id<DoubleString_t>(): transformDoubleString(static_cast<DoubleString_t*>(arg), temp); break;
3441 case id<LuaString_t>(): transformLuaString(static_cast<LuaString_t*>(arg), temp); break; 3441 case id<LuaString_t>(): transformLuaString(static_cast<LuaString_t*>(arg), temp); break;
3442 case id<TableLit_t>(): transformTableLit(static_cast<TableLit_t*>(arg), temp); break;
3442 default: assert(false); break; 3443 default: assert(false); break;
3443 } 3444 }
3444 } 3445 }
diff --git a/src/MoonP/moon_parser.cpp b/src/MoonP/moon_parser.cpp
index 6c1382d..63ffec7 100644
--- a/src/MoonP/moon_parser.cpp
+++ b/src/MoonP/moon_parser.cpp
@@ -412,7 +412,8 @@ MoonParser::MoonParser() {
412 FnArgs | 412 FnArgs |
413 SingleString | 413 SingleString |
414 DoubleString | 414 DoubleString |
415 and_(expr('[')) >> LuaString); 415 and_(expr('[')) >> LuaString |
416 and_(expr('{')) >> TableLit);
416 417
417 TableValue = KeyValue | Exp; 418 TableValue = KeyValue | Exp;
418 419