aboutsummaryrefslogtreecommitdiff
path: root/src/yuescript/yue_parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuescript/yue_parser.cpp')
-rw-r--r--src/yuescript/yue_parser.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/yuescript/yue_parser.cpp b/src/yuescript/yue_parser.cpp
index d138979..3ffaf18 100644
--- a/src/yuescript/yue_parser.cpp
+++ b/src/yuescript/yue_parser.cpp
@@ -416,6 +416,18 @@ YueParser::YueParser() {
416 return true; 416 return true;
417 }); 417 });
418 418
419 disable_fun_lit = pl::user(true_(), [](const item_t& item) {
420 State* st = reinterpret_cast<State*>(item.user_data);
421 st->fnArrowAvailable = false;
422 return true;
423 });
424
425 enable_fun_lit = pl::user(true_(), [](const item_t& item) {
426 State* st = reinterpret_cast<State*>(item.user_data);
427 st->fnArrowAvailable = true;
428 return true;
429 });
430
419 disable_do_chain_arg_table_block = pl::user(true_(), [](const item_t& item) { 431 disable_do_chain_arg_table_block = pl::user(true_(), [](const item_t& item) {
420 State* st = reinterpret_cast<State*>(item.user_data); 432 State* st = reinterpret_cast<State*>(item.user_data);
421 st->noDoStack.push(true); 433 st->noDoStack.push(true);
@@ -846,7 +858,14 @@ YueParser::YueParser() {
846 858
847 FnArgsDef = '(' >> *space_break >> -FnArgDefList >> -(white >> OuterVarShadow) >> white >> ')'; 859 FnArgsDef = '(' >> *space_break >> -FnArgDefList >> -(white >> OuterVarShadow) >> white >> ')';
848 FnArrow = expr("->") | "=>"; 860 FnArrow = expr("->") | "=>";
849 FunLit = -FnArgsDef >> space >> FnArrow >> -(space >> Body); 861 FunLit = pl::user(true_(), [](const item_t& item) {
862 State* st = reinterpret_cast<State*>(item.user_data);
863 return st->fnArrowAvailable;
864 }) >> -(FnArgsDef >>
865 -(':' >> space >>
866 disable_fun_lit >> ensure(ExpListLow | DefaultValue, enable_fun_lit)
867 )
868 ) >> space >> FnArrow >> -(space >> Body);
850 869
851 MacroName = '$' >> UnicodeName; 870 MacroName = '$' >> UnicodeName;
852 macro_args_def = '(' >> white >> -FnArgDefList >> white >> ')'; 871 macro_args_def = '(' >> white >> -FnArgDefList >> white >> ')';