mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
remove parse_line test
move block inner parser formatting line2Ast
This commit is contained in:
parent
f39ad4077b
commit
62d1d40618
@ -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"
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
|
@ -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
@ -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);
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user