From a4c85cc3050db41c2a79f93e191f216d1582901c Mon Sep 17 00:00:00 2001 From: Lyon Date: Tue, 26 Dec 2023 10:36:22 +0800 Subject: [PATCH] support `|=` `&=` `^=` `>>=` `<<=` --- port/linux/.vscode/launch.json | 2 +- src/PikaParser.c | 17 +++++++++++++++-- src/PikaVersion.h | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/port/linux/.vscode/launch.json b/port/linux/.vscode/launch.json index fb7252782..3299a9b20 100644 --- a/port/linux/.vscode/launch.json +++ b/port/linux/.vscode/launch.json @@ -19,7 +19,7 @@ // "--gtest_filter=vm.run_file" // "--gtest_filter=stddata.encode_decode" // "--gtest_filter=packtool.packfiles_txt" - "--gtest_filter=fuzzypid.fuzzypid1" + "--gtest_filter=parser.rshift_equ" ], "stopAtEntry": false, "cwd": "${workspaceFolder}", diff --git a/src/PikaParser.c b/src/PikaParser.c index 7d951205e..12e24b91b 100644 --- a/src/PikaParser.c +++ b/src/PikaParser.c @@ -612,6 +612,19 @@ char* Lexer_getTokenStream(Args* outBuffs, char* sStmt) { */ if (('>' == c0) || ('<' == c0) || ('*' == c0) || ('/' == c0)) { if (c0 == c1) { + /* >>=, <<=, **=, //= */ + if ('=' == c2) { + char sContent[4] = {0}; + sContent[0] = c0; + sContent[1] = c1; + sContent[2] = '='; + aTokenStream = Lexer_setSymbel(aTokenStream, sStmt, i, + &iSymbolStartIndex); + aTokenStream = Lexer_setToken(aTokenStream, + TOKEN_operator, sContent); + i = i + 2; + continue; + } char content[3] = {0}; content[0] = c0; content[1] = c1; @@ -624,11 +637,11 @@ char* Lexer_getTokenStream(Args* outBuffs, char* sStmt) { } } /* - >=, <=, *=, /=, +=, -=, !=, ==, %= + >=, <=, *=, /=, +=, -=, !=, ==, %=, |=, ^=, &= */ if (('>' == c0) || ('<' == c0) || ('*' == c0) || ('/' == c0) || ('+' == c0) || ('-' == c0) || ('!' == c0) || ('=' == c0) || - ('%' == c0) || ('^' == c0)) { + ('%' == c0) || ('|' == c0) || ('&' == c0) || ('^' == c0)) { if ('=' == c1) { char content[3] = {0}; content[0] = c0; diff --git a/src/PikaVersion.h b/src/PikaVersion.h index 945e7f8d0..96e0bb6ea 100644 --- a/src/PikaVersion.h +++ b/src/PikaVersion.h @@ -2,4 +2,4 @@ #define PIKA_VERSION_MINOR 13 #define PIKA_VERSION_MICRO 1 -#define PIKA_EDIT_TIME "2023/12/18 02:17:06" +#define PIKA_EDIT_TIME "2023/12/26 10:36:08"