aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2022-02-08 09:37:28 +0800
committerLi Jin <dragon-fly@qq.com>2022-02-08 09:37:28 +0800
commitd22ae154b57ac80107020e98f04f76fffaa9cd90 (patch)
tree17da62ceeed4d736bef5c04d328015c4350df92d
parentb933fbfce34e9afc798e6882a96586b496ac432f (diff)
downloadyuescript-d22ae154b57ac80107020e98f04f76fffaa9cd90.tar.gz
yuescript-d22ae154b57ac80107020e98f04f76fffaa9cd90.tar.bz2
yuescript-d22ae154b57ac80107020e98f04f76fffaa9cd90.zip
fix issue #76.
-rw-r--r--spec/inputs/import.yue7
-rw-r--r--spec/outputs/import.lua12
-rwxr-xr-xsrc/yuescript/yue_compiler.cpp2
-rwxr-xr-xsrc/yuescript/yue_parser.cpp4
4 files changed, 22 insertions, 3 deletions
diff --git a/spec/inputs/import.yue b/spec/inputs/import.yue
index 6330bcb..8e82a01 100644
--- a/spec/inputs/import.yue
+++ b/spec/inputs/import.yue
@@ -67,3 +67,10 @@ do
67 67
68do 68do
69 import "org.package.module" as function:func, if:ifVar 69 import "org.package.module" as function:func, if:ifVar
70
71do
72 import "m" as {a#: b}
73 import "m" as {e: f, a#: b}
74 import "m" as {c: d}
75 import "m" as {g, {h#: i}}
76
diff --git a/spec/outputs/import.lua b/spec/outputs/import.lua
index 02e210b..65e703f 100644
--- a/spec/outputs/import.lua
+++ b/spec/outputs/import.lua
@@ -90,3 +90,15 @@ do
90 func, ifVar = _obj_0["function"], _obj_0["if"] 90 func, ifVar = _obj_0["function"], _obj_0["if"]
91 end 91 end
92end 92end
93do
94 b = getmetatable(require("m")).__a
95 local _obj_0 = require("m")
96 local f = _obj_0.e
97 b = getmetatable(_obj_0).__a
98 local d = require("m").c
99 local g, i
100 do
101 local _obj_1 = require("m")
102 g, i = _obj_1[1], getmetatable(_obj_1[2]).__h
103 end
104end
diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp
index 3852f32..2da72da 100755
--- a/src/yuescript/yue_compiler.cpp
+++ b/src/yuescript/yue_compiler.cpp
@@ -60,7 +60,7 @@ using namespace parserlib;
60 60
61typedef std::list<std::string> str_list; 61typedef std::list<std::string> str_list;
62 62
63const std::string_view version = "0.9.5"sv; 63const std::string_view version = "0.9.6"sv;
64const std::string_view extension = "yue"sv; 64const std::string_view extension = "yue"sv;
65 65
66class YueCompilerImpl { 66class YueCompilerImpl {
diff --git a/src/yuescript/yue_parser.cpp b/src/yuescript/yue_parser.cpp
index 772fc2f..e171f3f 100755
--- a/src/yuescript/yue_parser.cpp
+++ b/src/yuescript/yue_parser.cpp
@@ -195,7 +195,7 @@ YueParser::YueParser() {
195 195
196 macro_name_pair = Space >> MacroName >> Space >> symx(':') >> Space >> MacroName; 196 macro_name_pair = Space >> MacroName >> Space >> symx(':') >> Space >> MacroName;
197 import_all_macro = expr('$'); 197 import_all_macro = expr('$');
198 ImportTabItem = variable_pair | normal_pair | sym(':') >> MacroName | macro_name_pair | Space >> import_all_macro | Exp; 198 ImportTabItem = variable_pair | normal_pair | sym(':') >> MacroName | macro_name_pair | Space >> import_all_macro | meta_variable_pair | meta_normal_pair | Exp;
199 ImportTabList = ImportTabItem >> *(sym(',') >> ImportTabItem); 199 ImportTabList = ImportTabItem >> *(sym(',') >> ImportTabItem);
200 ImportTabLine = ( 200 ImportTabLine = (
201 PushIndent >> (ImportTabList >> PopIndent | PopIndent) 201 PushIndent >> (ImportTabList >> PopIndent | PopIndent)
@@ -542,7 +542,7 @@ YueParser::YueParser() {
542 meta_normal_pair = Space >> -(Name | symx('[') >> Exp >> sym(']')) >> expr("#:") >> 542 meta_normal_pair = Space >> -(Name | symx('[') >> Exp >> sym(']')) >> expr("#:") >>
543 (Exp | TableBlock | +(SpaceBreak) >> Exp); 543 (Exp | TableBlock | +(SpaceBreak) >> Exp);
544 544
545 meta_default_pair = (sym(':') >> Variable >> expr('#') >> Seperator | -Name >> expr("#:") >> Seperator >> Exp) >> sym('=') >> Exp; 545 meta_default_pair = (sym(':') >> Variable >> expr('#') >> Seperator | Space >> -Name >> expr("#:") >> Seperator >> Exp) >> sym('=') >> Exp;
546 546
547 KeyValue = variable_pair | normal_pair | meta_variable_pair | meta_normal_pair; 547 KeyValue = variable_pair | normal_pair | meta_variable_pair | meta_normal_pair;
548 KeyValueList = KeyValue >> *(sym(',') >> KeyValue); 548 KeyValueList = KeyValue >> *(sym(',') >> KeyValue);