Skip to content

Commit c2a34e3

Browse files
committed
Fixed issue #245.
1 parent 5022131 commit c2a34e3

3 files changed

Lines changed: 9 additions & 11 deletions

File tree

src/yuescript/yue_compiler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ static std::unordered_set<std::string> Metamethods = {
7878
"close"s // Lua 5.4
7979
};
8080

81-
const std::string_view version = "0.33.2"sv;
81+
const std::string_view version = "0.33.3"sv;
8282
const std::string_view extension = "yue"sv;
8383

8484
class CompileError : public std::logic_error {

src/yuescript/yue_parser.cpp

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -905,21 +905,18 @@ YueParser::YueParser() {
905905
white >> '}'
906906
);
907907

908-
table_block_inner = Seperator >> key_value_line >> *(line_break >> key_value_line);
908+
table_block_inner = Seperator >> key_value_line >> *(+plain_space_break >> key_value_line);
909909
TableBlock = +plain_space_break >> advance_match >> ensure(table_block_inner, pop_indent);
910910
TableBlockIndent = ('*' | '-' >> space_one) >> Seperator >> disable_arg_table_block_rule(
911911
space >> key_value_list >> -(space >> ',') >>
912912
-(plain_space_break >> advance_match >> space >> ensure(key_value_list >> -(space >> ',') >> *(plain_space_break >> key_value_line), pop_indent)));
913913

914914
ClassMemberList = Seperator >> key_value >> *(space >> ',' >> space >> key_value);
915-
class_line = -EmptyLine >> (
916-
YueComment |
917-
check_indent_match >> space >> (ClassMemberList | Statement) >> -(space >> ',')
918-
) >> space;
915+
class_line = -yue_comment_block >> check_indent_match >> space >> (ClassMemberList | Statement) >> -(space >> ',') >> space;
919916
ClassBlock =
920917
+plain_space_break >>
921918
advance_match >> Seperator >>
922-
class_line >> *(plain_space_break >> class_line) >>
919+
class_line >> *(+plain_space_break >> class_line) >>
923920
pop_indent;
924921

925922
ClassDecl =
@@ -1010,20 +1007,20 @@ YueParser::YueParser() {
10101007
MetaNormalPairDef = MetaNormalPair >> destruct_def;
10111008
NormalDef = Exp >> Seperator >> destruct_def;
10121009

1010+
yue_comment_block = -EmptyLine >> YueComment >> *(line_break >> -EmptyLine >> YueComment) >> line_break;
1011+
10131012
key_value =
10141013
VariablePair |
10151014
NormalPair |
10161015
MetaVariablePair |
10171016
MetaNormalPair;
10181017
key_value_list = key_value >> *(space >> ',' >> space >> key_value);
1019-
key_value_line = -EmptyLine >> (
1020-
YueComment |
1018+
key_value_line = -yue_comment_block >>
10211019
check_indent_match >> space >> (
10221020
key_value_list >> -(space >> ',') |
10231021
TableBlockIndent |
10241022
('*' | '-' >> space_one) >> space >> (SpreadExp | Exp | TableBlock)
1025-
) >> space
1026-
);
1023+
) >> space;
10271024

10281025
fn_arg_def_list = FnArgDef >> *(space >> ',' >> space >> FnArgDef);
10291026

src/yuescript/yue_parser.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ class YueParser {
318318
NONE_AST_RULE(comment_line);
319319
NONE_AST_RULE(yue_line_comment);
320320
NONE_AST_RULE(yue_multiline_comment);
321+
NONE_AST_RULE(yue_comment_block);
321322
NONE_AST_RULE(line);
322323
NONE_AST_RULE(shebang);
323324
NONE_AST_RULE(is_lax);

0 commit comments

Comments
 (0)