remove parse_line test

move block inner parser

formatting line2Ast
This commit is contained in:
pikastech 2023-03-18 17:18:05 +08:00
parent f39ad4077b
commit 62d1d40618
11 changed files with 336 additions and 341 deletions

View File

@ -43,7 +43,7 @@ BENCHMARK(while_loop_10000)->Unit(benchmark::kMillisecond);
void __platform_printf(char* fmt, ...) {}
static void for_print_1000(benchmark::State& state) {
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, (char*)
char* pikaAsm = pika_lines2Asm(buffs, (char*)
"for i in range(1000):\n"
" print(i)\n"
"\n");
@ -64,7 +64,7 @@ BENCHMARK(for_print_1000)->Unit(benchmark::kMillisecond);
static void prime_number_100(benchmark::State& state) {
int num = 0;
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, (char*)
char* pikaAsm = pika_lines2Asm(buffs, (char*)
"num = 0\n"
"i = 2\n"
"while i < 100:\n"

View File

@ -8,7 +8,7 @@ extern "C" {
}
TEST(parser, NEW) {
AST* ast = AST_parseLine((char*)"add(a,b)", NULL);
AST* ast = parser_line2Ast((char*)"add(a,b)", NULL);
Args* buffs = New_strBuff();
char* pikaAsm = AST_toPikaAsm(ast, buffs);
printf("%s", pikaAsm);
@ -18,7 +18,7 @@ TEST(parser, NEW) {
}
TEST(parser, add_a_b) {
AST* ast = AST_parseLine((char*)"add( a , b)", NULL);
AST* ast = parser_line2Ast((char*)"add( a , b)", NULL);
Args* buffs = New_strBuff();
char* pikaAsm = AST_toPikaAsm(ast, buffs);
printf("%s", pikaAsm);
@ -33,7 +33,7 @@ TEST(parser, add_a_b) {
}
TEST(parser, add_a_b_c) {
AST* ast = AST_parseLine((char*)"d = add(add(a,b) , c)", NULL);
AST* ast = parser_line2Ast((char*)"d = add(add(a,b) , c)", NULL);
Args* buffs = New_strBuff();
char* pikaAsm = AST_toPikaAsm(ast, buffs);
printf("%s", pikaAsm);
@ -52,7 +52,7 @@ TEST(parser, add_a_b_c) {
TEST(parser, method1) {
AST* ast =
AST_parseLine((char*)"d.p = a.add(b.add(a,se.b) , pmw.c)", NULL);
parser_line2Ast((char*)"d.p = a.add(b.add(a,se.b) , pmw.c)", NULL);
Args* buffs = New_strBuff();
char* pikaAsm = AST_toPikaAsm(ast, buffs);
printf("%s", pikaAsm);
@ -73,7 +73,7 @@ TEST(parser, method1) {
TEST(parser, method2) {
char* line = (char*)"d.p = a.add(b.add(a,se.b,diek(pp)) , pmw.c())";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_line2Asm(buffs, line, NULL);
printf("%s", pikaAsm);
EXPECT_STREQ(pikaAsm,
"B0\n"
@ -92,7 +92,7 @@ TEST(parser, method2) {
TEST(parser, str1) {
char* line = (char*)"literal('2.322')";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_line2Asm(buffs, line, NULL);
printf("%s", pikaAsm);
EXPECT_STREQ(pikaAsm,
"B0\n"
@ -105,7 +105,7 @@ TEST(parser, str1) {
TEST(parser, str2) {
char* line = (char*)"b=add(a,literal('1'))";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_line2Asm(buffs, line, NULL);
printf("%s", pikaAsm);
EXPECT_STREQ(pikaAsm,
"B0\n"
@ -121,7 +121,7 @@ TEST(parser, str2) {
TEST(parser, num1) {
char* line = (char*)"b=add(a,1)";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_line2Asm(buffs, line, NULL);
printf("%s", pikaAsm);
EXPECT_STREQ(pikaAsm,
"B0\n"
@ -136,7 +136,7 @@ TEST(parser, num1) {
TEST(parser, add_str) {
char* line = (char*)"b=add(a,'1')";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_line2Asm(buffs, line, NULL);
printf("%s", pikaAsm);
EXPECT_STREQ(pikaAsm,
"B0\n"
@ -151,7 +151,7 @@ TEST(parser, add_str) {
TEST(parser, deep4) {
char* line = (char*)"b = add(add(add(add(1, 2), 3), 4), 5)";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_line2Asm(buffs, line, NULL);
printf("%s", pikaAsm);
EXPECT_STREQ(pikaAsm,
"B0\n"
@ -172,7 +172,7 @@ TEST(parser, deep4) {
TEST(parser, a_1) {
char* line = (char*)"a = 1";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_line2Asm(buffs, line, NULL);
printf("%s", pikaAsm);
EXPECT_STREQ(pikaAsm,
"B0\n"
@ -185,7 +185,7 @@ TEST(parser, a_1) {
TEST(parser, while_true) {
char* line = (char*)"while true:";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_line2Asm(buffs, line, NULL);
printf("%s", pikaAsm);
EXPECT_STREQ(pikaAsm,
"B0\n"
@ -202,7 +202,7 @@ static char* parse(const char* line,
printf("%s\n", line);
Args* runBuffs = New_strBuff();
pikaAsm = strsAppend(runBuffs, pikaAsm,
pika_lineToAsm(runBuffs, (char*)line, blockStack));
pika_line2Asm(runBuffs, (char*)line, blockStack));
pikaAsm = strsCopy(outBuffs, pikaAsm);
args_deinit(runBuffs);
return pikaAsm;

View File

@ -126,7 +126,7 @@ PIKA_RES pikaCompile(char* output_file_name, char* py_lines) {
bytecode_frame.instruct_array.output_f = bytecode_f;
bytecode_frame.instruct_array.output_redirect_fun =
__handler_instructArray_output_none;
res = pika_linesToBytes(&bytecode_frame, py_lines);
res = pika_lines2Bytes(&bytecode_frame, py_lines);
if (PIKA_RES_OK != res) {
pika_platform_printf(" Error: Syntax error.\r\n");
goto exit;
@ -151,7 +151,7 @@ PIKA_RES pikaCompile(char* output_file_name, char* py_lines) {
/* instruct array to file */
bytecode_frame.instruct_array.output_redirect_fun =
__handler_instructArray_output_file;
pika_linesToBytes(&bytecode_frame, py_lines);
pika_lines2Bytes(&bytecode_frame, py_lines);
byteCodeFrame_deinit(&bytecode_frame);
/* step 3, write const pool to file */
@ -169,7 +169,7 @@ PIKA_RES pikaCompile(char* output_file_name, char* py_lines) {
/* instruct array to none */
bytecode_frame.instruct_array.output_redirect_fun =
__handler_instructArray_output_none;
pika_linesToBytes(&bytecode_frame, py_lines);
pika_lines2Bytes(&bytecode_frame, py_lines);
/* deinit */
exit:

View File

@ -57,7 +57,7 @@ char* Cursor_popToken(Args* buffs, char** pStmt, char* devide);
PIKA_BOOL Cursor_isContain(char* stmt, TokenType type, char* pyload);
char* Cursor_splitCollect(Args* buffs, char* stmt, char* devide, int index);
char* pika_linesToAsm(Args* outBuffs, char* multiLine);
char* pika_lines2Asm(Args* outBuffs, char* multiLine);
uint16_t TokenStream_getSize(char* tokenStream) {
if (strEqu("", tokenStream)) {
return 0;
@ -1408,7 +1408,6 @@ char* AST_getThisBlock(AST* ast) {
return obj_getStr(ast, "block");
}
AST* AST_parseStmt(AST* ast, char* stmt);
PIKA_RES AST_parseSubStmt(AST* ast, char* node_content) {
queueObj_pushObj(ast, (char*)"stmt");
AST_parseStmt(queueObj_getCurrentObj(ast), node_content);
@ -1924,13 +1923,11 @@ const char control_keywords[][9] = {"break", "continue"};
/* normal keyward */
const char normal_keywords[][7] = {"while", "if", "elif"};
AST* _AST_parseLine(char* line, AstBlockInfo* block) {
AST* _line2Ast(char* line, BlockState* blockState) {
Stack s;
Stack* tBlockStack = block->stack;
int iBlockDeepth = block->deepth;
stack_init(&s);
if (tBlockStack == NULL) {
tBlockStack = &s;
if (blockState->stack == NULL) {
blockState->stack = &s;
}
/* line is not exist */
if (line == NULL) {
@ -1953,11 +1950,11 @@ AST* _AST_parseLine(char* line, AstBlockInfo* block) {
ast = NULL;
goto exit;
}
block_deepth_now += iBlockDeepth;
block_deepth_now += blockState->deepth;
obj_setInt(ast, "blockDeepth", block_deepth_now);
/* check if exit block */
block_deepth_last = stack_getTop(tBlockStack) + iBlockDeepth;
block_deepth_last = stack_getTop(blockState->stack) + blockState->deepth;
/* exit each block */
for (int i = 0; i < block_deepth_last - block_deepth_now; i++) {
QueueObj* exit_block_queue = obj_getObj(ast, "exitBlock");
@ -1968,12 +1965,12 @@ AST* _AST_parseLine(char* line, AstBlockInfo* block) {
queueObj_init(exit_block_queue);
}
char buff[10] = {0};
char* block_type = stack_popStr(tBlockStack, buff);
char* block_type = stack_popStr(blockState->stack, buff);
/* push exit block type to exit_block queue */
queueObj_pushStr(exit_block_queue, block_type);
}
line_start = line + (block_deepth_now - iBlockDeepth) * 4;
line_start = line + (block_deepth_now - blockState->deepth) * 4;
stmt = line_start;
// "while" "if" "elif"
@ -1984,7 +1981,7 @@ AST* _AST_parseLine(char* line, AstBlockInfo* block) {
(line_start[keyword_len] == ' ')) {
stmt = strsCut(&buffs, line_start, ' ', ':');
AST_setNodeBlock(ast, keyword);
stack_pushStr(tBlockStack, keyword);
stack_pushStr(blockState->stack, keyword);
goto block_matched;
}
}
@ -2024,7 +2021,7 @@ AST* _AST_parseLine(char* line, AstBlockInfo* block) {
args_deinit(list_buffs);
AST_setNodeBlock(ast, "for");
AST_setNodeAttr(ast, "list_in", list_in);
stack_pushStr(tBlockStack, "for");
stack_pushStr(blockState->stack, "for");
stmt = list_in;
goto block_matched;
}
@ -2034,7 +2031,7 @@ AST* _AST_parseLine(char* line, AstBlockInfo* block) {
if ((line_start[4] == ' ') || (line_start[4] == ':')) {
stmt = "";
AST_setNodeBlock(ast, "else");
stack_pushStr(tBlockStack, "else");
stack_pushStr(blockState->stack, "else");
}
goto block_matched;
}
@ -2045,7 +2042,7 @@ AST* _AST_parseLine(char* line, AstBlockInfo* block) {
if ((line_start[3] == ' ') || (line_start[3] == ':')) {
stmt = "";
AST_setNodeBlock(ast, "try");
stack_pushStr(tBlockStack, "try");
stack_pushStr(blockState->stack, "try");
}
goto block_matched;
}
@ -2055,7 +2052,7 @@ AST* _AST_parseLine(char* line, AstBlockInfo* block) {
if ((line_start[6] == ' ') || (line_start[6] == ':')) {
stmt = "";
AST_setNodeBlock(ast, "except");
stack_pushStr(tBlockStack, "except");
stack_pushStr(blockState->stack, "except");
}
goto block_matched;
}
@ -2148,7 +2145,7 @@ AST* _AST_parseLine(char* line, AstBlockInfo* block) {
if (sDefaultStmt[0] != '\0') {
AST_setNodeAttr(ast, "default", sDefaultStmt);
}
stack_pushStr(tBlockStack, "def");
stack_pushStr(blockState->stack, "def");
goto block_matched;
}
if (strIsStartWith(line_start, (char*)"class ")) {
@ -2162,7 +2159,7 @@ AST* _AST_parseLine(char* line, AstBlockInfo* block) {
declare = Cursor_getCleanStmt(&buffs, declare);
AST_setNodeBlock(ast, "class");
AST_setNodeAttr(ast, "declare", declare);
stack_pushStr(tBlockStack, "class");
stack_pushStr(blockState->stack, "class");
goto block_matched;
}
@ -2181,24 +2178,24 @@ exit:
return ast;
}
static AST* AST_parseLine_withBlockDeepth(char* line, int block_deepth) {
AstBlockInfo block = {
static AST* line2Ast_withBlockDeepth(char* line, int block_deepth) {
BlockState block = {
.deepth = block_deepth,
.stack = NULL,
};
return _AST_parseLine(line, &block);
return _line2Ast(line, &block);
}
int AST_getBlockDeepthNow(AST* ast) {
return obj_getInt(ast, "blockDeepth");
}
AST* AST_parseLine(char* line) {
AstBlockInfo block = {
AST* line2Ast(char* line) {
BlockState block = {
.deepth = 0,
.stack = NULL,
};
return _AST_parseLine(line, &block);
return _line2Ast(line, &block);
}
static char* Suger_import_as(Args* out_buffs, char* line) {
@ -2456,12 +2453,12 @@ exit:
return line;
}
char* pika_lineToAsm(Args* buffs_p, char* line, Stack* blockStack) {
char* parser_line2Asm(Parser* self, char* line) {
char* ASM = NULL;
AST* ast = NULL;
uint8_t line_num = 0;
/* pre process */
line = Parser_linePreProcess(buffs_p, line);
line = Parser_linePreProcess(&self->buffs, line);
if (NULL == line) {
/* preprocess error */
goto exit;
@ -2476,18 +2473,14 @@ char* pika_lineToAsm(Args* buffs_p, char* line, Stack* blockStack) {
*/
line_num = strCountSign(line, '\n') + 1;
for (int i = 0; i < line_num; i++) {
char* single_line = strsPopToken(buffs_p, &line, '\n');
char* single_line = strsPopToken(&self->buffs, &line, '\n');
/* parse line to AST */
AstBlockInfo block = {
.deepth = 0,
.stack = blockStack,
};
ast = _AST_parseLine(single_line, &block);
ast = _line2Ast(single_line, &self->blockState);
/* gen ASM from AST */
if (ASM == NULL) {
ASM = AST_genAsm(ast, buffs_p);
ASM = AST_genAsm(ast, &self->buffs);
} else {
ASM = strsAppend(buffs_p, ASM, AST_genAsm(ast, buffs_p));
ASM = strsAppend(&self->buffs, ASM, AST_genAsm(ast, &self->buffs));
}
if (NULL != ast) {
AST_deinit(ast);
@ -2497,10 +2490,6 @@ exit:
return ASM;
}
char* parser_lineToAsm(Parser* self, char* line) {
return pika_lineToAsm(&self->buffs, line, &self->tBlockStack);
}
static int Parser_isVoidLine(char* line) {
for (uint32_t i = 0; i < strGetSize(line); i++) {
if (line[i] != ' ') {
@ -2635,7 +2624,7 @@ static char* _Parser_linesToBytesOrAsm(Args* outBuffs,
parse_line:
/* parse single Line to Asm */
sSingleASM = parser_lineToAsm(parser, sLine);
sSingleASM = parser_line2Asm(parser, sLine);
parse_after:
if (NULL == sSingleASM) {
sOutASM = NULL;
@ -2685,7 +2674,7 @@ exit:
return sOutASM;
};
PIKA_RES pika_linesToBytes(ByteCodeFrame* bf, char* py_lines) {
PIKA_RES pika_lines2Bytes(ByteCodeFrame* bf, char* py_lines) {
#if PIKA_BYTECODE_ONLY_ENABLE
pika_platform_printf(
"Error: In bytecode-only mode, can not parse python script.\r\n");
@ -2700,11 +2689,11 @@ PIKA_RES pika_linesToBytes(ByteCodeFrame* bf, char* py_lines) {
#endif
}
char* pika_linesToAsm(Args* outBuffs, char* multi_line) {
char* pika_lines2Asm(Args* outBuffs, char* multi_line) {
return _Parser_linesToBytesOrAsm(outBuffs, NULL, multi_line);
}
char* pika_fileToAsm(Args* outBuffs, char* filename) {
char* pika_file2Asm(Args* outBuffs, char* filename) {
Args buffs = {0};
Arg* file_arg = arg_loadFile(NULL, filename);
pika_assert(NULL != file_arg);
@ -2718,7 +2707,7 @@ char* pika_fileToAsm(Args* outBuffs, char* filename) {
lines = strsReplace(&buffs, lines, "\n\n", "\n");
/* add '\n' at the end */
lines = strsAppend(&buffs, lines, "\n\n");
char* res = pika_linesToAsm(&buffs, lines);
char* res = pika_lines2Asm(&buffs, lines);
if (NULL == res) {
goto __exit;
}
@ -2979,7 +2968,7 @@ char* AST_genAsm(AST* oAST, Args* outBuffs) {
char* stmt = strsFormat(&buffs, PIKA_LINE_BUFF_SIZE,
"%s = $tmp[%d]\n", item, out_num);
AST* ast_this = AST_parseLine_withBlockDeepth(
AST* ast_this = line2Ast_withBlockDeepth(
stmt, AST_getBlockDeepthNow(oAST) + 1);
sPikaAsm =
strsAppend(&buffs, sPikaAsm, AST_genAsm(ast_this, &buffs));
@ -3026,7 +3015,7 @@ char* AST_genAsm(AST* oAST, Args* outBuffs) {
sPikaAsm = strsAppend(&buffs, sPikaAsm, sArgName);
sPikaAsm = strsAppend(&buffs, sPikaAsm, "\n");
sPikaAsm = strsAppend(&buffs, sPikaAsm, "0 JNZ 2\n");
AST* ast_this = AST_parseLine_withBlockDeepth(
AST* ast_this = line2Ast_withBlockDeepth(
sStmt, AST_getBlockDeepthNow(oAST) + 1);
sPikaAsm =
strsAppend(&buffs, sPikaAsm, AST_genAsm(ast_this, &buffs));
@ -3214,10 +3203,10 @@ ByteCodeFrame* byteCodeFrame_appendFromAsm(ByteCodeFrame* self, char* pikaAsm) {
return self;
}
char* pika_linesToArray(char* lines) {
char* pika_lines2Array(char* lines) {
ByteCodeFrame bytecode_frame;
byteCodeFrame_init(&bytecode_frame);
pika_linesToBytes(&bytecode_frame, lines);
pika_lines2Bytes(&bytecode_frame, lines);
/* do something */
byteCodeFrame_print(&bytecode_frame);
@ -3236,12 +3225,15 @@ char* pika_linesToArray(char* lines) {
Parser* New_parser(void) {
Parser* self = (Parser*)pikaMalloc(sizeof(Parser));
pika_platform_memset(self, 0, sizeof(Parser));
stack_init(&self->tBlockStack);
self->blockState.stack = pikaMalloc(sizeof(Stack));
pika_platform_memset(self->blockState.stack, 0, sizeof(Stack));
stack_init(self->blockState.stack);
return self;
}
int parser_deinit(Parser* parser) {
stack_deinit(&parser->tBlockStack);
pikaFree(parser, sizeof(Parser));
int parser_deinit(Parser* self) {
stack_deinit(self->blockState.stack);
pikaFree(self->blockState.stack, sizeof(Stack));
pikaFree(self, sizeof(Parser));
return 0;
}

View File

@ -33,11 +33,6 @@
typedef QueueObj AST;
typedef struct Parser {
Args buffs;
Stack tBlockStack;
} Parser;
typedef enum TokenType {
TOKEN_strEnd = 0,
TOKEN_symbol,
@ -87,7 +82,12 @@ typedef struct GenRule {
typedef struct AstBlockInfo {
Stack* stack;
int deepth;
} AstBlockInfo;
} BlockState;
typedef struct Parser {
Args buffs;
BlockState blockState;
} Parser;
typedef struct LexToken LexToken;
struct LexToken {
@ -113,20 +113,22 @@ struct Cursor {
char* Lexer_getTokenStream(Args* outBuffs, char* stmt);
char* Lexer_printTokenStream(Args* outBuffs, char* tokenStream);
char* pika_fileToAsm(Args* outBuffs, char* filename);
char* pika_linesToAsm(Args* outBuffs, char* multiLine);
char* pika_linesToArray(char* lines);
char* pika_lineToAsm(Args* buffs_p, char* line, Stack* blockStack);
PIKA_RES pika_linesToBytes(ByteCodeFrame* bf, char* py_lines);
char* pika_file2Asm(Args* outBuffs, char* filename);
char* pika_lines2Asm(Args* outBuffs, char* multiLine);
char* pika_lines2Array(char* lines);
char* pika_line2Asm(Args* buffs_p, char* line, Stack* blockStack);
PIKA_RES pika_lines2Bytes(ByteCodeFrame* bf, char* py_lines);
char* parser_line2Asm(Parser* self, char* line);
AST* line2Ast(char* line);
Parser* New_parser(void);
int parser_deinit(Parser* parser);
char* parser_lineToAsm(Parser* self, char* line);
char* Cursor_popLastToken(Args* outBuffs, char** pStmt, char* str);
char* Cursor_getCleanStmt(Args* outBuffs, char* cmd);
AST* AST_parseLine(char* line);
AST* AST_parseStmt(AST* ast, char* stmt);
char* AST_genAsm(AST* oAST, Args* outBuffs);
int32_t AST_deinit(AST* ast);

View File

@ -3433,7 +3433,7 @@ static VMParameters* _pikaVM_runPyLines(PikaObj* self, char* py_lines) {
/* load or generate byte code frame */
/* generate byte code */
byteCodeFrame_init(bytecode_frame_p);
if (PIKA_RES_OK != pika_linesToBytes(bytecode_frame_p, py_lines)) {
if (PIKA_RES_OK != pika_lines2Bytes(bytecode_frame_p, py_lines)) {
pika_platform_printf("Error: Syntax error.\r\n");
globals = NULL;
goto exit;

View File

@ -4,7 +4,7 @@ TEST_START
TEST(VM, num1) {
char* line = "1";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
__platform_printf("BEGIN\r\n");
@ -19,7 +19,7 @@ TEST(VM, num1) {
TEST(VM, a_1) {
char* line = "a = 1";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
pikaVM_runAsm(self, pikaAsm);
@ -33,7 +33,7 @@ TEST(VM, a_1) {
TEST(VM, a_1d1) {
char* line = "a = 1.1";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -48,7 +48,7 @@ TEST(VM, a_1d1) {
TEST(VM, str_xy) {
char* line = "a = 'xy'";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -64,7 +64,7 @@ TEST(VM, str_xy) {
TEST(VM, str_xy_space) {
char* line = "a = 'xy '";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -81,7 +81,7 @@ TEST(VM, ref_a_b) {
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
Args* buffs = New_strBuff();
pikaVM_runAsm(self, pika_lineToAsm(buffs, "a = 'xy '", NULL));
pikaVM_runAsm(self, pika_lines2Asm(buffs, "a = 'xy '"));
args_deinit(buffs);
obj_deinit(self);
@ -92,7 +92,7 @@ TEST(VM, ref_a_b) {
TEST(VM, Run_add) {
PikaObj* self = newRootObj("root", New_PikaMath_Operator);
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, "a = plusInt(1,2)", NULL);
char* pikaAsm = pika_lines2Asm(buffs, "a = plusInt(1,2)");
__platform_printf("%s", pikaAsm);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -108,7 +108,7 @@ TEST(VM, Run_add_multy) {
PikaObj* self = newRootObj("root", New_PikaMath_Operator);
Args* buffs = New_strBuff();
pikaVM_runAsm(self, pika_lineToAsm(buffs, "b = 2", NULL));
pikaVM_runAsm(self, pika_lines2Asm(buffs, "b = 2"));
args_deinit(buffs);
obj_deinit(self);
@ -120,7 +120,7 @@ TEST(VM, Run_add_1_2_3) {
PikaObj* self = newRootObj("root", New_PikaMath_Operator);
Args* buffs = New_strBuff();
char* pikaAsm =
pika_lineToAsm(buffs, "a = plusInt(1, plusInt(2,3) )", NULL);
pika_lines2Asm(buffs, "a = plusInt(1, plusInt(2,3) )");
__platform_printf("%s", pikaAsm);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -144,7 +144,7 @@ TEST(VM, WHILE) {
" a = 0\n"
"\n";
printf("%s", lines);
char* pikaAsm = pika_linesToAsm(buffs, lines);
char* pikaAsm = pika_lines2Asm(buffs, lines);
printf("%s", pikaAsm);
g_PikaMemInfo.heapUsedMax = 0;
PikaObj* self = newRootObj("root", New_TinyObj);
@ -160,7 +160,7 @@ TEST(VM, WHILE) {
TEST(VM, a_1_1) {
char* line = "a = 1 + 1";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -175,7 +175,7 @@ TEST(VM, a_1_1) {
TEST(VM, a_1_1d1) {
char* line = "a = 1 + 1.1";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -192,7 +192,7 @@ TEST(VM, a_jjcc) {
char* line = "a = (1 + 1.1) * 3 - 2 /4.0";
printf("%s\r\n", line);
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -213,7 +213,7 @@ TEST(VM, while_a_1to10) {
" print(a)\n"
"\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -235,7 +235,7 @@ TEST(VM, mem_x) {
"print(mem.x)\n"
"\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("", New_PikaMain);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -380,7 +380,7 @@ TEST(VM, run_def_add) {
"c = add(1,3)\n"
"\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -399,7 +399,7 @@ TEST(VM, equ) {
" a = 1\n"
"\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -422,7 +422,7 @@ TEST(VM, if_elif) {
" b = 2\n"
"\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -444,7 +444,7 @@ TEST(VM, if_else) {
" b = 2\n"
"\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -467,7 +467,7 @@ TEST(VM, if_else_) {
" b = 2\n"
"\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
VMParameters* globals = pikaVM_runAsm(self, pikaAsm);
@ -594,7 +594,7 @@ TEST(VM, class_x_1) {
"print('test.x: ' + str(test.x))\n"
"\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("", New_PikaMain);
pikaVM_runAsm(self, pikaAsm);
@ -617,7 +617,7 @@ TEST(VM, nag_a) {
"b = 0.5\n"
"print(-b)\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("", New_PikaMain);
__platform_printf("BEGIN\r\n");
@ -714,7 +714,7 @@ TEST(InstructArray, set) {
TEST(VM, bytecode_jjcc) {
char* line = "a = (1 + 1.1) * 3 - 2 /4.0";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
ByteCodeFrame byte_frame;
byteCodeFrame_init(&byte_frame);
@ -746,7 +746,7 @@ TEST(VM, WHILE_byte) {
" a = 0\n"
"\n";
printf("%s", lines);
char* pikaAsm = pika_linesToAsm(buffs, lines);
char* pikaAsm = pika_lines2Asm(buffs, lines);
printf("%s", pikaAsm);
g_PikaMemInfo.heapUsedMax = 0;
PikaObj* self = newRootObj("root", New_TinyObj);
@ -769,7 +769,7 @@ TEST(VM, for_break_byte) {
" a = a + i\n"
"\n";
printf("%s", lines);
char* pikaAsm = pika_linesToAsm(buffs, lines);
char* pikaAsm = pika_lines2Asm(buffs, lines);
printf("%s", pikaAsm);
g_PikaMemInfo.heapUsedMax = 0;
PikaObj* self = newRootObj("pikaMain", New_PikaMain);
@ -878,7 +878,7 @@ TEST(VM, multi_jian) {
Args* buffs = New_strBuff();
char* lines = "a = (3-4) - 4\n";
printf("%s", lines);
char* pikaAsm = pika_linesToAsm(buffs, lines);
char* pikaAsm = pika_lines2Asm(buffs, lines);
printf("%s", pikaAsm);
g_PikaMemInfo.heapUsedMax = 0;
PikaObj* self = newRootObj("pikaMain", New_PikaMain);
@ -895,7 +895,7 @@ TEST(VM, multi_jian) {
TEST(VM, _3_p_3) {
char* line = "-3+3";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
__platform_printf("BEGIN\r\n");
@ -910,7 +910,7 @@ TEST(VM, _3_p_3) {
TEST(VM, _3_3) {
char* line = "-3-3";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
__platform_printf("BEGIN\r\n");
@ -925,7 +925,7 @@ TEST(VM, _3_3) {
TEST(VM, a_3) {
char* line = "a-3";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
__platform_printf("BEGIN\r\n");
@ -940,7 +940,7 @@ TEST(VM, a_3) {
TEST(VM, hex_str) {
char* line = "a = '\\x33\\x35'";
Args* buffs = New_strBuff();
char* pikaAsm = pika_lineToAsm(buffs, line, NULL);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
__platform_printf("BEGIN\r\n");
@ -960,7 +960,7 @@ TEST(VM, hex_bytes) {
"a = b'\\x03\\x05'\n"
"a\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
__platform_printf("BEGIN\r\n");
@ -984,7 +984,7 @@ TEST(VM, bytes_equ) {
"if a != b:\n"
" d = 1\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
__platform_printf("BEGIN\r\n");
@ -1005,7 +1005,7 @@ TEST(VM, bytes_equ) {
TEST(VM, tuple_literal) {
char* line = "(1,2,3)\n";
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs, line);
char* pikaAsm = pika_lines2Asm(buffs, line);
printf("%s", pikaAsm);
PikaObj* self = newRootObj("root", New_PikaStdLib_SysObj);
__platform_printf("BEGIN\r\n");

View File

@ -40,7 +40,7 @@ TEST(compiler, file) {
" info_index = 0\n"
"\n";
pikaCompile("task.bin", lines);
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
@ -84,7 +84,7 @@ TEST(compiler, task) {
"\n";
Args buffs = {0};
char* pikaAsm = pika_linesToAsm(&buffs, lines);
char* pikaAsm = pika_lines2Asm(&buffs, lines);
ByteCodeFrame bytecode_frame;
byteCodeFrame_init(&bytecode_frame);
@ -103,7 +103,7 @@ TEST(compiler, task) {
TEST(compiler, demo1) {
char* lines = "append(__val)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
@ -257,7 +257,7 @@ TEST(compiler, import_bf_mem) {
"\n";
ByteCodeFrame bf;
byteCodeFrame_init(&bf);
pika_linesToBytes(&bf, lines);
pika_lines2Bytes(&bf, lines);
obj_importModuleWithByteCodeFrame(pikaMain, "mtest", &bf);
byteCodeFrame_deinit(&bf);
obj_deinit(pikaMain);
@ -272,7 +272,7 @@ TEST(compiler, import_bf1) {
"\n";
ByteCodeFrame bf;
byteCodeFrame_init(&bf);
pika_linesToBytes(&bf, lines);
pika_lines2Bytes(&bf, lines);
obj_importModuleWithByteCodeFrame(pikaMain, "mtest", &bf);
obj_run(pikaMain,
"mtest.mytest()\n"
@ -292,7 +292,7 @@ TEST(compiler, import_bf2) {
"\n";
ByteCodeFrame bf;
byteCodeFrame_init(&bf);
pika_linesToBytes(&bf, lines);
pika_lines2Bytes(&bf, lines);
obj_importModuleWithByteCodeFrame(pikaMain, "mtest", &bf);
obj_run(pikaMain,
"m = mtest.Test()\n"
@ -548,73 +548,73 @@ TEST(make, compile_depend_all) {
TEST(compiler, __str__) {
char* lines = "@res_str = __str__()";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, __len__) {
char* lines = "@res_len = __len__()";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, __del__) {
char* lines = "__del__()";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, event_cb) {
char* lines = "_eventCallBack(_eventSignal)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, event_cb_lvgl) {
char* lines = "_res = eventCallBack(eventData)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, __setitem__) {
char* lines = "__setitem__(__key, __val)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, __getitem__) {
char* lines = "@res_item = __getitem__(__key)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, __add__) {
char* lines = "@res_add = __add__(__others)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, __iter__) {
char* lines = "@res_iter = __iter__()";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, __sub__) {
char* lines = "@res_sub = __sub__(__others)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, __contains__) {
char* lines = "@res_contains = __contains__(__others)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, __callback) {
char* lines = "__callback(__frameBuffer, __isNewFrame)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
@ -625,25 +625,25 @@ TEST(compiler, __list) {
" @res_list.append(__item)\n"
"del __item\n"
"del __list\n";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, getattr) {
char* lines = "@res = __getattribute__(@name)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, getattr2) {
char* lines = "@res = __getattr__(@name)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, setattr) {
char* lines = "__setattr__(@name, @value)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
@ -651,7 +651,7 @@ TEST(compiler, dict_update) {
char* lines =
"for @item in @other:\n"
" @self[@item] = @other[@item]\n";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
@ -660,7 +660,7 @@ TEST(compiler, i_pp) {
"i = 0\n"
"while i < 10000:\n"
" i += 1\n";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
@ -680,7 +680,7 @@ TEST(compiler, benchmark) {
" num = num + i\n"
" i += 1\n"
"\n";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
@ -688,7 +688,7 @@ TEST(compiler, for_print_1k) {
char* lines =
"for i in range(1000):\n"
" print(i)\n";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
@ -696,25 +696,25 @@ TEST(compiler, bc_fn) {
char* lines =
"def test():\n"
" print('test')\n";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, starrd) {
char* lines = "@l = __len__()";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, starrd_get) {
char* lines = "@a = __getitem__(@d)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, thread_arg) {
char* lines = "thread(*args)";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
@ -732,13 +732,13 @@ TEST(compiler, prime_100) {
" if is_prime:\n"
" num = num + i\n"
"\n";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(compiler, getattr_fn) {
char* lines = "@res = @obj.@name\n";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}
@ -750,7 +750,7 @@ TEST(compiler, str_join) {
" @res_join += @val[i]\n"
" if i != @num - 1:\n"
" @res_join += @str\n";
pika_linesToArray(lines);
pika_lines2Array(lines);
EXPECT_EQ(pikaMemNow(), 0);
}

File diff suppressed because it is too large Load Diff

View File

@ -1115,7 +1115,7 @@ TEST(pikaMain, class_arg) {
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
__platform_printf("BEGIN\r\n");
Args* buffs = New_strBuff();
char* pikaAsm = pika_linesToAsm(buffs,
char* pikaAsm = pika_lines2Asm(buffs,
"class Test(TinyObj):\n"
" x = 1\n"
"\n"
@ -2534,7 +2534,7 @@ TEST(pikaMain, for_loop_issue_1b2a3f1bdf) {
Args* buffs = New_strBuff();
__platform_printf("%s\n", lines);
char* pikaAsm = pika_linesToAsm(buffs, lines);
char* pikaAsm = pika_lines2Asm(buffs, lines);
__platform_printf("%s", pikaAsm);
args_deinit(buffs);
EXPECT_EQ(pikaMemNow(), 0);

View File

@ -94,7 +94,7 @@ TEST(string, format_parse1) {
Args* buffs = New_strBuff();
char* lines = "print('tes:%0.2f'% mem.getMax())";
printf("%s\n", lines);
char* pikaAsm = pika_linesToAsm(buffs, lines);
char* pikaAsm = pika_lines2Asm(buffs, lines);
printf("%s", pikaAsm);
EXPECT_STREQ(pikaAsm,
"B0\n"