From d22ae154b57ac80107020e98f04f76fffaa9cd90 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Tue, 8 Feb 2022 09:37:28 +0800 Subject: fix issue #76. --- spec/inputs/import.yue | 7 +++++++ spec/outputs/import.lua | 12 ++++++++++++ src/yuescript/yue_compiler.cpp | 2 +- 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 do import "org.package.module" as function:func, if:ifVar + +do + import "m" as {a#: b} + import "m" as {e: f, a#: b} + import "m" as {c: d} + import "m" as {g, {h#: i}} + 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 func, ifVar = _obj_0["function"], _obj_0["if"] end end +do + b = getmetatable(require("m")).__a + local _obj_0 = require("m") + local f = _obj_0.e + b = getmetatable(_obj_0).__a + local d = require("m").c + local g, i + do + local _obj_1 = require("m") + g, i = _obj_1[1], getmetatable(_obj_1[2]).__h + end +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; typedef std::list str_list; -const std::string_view version = "0.9.5"sv; +const std::string_view version = "0.9.6"sv; const std::string_view extension = "yue"sv; 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() { macro_name_pair = Space >> MacroName >> Space >> symx(':') >> Space >> MacroName; import_all_macro = expr('$'); - ImportTabItem = variable_pair | normal_pair | sym(':') >> MacroName | macro_name_pair | Space >> import_all_macro | Exp; + ImportTabItem = variable_pair | normal_pair | sym(':') >> MacroName | macro_name_pair | Space >> import_all_macro | meta_variable_pair | meta_normal_pair | Exp; ImportTabList = ImportTabItem >> *(sym(',') >> ImportTabItem); ImportTabLine = ( PushIndent >> (ImportTabList >> PopIndent | PopIndent) @@ -542,7 +542,7 @@ YueParser::YueParser() { meta_normal_pair = Space >> -(Name | symx('[') >> Exp >> sym(']')) >> expr("#:") >> (Exp | TableBlock | +(SpaceBreak) >> Exp); - meta_default_pair = (sym(':') >> Variable >> expr('#') >> Seperator | -Name >> expr("#:") >> Seperator >> Exp) >> sym('=') >> Exp; + meta_default_pair = (sym(':') >> Variable >> expr('#') >> Seperator | Space >> -Name >> expr("#:") >> Seperator >> Exp) >> sym('=') >> Exp; KeyValue = variable_pair | normal_pair | meta_variable_pair | meta_normal_pair; KeyValueList = KeyValue >> *(sym(',') >> KeyValue); -- cgit v1.2.3-55-g6feb