diff options
Diffstat (limited to 'src/yuescript/yue_parser.cpp')
-rw-r--r-- | src/yuescript/yue_parser.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/yuescript/yue_parser.cpp b/src/yuescript/yue_parser.cpp index e4de0b5..e755fb2 100644 --- a/src/yuescript/yue_parser.cpp +++ b/src/yuescript/yue_parser.cpp | |||
@@ -679,10 +679,15 @@ YueParser::YueParser() { | |||
679 | advance >> ensure(MultiLineComment >> Space | Comment, PopIndent) | | 679 | advance >> ensure(MultiLineComment >> Space | Comment, PopIndent) | |
680 | plain_space) >> and_(Break); | 680 | plain_space) >> and_(Break); |
681 | 681 | ||
682 | indentation_error = pl::user(not_(PipeOperator), [](const item_t& item) { | ||
683 | throw ParserError("unexpected indent", *item.begin, *item.end); | ||
684 | return false; | ||
685 | }); | ||
686 | |||
682 | Line = | 687 | Line = |
683 | CheckIndent >> Statement | | 688 | CheckIndent >> Statement | |
684 | Advance >> ensure(Space >> and_(PipeOperator) >> Statement, PopIndent) | | 689 | empty_line_break | |
685 | empty_line_break; | 690 | Advance >> ensure(Space >> (indentation_error | Statement), PopIndent); |
686 | Block = Seperator >> Line >> *(+Break >> Line); | 691 | Block = Seperator >> Line >> *(+Break >> Line); |
687 | 692 | ||
688 | Shebang = expr("#!") >> *(not_(Stop) >> Any); | 693 | Shebang = expr("#!") >> *(not_(Stop) >> Any); |