diff options
author | Jo-Philipp Wich <jo@mein.io> | 2022-03-06 23:56:41 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2022-03-07 23:17:51 +0100 |
commit | efe8a0233bea283765443226340fa732cffc9ca6 (patch) | |
tree | 3532b18c9ada2e4bab1ec7d4e89e960067168c3e /lexer.c | |
parent | 05bd7edd7a101aa09a54371aa34bc22646b75bee (diff) |
syntax: support add new operators
- Support ES2016 exponentiation (**) and exponentiation assignment (**=)
- Support ES2020 nullish coalescing (??) and logical nullish assignment (??=)
- Support ES2021 logical and assignment (&&=) and logical or assignment (||=)
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'lexer.c')
-rw-r--r-- | lexer.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -75,6 +75,10 @@ static const struct token tokens[] = { { TK_ELLIP, { .pat = "..." }, 3, NULL }, { TK_QLBRACK, { .pat = "?.[" }, 3, NULL }, { TK_QLPAREN, { .pat = "?.(" }, 3, NULL }, + { TK_ASEXP, { .pat = "**=" }, 3, NULL }, + { TK_ASAND, { .pat = "&&=" }, 3, NULL }, + { TK_ASOR, { .pat = "||=" }, 3, NULL }, + { TK_ASNULLISH, { .pat = "\?\?=" }, 3, NULL }, { TK_AND, { .pat = "&&" }, 2, NULL }, { TK_ASADD, { .pat = "+=" }, 2, NULL }, { TK_ASBAND, { .pat = "&=" }, 2, NULL }, @@ -84,6 +88,7 @@ static const struct token tokens[] = { { TK_ASMOD, { .pat = "%=" }, 2, NULL }, { TK_ASMUL, { .pat = "*=" }, 2, NULL }, { TK_ASSUB, { .pat = "-=" }, 2, NULL }, + { TK_EXP, { .pat = "**" }, 2, NULL }, { TK_DEC, { .pat = "--" }, 2, NULL }, { TK_INC, { .pat = "++" }, 2, NULL }, { TK_EQ, { .pat = "==" }, 2, NULL }, @@ -100,6 +105,7 @@ static const struct token tokens[] = { { TK_LSTM, { .pat = "{%" }, 2, NULL }, { TK_RSTM, { .pat = "%}" }, 2, NULL }, { TK_ARROW, { .pat = "=>" }, 2, NULL }, + { TK_NULLISH, { .pat = "??" }, 2, NULL }, { TK_QDOT, { .pat = "?." }, 2, NULL }, { TK_ADD, { .pat = "+" }, 1, NULL }, { TK_ASSIGN, { .pat = "=" }, 1, NULL }, |