mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-15 17:02:53 +08:00
, is ok
This commit is contained in:
parent
dd2f4fe27f
commit
7c5b460816
@ -854,20 +854,37 @@ TEST(parser, comp_signed_num) {
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(lexser, symbol_add) {
|
||||
/* init */
|
||||
pikaMemInfo.heapUsedMax = 0;
|
||||
Args* buffs = New_strBuff();
|
||||
|
||||
/* run */
|
||||
char* tokens = Lexer_getTokens(buffs, (char*)" res = add(1,2)");
|
||||
char* printTokens = Lexer_printTokens(buffs, tokens);
|
||||
printf((char*)"%s\n", printTokens);
|
||||
|
||||
/* assert */
|
||||
EXPECT_STREQ(printTokens,
|
||||
"{sym}res{opt}={sym}add{dvd}({lit}1{dvd},{lit}2{dvd})");
|
||||
|
||||
/* deinit */
|
||||
args_deinit(buffs);
|
||||
EXPECT_EQ(pikaMemNow(), 0);
|
||||
}
|
||||
|
||||
TEST(lexser, symbol_1) {
|
||||
/* init */
|
||||
pikaMemInfo.heapUsedMax = 0;
|
||||
Args* buffs = New_strBuff();
|
||||
|
||||
/* run */
|
||||
char* tokens = Lexer_getTokens(buffs, (char*)
|
||||
"a("
|
||||
);
|
||||
char* tokens = Lexer_getTokens(buffs, (char*)"a(");
|
||||
char* printTokens = Lexer_printTokens(buffs, tokens);
|
||||
printf((char*)"%s\n", printTokens);
|
||||
|
||||
/* assert */
|
||||
EXPECT_STREQ(printTokens, "{sym}a{bkt}(");
|
||||
EXPECT_STREQ(printTokens, "{sym}a{dvd}(");
|
||||
|
||||
/* deinit */
|
||||
args_deinit(buffs);
|
||||
@ -898,9 +915,7 @@ TEST(lexser, symbol_Nag) {
|
||||
Args* buffs = New_strBuff();
|
||||
|
||||
/* run */
|
||||
char* tokens = Lexer_getTokens(buffs, (char*)
|
||||
"-10-20"
|
||||
);
|
||||
char* tokens = Lexer_getTokens(buffs, (char*)"-10-20");
|
||||
char* printTokens = Lexer_printTokens(buffs, tokens);
|
||||
printf((char*)"%s\n", printTokens);
|
||||
|
||||
@ -932,7 +947,11 @@ TEST(lexser, operator_all) {
|
||||
printf((char*)"%s\n", printTokens);
|
||||
|
||||
/* assert */
|
||||
EXPECT_STREQ(printTokens, "{opt}not{opt}or{opt}and{opt}+{opt}+={opt}-{opt}-={opt}*{opt}**{opt}*={opt}**={opt}/{opt}//{opt}/={opt}//={opt}%{opt}%={opt}={opt}=={opt}!={opt}>{opt}>={opt}>>{opt}<{opt}<={opt}<<{opt}&{opt}|{opt}^{opt}~");
|
||||
EXPECT_STREQ(printTokens,
|
||||
"{opt}not{opt}or{opt}and{opt}+{opt}+={opt}-{opt}-={opt}*{opt}*"
|
||||
"*{opt}*={opt}**={opt}/{opt}//{opt}/={opt}//"
|
||||
"={opt}%{opt}%={opt}={opt}=={opt}!={opt}>{opt}>={opt}>>{opt}<{"
|
||||
"opt}<={opt}<<{opt}&{opt}|{opt}^{opt}~");
|
||||
|
||||
/* deinit */
|
||||
args_deinit(buffs);
|
||||
@ -945,14 +964,14 @@ TEST(lexser, symbol_2) {
|
||||
Args* buffs = New_strBuff();
|
||||
|
||||
/* run */
|
||||
char* tokens = Lexer_getTokens(buffs, (char*)
|
||||
"a+b-c(25**=ek)!=-28"
|
||||
);
|
||||
char* tokens = Lexer_getTokens(buffs, (char*)"a+b-c(25**=ek)!=-28");
|
||||
char* printTokens = Lexer_printTokens(buffs, tokens);
|
||||
printf((char*)"%s\n", printTokens);
|
||||
|
||||
/* assert */
|
||||
EXPECT_STREQ(printTokens, "{sym}a{opt}+{sym}b{opt}-{sym}c{bkt}({lit}25{opt}**={sym}ek{bkt}){opt}!={lit}-28");
|
||||
EXPECT_STREQ(printTokens,
|
||||
"{sym}a{opt}+{sym}b{opt}-{sym}c{dvd}({lit}25{opt}**={sym}ek{"
|
||||
"dvd}){opt}!={lit}-28");
|
||||
|
||||
/* deinit */
|
||||
args_deinit(buffs);
|
||||
|
@ -77,7 +77,7 @@ enum TokenType {
|
||||
TOKEN_symbol,
|
||||
TOKEN_keyword,
|
||||
TOKEN_operator,
|
||||
TOKEN_brancket,
|
||||
TOKEN_devider,
|
||||
TOKEN_literal,
|
||||
};
|
||||
|
||||
@ -183,8 +183,8 @@ char* Lexer_printTokens(Args* outBuffs, char* tokens) {
|
||||
printOut = strsAppend(buffs, printOut, "{opt}");
|
||||
printOut = strsAppend(buffs, printOut, token + 1);
|
||||
}
|
||||
if (token[0] == TOKEN_brancket) {
|
||||
printOut = strsAppend(buffs, printOut, "{bkt}");
|
||||
if (token[0] == TOKEN_devider) {
|
||||
printOut = strsAppend(buffs, printOut, "{dvd}");
|
||||
printOut = strsAppend(buffs, printOut, token + 1);
|
||||
}
|
||||
if (token[0] == TOKEN_symbol) {
|
||||
@ -274,13 +274,13 @@ char* Lexer_getTokens(Args* outBuffs, char* stmt) {
|
||||
if (-1 == symbol_start_index) {
|
||||
symbol_start_index = i;
|
||||
}
|
||||
/* match brancket*/
|
||||
if (('(' == c0) || (')' == c0)) {
|
||||
/* match devider*/
|
||||
if (('(' == c0) || (')' == c0) || (',' == c0)) {
|
||||
tokens_arg =
|
||||
Lexer_setSymbel(tokens_arg, stmt, i, &symbol_start_index);
|
||||
char content[2] = {0};
|
||||
content[0] = c0;
|
||||
tokens_arg = Lexer_setToken(tokens_arg, TOKEN_brancket, content);
|
||||
tokens_arg = Lexer_setToken(tokens_arg, TOKEN_devider, content);
|
||||
continue;
|
||||
}
|
||||
/* match operator */
|
||||
@ -400,7 +400,7 @@ char* Lexer_getTokens(Args* outBuffs, char* stmt) {
|
||||
}
|
||||
}
|
||||
/* skip spaces */
|
||||
if (' ' == c0) {
|
||||
if ((' ' == c0) && (i == symbol_start_index)) {
|
||||
symbol_start_index++;
|
||||
}
|
||||
if (i == size - 1) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user