diff --git a/parse.y b/parse.y index d04286f..8756de6 100644 --- a/parse.y +++ b/parse.y @@ -7013,7 +7013,27 @@ parser_yylex(struct parser_params *parser) command_start = FALSE; retry: last_state = lex_state; - switch (c = nextc()) { + c = nextc(); + switch (c) { + case 0xF0: { + unsigned char c1 = nextc(); + if (c1 == 0x9F) { + unsigned char c2 = nextc(); + if (c2 == 0x9A) { + unsigned char c3 = nextc(); + if (c3 == 0x85) { + set_yylval_id(idLambda); + lex_state = EXPR_ENDFN; + return tLAMBDA; + } + pushback(c3); + } + pushback(c2); + } + pushback(c1); + pushback(c); + break; + } case '\0': /* NUL */ case '\004': /* ^D */ case '\032': /* ^Z */