print tokens is ok

This commit is contained in:
lyon 2021-11-26 20:33:35 +08:00
parent 92af6cd31f
commit a270a01229
3 changed files with 23 additions and 0 deletions

View File

@ -861,6 +861,7 @@ TEST(lexser, operator_not) {
/* run */
char* tokens = Lexer_getTokens(buffs, (char*)"not not not ");
char* printTokens = Lexer_printTokens(buffs, tokens);
/* deinit */
args_deinit(buffs);

View File

@ -170,6 +170,27 @@ uint8_t checkIsDirect(char* str) {
return 0;
}
char* Lexer_printTokens(Args* outBuffs, char* tokens) {
/* init */
Args* buffs = New_strBuff();
char* printOut = strsCopy(buffs, "");
/* process */
uint16_t tokenSize = strCountSign(tokens, ' ') + 1;
char* tokensBuff = strsCopy(buffs, tokens);
for (int i = 0; i < tokenSize; i++) {
char* token = strsPopToken(buffs, tokens, ' ');
if (token[0] == TOKEN_operator) {
printOut = strsAppend(buffs, printOut, "<opt>");
printOut = strsAppend(buffs, printOut, token + 1);
}
}
/* out put */
printOut = strsCopy(outBuffs, printOut);
args_deinit(buffs);
return printOut;
}
char* Lexer_setOperator(Args* outBuffs, char* tokens, char* operator) {
Args* buffs = New_strBuff();
char token_type_buff[3] = {0};

View File

@ -37,5 +37,6 @@ int32_t AST_deinit(AST* ast);
char* AST_toPikaAsm(AST* ast, Args* buffs);
char* pikaParseMultiLineToAsm(Args* outBuffs, char* multiLine);
char* Lexer_getTokens(Args* outBuffs, char* stmt);
char* Lexer_printTokens(Args* outBuffs, char* tokens);
#endif