diff options
Diffstat (limited to 'src/yuescript/yue_parser.cpp')
-rw-r--r-- | src/yuescript/yue_parser.cpp | 21 |
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 >> ')'; |