diff options
author | Li Jin <dragon-fly@qq.com> | 2022-02-08 09:37:28 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2022-02-08 09:37:28 +0800 |
commit | d22ae154b57ac80107020e98f04f76fffaa9cd90 (patch) | |
tree | 17da62ceeed4d736bef5c04d328015c4350df92d | |
parent | b933fbfce34e9afc798e6882a96586b496ac432f (diff) | |
download | yuescript-d22ae154b57ac80107020e98f04f76fffaa9cd90.tar.gz yuescript-d22ae154b57ac80107020e98f04f76fffaa9cd90.tar.bz2 yuescript-d22ae154b57ac80107020e98f04f76fffaa9cd90.zip |
fix issue #76.
-rw-r--r-- | spec/inputs/import.yue | 7 | ||||
-rw-r--r-- | spec/outputs/import.lua | 12 | ||||
-rwxr-xr-x | src/yuescript/yue_compiler.cpp | 2 | ||||
-rwxr-xr-x | src/yuescript/yue_parser.cpp | 4 |
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 | ||
68 | do | 68 | do |
69 | import "org.package.module" as function:func, if:ifVar | 69 | import "org.package.module" as function:func, if:ifVar |
70 | |||
71 | do | ||
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 |
92 | end | 92 | end |
93 | do | ||
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 | ||
104 | end | ||
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 | ||
61 | typedef std::list<std::string> str_list; | 61 | typedef std::list<std::string> str_list; |
62 | 62 | ||
63 | const std::string_view version = "0.9.5"sv; | 63 | const std::string_view version = "0.9.6"sv; |
64 | const std::string_view extension = "yue"sv; | 64 | const std::string_view extension = "yue"sv; |
65 | 65 | ||
66 | class YueCompilerImpl { | 66 | class 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); |