mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
update bytecode_gen to v1.5.2
This commit is contained in:
parent
f4b1b5fbd8
commit
4ddb60726a
0
tools/pikaByteCodeGen/.vs/CMake Overview
Normal file
0
tools/pikaByteCodeGen/.vs/CMake Overview
Normal file
3
tools/pikaByteCodeGen/.vs/ProjectSettings.json
Normal file
3
tools/pikaByteCodeGen/.vs/ProjectSettings.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"CurrentProjectSetting": "x64-Debug"
|
||||
}
|
8
tools/pikaByteCodeGen/.vs/VSWorkspaceState.json
Normal file
8
tools/pikaByteCodeGen/.vs/VSWorkspaceState.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"ExpandedNodes": [
|
||||
"",
|
||||
"\\pikascript"
|
||||
],
|
||||
"SelectedNode": "\\main.c",
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
BIN
tools/pikaByteCodeGen/.vs/cmake.db
Normal file
BIN
tools/pikaByteCodeGen/.vs/cmake.db
Normal file
Binary file not shown.
BIN
tools/pikaByteCodeGen/.vs/pikaByteCodeGen/v17/.suo
Normal file
BIN
tools/pikaByteCodeGen/.vs/pikaByteCodeGen/v17/.suo
Normal file
Binary file not shown.
BIN
tools/pikaByteCodeGen/.vs/pikaByteCodeGen/v17/Browse.VC.db
Normal file
BIN
tools/pikaByteCodeGen/.vs/pikaByteCodeGen/v17/Browse.VC.db
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
tools/pikaByteCodeGen/.vs/slnx.sqlite
Normal file
BIN
tools/pikaByteCodeGen/.vs/slnx.sqlite
Normal file
Binary file not shown.
@ -5,6 +5,8 @@
|
||||
#include "PikaParser.h"
|
||||
#include "dataStrs.h"
|
||||
|
||||
PikaObj* __pikaMain;
|
||||
|
||||
void main() {
|
||||
FILE* file_mian_py = fopen("main.py", "rb");
|
||||
if (NULL == file_mian_py) {
|
||||
@ -29,55 +31,3 @@ void main() {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* portable */
|
||||
void __platformDisableIrqHandle(void) {
|
||||
/* disable irq to support thread */
|
||||
}
|
||||
void __platformEnableIrqHandle(void) {
|
||||
/* disable irq to support thread */
|
||||
}
|
||||
void* __platformMalloc(size_t size) {
|
||||
return malloc(size);
|
||||
}
|
||||
void __platformFree(void* ptr) {
|
||||
free(ptr);
|
||||
}
|
||||
void* __impl_pikaMalloc(size_t size) {
|
||||
return __platformMalloc(size);
|
||||
}
|
||||
void __impl_pikaFree(void* ptrm, size_t size) {
|
||||
__platformFree(ptrm);
|
||||
}
|
||||
void __platformPoolInit(void) {}
|
||||
uint8_t __is_quick_malloc(void) {
|
||||
return 0;
|
||||
}
|
||||
void __quick_malloc_enable(void) {}
|
||||
void __quick_malloc_disable(void) {}
|
||||
uint8_t __isLocked_pikaMemory(void) {
|
||||
return 0;
|
||||
}
|
||||
void __platformPrintf(char* fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
vprintf(fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
char* __platformLoadPikaAsm(void) {
|
||||
/* faild */
|
||||
return NULL;
|
||||
}
|
||||
int32_t __platformSavePikaAsm(char* PikaAsm) {
|
||||
/* faild */
|
||||
return 1;
|
||||
}
|
||||
uint8_t __platformAsmIsToFlash(char* pyMultiLine) {
|
||||
/* not to flash */
|
||||
return 0;
|
||||
}
|
||||
int32_t __platformSavePikaAsmEOF(void) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1,28 +1,95 @@
|
||||
time = STM32.Time()
|
||||
uart = STM32.UART()
|
||||
adc = STM32.ADC()
|
||||
pin = STM32.GPIO()
|
||||
pwm = STM32.PWM()
|
||||
uart = STM32.UART()
|
||||
rgb = PikaPiZero.RGB()
|
||||
import PikaStdLib
|
||||
import PikaStdData
|
||||
|
||||
mem = PikaStdLib.MemChecker()
|
||||
op = PikaMath.Operator()
|
||||
mem.resetMax()
|
||||
def EXPECT_EQ(test_name, input, expected):
|
||||
print('-----TEST-----')
|
||||
print(test_name)
|
||||
if input != expected:
|
||||
print('[Error]')
|
||||
print(test_name)
|
||||
print('[info] Expected:')
|
||||
print(expected)
|
||||
print('[info] Input:')
|
||||
print(input)
|
||||
# error
|
||||
while True:
|
||||
is_error = 1
|
||||
else:
|
||||
print('[ OK ]')
|
||||
|
||||
uart.init()
|
||||
uart.setId(1)
|
||||
uart.setBaudRate(115200)
|
||||
uart.enable()
|
||||
a = 0
|
||||
for i in range(0, 10):
|
||||
if i == 5:
|
||||
continue
|
||||
a = a + i
|
||||
EXPECT_EQ('for_if_continue', a, 40)
|
||||
|
||||
a = 0
|
||||
for i in range(0, 10):
|
||||
if i == 5:
|
||||
break
|
||||
a = a + i
|
||||
EXPECT_EQ('for_if_break', a, 10)
|
||||
|
||||
rgb.init()
|
||||
rgb.enable()
|
||||
a = 0
|
||||
for i in range(0, 10):
|
||||
for k in range(0, 3):
|
||||
# print(k)
|
||||
a = a + k
|
||||
EXPECT_EQ('for_for_in_range', a, 30)
|
||||
|
||||
print('hello 2')
|
||||
a = 0
|
||||
for i in range(0, 10):
|
||||
# print(i)
|
||||
a = a + i
|
||||
EXPECT_EQ('for_in_range', a, 45)
|
||||
|
||||
list = PikaStdData.List()
|
||||
list.append(7)
|
||||
list.append('eee')
|
||||
len = list.len()
|
||||
for item in list:
|
||||
# print(item)
|
||||
a = item
|
||||
EXPECT_EQ('list_for_loop', a, 'eee')
|
||||
|
||||
|
||||
list = PikaStdData.List()
|
||||
list.append(7)
|
||||
list.append('eee')
|
||||
len = list.len()
|
||||
a1 = list.get(0)
|
||||
a2 = list.get(1)
|
||||
res = iter(list)
|
||||
EXPECT_EQ('iter', res, list)
|
||||
|
||||
dict = PikaStdData.Dict()
|
||||
dict.set('a', 1)
|
||||
dict.set('b', 2)
|
||||
dict.remove('b')
|
||||
a = dict.get('a')
|
||||
b = dict.get('b')
|
||||
EXPECT_EQ('PikaStdData', a, 1)
|
||||
EXPECT_EQ('PikaStdData_2', b, 0)
|
||||
|
||||
num = 0
|
||||
i = 2
|
||||
for i in range(2,30):
|
||||
j=2
|
||||
is_prime = 1
|
||||
for j in range(2,i):
|
||||
if i%j==0 :
|
||||
is_prime = 0
|
||||
break
|
||||
if is_prime:
|
||||
num = num + i
|
||||
EXPECT_EQ('prime_number_30', num, 129)
|
||||
|
||||
|
||||
print('====================')
|
||||
print('[Unit Tests Succeed]')
|
||||
print('====================')
|
||||
print('mem used max:')
|
||||
mem.max()
|
||||
|
||||
while True:
|
||||
time.sleep_ms(10)
|
||||
rgb.flow()
|
||||
print('flowing')
|
||||
|
||||
|
||||
|
@ -1,68 +1,426 @@
|
||||
B0
|
||||
0 RUN STM32.Time
|
||||
0 OUT time
|
||||
0 REF importPikaStdLib
|
||||
B0
|
||||
0 RUN STM32.UART
|
||||
0 OUT uart
|
||||
0 REF importPikaStdData
|
||||
B0
|
||||
0 RUN STM32.ADC
|
||||
0 OUT adc
|
||||
B0
|
||||
0 RUN STM32.GPIO
|
||||
0 OUT pin
|
||||
B0
|
||||
0 RUN STM32.PWM
|
||||
0 OUT pwm
|
||||
B0
|
||||
0 RUN STM32.UART
|
||||
0 OUT uart
|
||||
B0
|
||||
0 RUN PikaPiZero.RGB
|
||||
0 OUT rgb
|
||||
B0
|
||||
0 RUN PikaStdLib.MemChecker
|
||||
0 OUT mem
|
||||
B0
|
||||
0 RUN PikaMath.Operator
|
||||
0 OUT op
|
||||
0 RUN mem.resetMax
|
||||
B0
|
||||
0 DEF EXPECT_EQ(test_name,input,expected)
|
||||
0 JMP 1
|
||||
B1
|
||||
1 STR -----TEST-----
|
||||
0 RUN print
|
||||
B1
|
||||
1 REF test_name
|
||||
0 RUN print
|
||||
B1
|
||||
1 REF input
|
||||
1 REF expected
|
||||
0 OPT !=
|
||||
0 JEZ 1
|
||||
B2
|
||||
1 STR [Error]
|
||||
0 RUN print
|
||||
B2
|
||||
1 REF test_name
|
||||
0 RUN print
|
||||
B2
|
||||
1 STR [info] Expected:
|
||||
0 RUN print
|
||||
B2
|
||||
1 REF expected
|
||||
0 RUN print
|
||||
B2
|
||||
1 STR [info] Input:
|
||||
0 RUN print
|
||||
B2
|
||||
1 REF input
|
||||
0 RUN print
|
||||
B2
|
||||
0 REF True
|
||||
0 JEZ 2
|
||||
B3
|
||||
0 NUM 1
|
||||
0 OUT is_err or
|
||||
B2
|
||||
0 JMP -1
|
||||
B1
|
||||
0 NEL 1
|
||||
B2
|
||||
1 STR [ OK ]
|
||||
0 RUN print
|
||||
B1
|
||||
0 RET
|
||||
B0
|
||||
B0
|
||||
0 RUN uart.init
|
||||
0 NUM 0
|
||||
0 OUT a
|
||||
B0
|
||||
2 NUM 0
|
||||
2 NUM 10
|
||||
1 RUN range
|
||||
0 RUN iter
|
||||
0 OUT _l0
|
||||
0 REF _r1
|
||||
0 REF _r2
|
||||
0 REF _r3
|
||||
0 OUT _l0.a1
|
||||
0 OUT _l0.a2
|
||||
0 OUT _l0.a3
|
||||
B0
|
||||
0 RUN _l0.__next__
|
||||
0 OUT i
|
||||
0 EST i
|
||||
0 JEZ 2
|
||||
B1
|
||||
1 REF i
|
||||
1 NUM 5
|
||||
0 OPT ==
|
||||
0 JEZ 1
|
||||
B2
|
||||
0 CTN
|
||||
B1
|
||||
1 REF a
|
||||
1 REF i
|
||||
0 OPT +
|
||||
0 OUT a
|
||||
B0
|
||||
0 JMP -1
|
||||
B0
|
||||
0 DEL _l0
|
||||
B0
|
||||
1 STR for_if_continue
|
||||
1 REF a
|
||||
1 NUM 40
|
||||
0 RUN EXPECT_EQ
|
||||
B0
|
||||
B0
|
||||
0 NUM 0
|
||||
0 OUT a
|
||||
B0
|
||||
2 NUM 0
|
||||
2 NUM 10
|
||||
1 RUN range
|
||||
0 RUN iter
|
||||
0 OUT _l0
|
||||
0 REF _r1
|
||||
0 REF _r2
|
||||
0 REF _r3
|
||||
0 OUT _l0.a1
|
||||
0 OUT _l0.a2
|
||||
0 OUT _l0.a3
|
||||
B0
|
||||
0 RUN _l0.__next__
|
||||
0 OUT i
|
||||
0 EST i
|
||||
0 JEZ 2
|
||||
B1
|
||||
1 REF i
|
||||
1 NUM 5
|
||||
0 OPT ==
|
||||
0 JEZ 1
|
||||
B2
|
||||
0 BRK
|
||||
B1
|
||||
1 REF a
|
||||
1 REF i
|
||||
0 OPT +
|
||||
0 OUT a
|
||||
B0
|
||||
0 JMP -1
|
||||
B0
|
||||
0 DEL _l0
|
||||
B0
|
||||
1 STR for_if_break
|
||||
1 REF a
|
||||
1 NUM 10
|
||||
0 RUN EXPECT_EQ
|
||||
B0
|
||||
B0
|
||||
0 NUM 0
|
||||
0 OUT a
|
||||
B0
|
||||
2 NUM 0
|
||||
2 NUM 10
|
||||
1 RUN range
|
||||
0 RUN iter
|
||||
0 OUT _l0
|
||||
0 REF _r1
|
||||
0 REF _r2
|
||||
0 REF _r3
|
||||
0 OUT _l0.a1
|
||||
0 OUT _l0.a2
|
||||
0 OUT _l0.a3
|
||||
B0
|
||||
0 RUN _l0.__next__
|
||||
0 OUT i
|
||||
0 EST i
|
||||
0 JEZ 2
|
||||
B1
|
||||
2 NUM 0
|
||||
2 NUM 3
|
||||
1 RUN range
|
||||
0 RUN iter
|
||||
0 OUT _l1
|
||||
0 REF _r1
|
||||
0 REF _r2
|
||||
0 REF _r3
|
||||
0 OUT _l1.a1
|
||||
0 OUT _l1.a2
|
||||
0 OUT _l1.a3
|
||||
B1
|
||||
0 RUN _l1.__next__
|
||||
0 OUT k
|
||||
0 EST k
|
||||
0 JEZ 2
|
||||
B2
|
||||
1 REF a
|
||||
1 REF k
|
||||
0 OPT +
|
||||
0 OUT a
|
||||
B1
|
||||
0 JMP -1
|
||||
B1
|
||||
0 DEL _l1
|
||||
B0
|
||||
0 JMP -1
|
||||
B0
|
||||
0 DEL _l0
|
||||
B0
|
||||
1 STR for_for_in_range
|
||||
1 REF a
|
||||
1 NUM 30
|
||||
0 RUN EXPECT_EQ
|
||||
B0
|
||||
B0
|
||||
0 NUM 0
|
||||
0 OUT a
|
||||
B0
|
||||
2 NUM 0
|
||||
2 NUM 10
|
||||
1 RUN range
|
||||
0 RUN iter
|
||||
0 OUT _l0
|
||||
0 REF _r1
|
||||
0 REF _r2
|
||||
0 REF _r3
|
||||
0 OUT _l0.a1
|
||||
0 OUT _l0.a2
|
||||
0 OUT _l0.a3
|
||||
B0
|
||||
0 RUN _l0.__next__
|
||||
0 OUT i
|
||||
0 EST i
|
||||
0 JEZ 2
|
||||
B1
|
||||
1 REF a
|
||||
1 REF i
|
||||
0 OPT +
|
||||
0 OUT a
|
||||
B0
|
||||
0 JMP -1
|
||||
B0
|
||||
0 DEL _l0
|
||||
B0
|
||||
1 STR for_in_range
|
||||
1 REF a
|
||||
1 NUM 45
|
||||
0 RUN EXPECT_EQ
|
||||
B0
|
||||
B0
|
||||
0 RUN PikaStdData.List
|
||||
0 OUT list
|
||||
B0
|
||||
1 NUM 7
|
||||
0 RUN list.append
|
||||
B0
|
||||
1 STR eee
|
||||
0 RUN list.append
|
||||
B0
|
||||
0 RUN list.len
|
||||
0 OUT len
|
||||
B0
|
||||
1 REF list
|
||||
0 RUN iter
|
||||
0 OUT _l0
|
||||
B0
|
||||
0 RUN _l0.__next__
|
||||
0 OUT item
|
||||
0 EST item
|
||||
0 JEZ 2
|
||||
B1
|
||||
0 REF item
|
||||
0 OUT a
|
||||
B0
|
||||
0 JMP -1
|
||||
B0
|
||||
0 DEL _l0
|
||||
B0
|
||||
1 STR list_for_loop
|
||||
1 REF a
|
||||
1 STR eee
|
||||
0 RUN EXPECT_EQ
|
||||
B0
|
||||
B0
|
||||
B0
|
||||
0 RUN PikaStdData.List
|
||||
0 OUT list
|
||||
B0
|
||||
1 NUM 7
|
||||
0 RUN list.append
|
||||
B0
|
||||
1 STR eee
|
||||
0 RUN list.append
|
||||
B0
|
||||
0 RUN list.len
|
||||
0 OUT len
|
||||
B0
|
||||
1 NUM 0
|
||||
0 RUN list.get
|
||||
0 OUT a1
|
||||
B0
|
||||
1 NUM 1
|
||||
0 RUN uart.setId
|
||||
0 RUN list.get
|
||||
0 OUT a2
|
||||
B0
|
||||
1 NUM 115200
|
||||
0 RUN uart.setBaudRate
|
||||
1 REF list
|
||||
0 RUN iter
|
||||
0 OUT res
|
||||
B0
|
||||
0 RUN uart.enable
|
||||
1 STR iter
|
||||
1 REF res
|
||||
1 REF list
|
||||
0 RUN EXPECT_EQ
|
||||
B0
|
||||
B0
|
||||
0 RUN rgb.init
|
||||
0 RUN PikaStdData.Dict
|
||||
0 OUT dict
|
||||
B0
|
||||
0 RUN rgb.enable
|
||||
1 STR a
|
||||
1 NUM 1
|
||||
0 RUN dict.set
|
||||
B0
|
||||
1 STR b
|
||||
1 NUM 2
|
||||
0 RUN dict.set
|
||||
B0
|
||||
1 STR b
|
||||
0 RUN dict.remove
|
||||
B0
|
||||
1 STR a
|
||||
0 RUN dict.get
|
||||
0 OUT a
|
||||
B0
|
||||
1 STR b
|
||||
0 RUN dict.get
|
||||
0 OUT b
|
||||
B0
|
||||
1 STR PikaStdData
|
||||
1 REF a
|
||||
1 NUM 1
|
||||
0 RUN EXPECT_EQ
|
||||
B0
|
||||
1 STR PikaStdData_2
|
||||
1 REF b
|
||||
1 NUM 0
|
||||
0 RUN EXPECT_EQ
|
||||
B0
|
||||
B0
|
||||
1 STR hello 2
|
||||
0 NUM 0
|
||||
0 OUT num
|
||||
B0
|
||||
0 NUM 2
|
||||
0 OUT i
|
||||
B0
|
||||
2 NUM 2
|
||||
2 NUM 30
|
||||
1 RUN range
|
||||
0 RUN iter
|
||||
0 OUT _l0
|
||||
0 REF _r1
|
||||
0 REF _r2
|
||||
0 REF _r3
|
||||
0 OUT _l0.a1
|
||||
0 OUT _l0.a2
|
||||
0 OUT _l0.a3
|
||||
B0
|
||||
0 RUN _l0.__next__
|
||||
0 OUT i
|
||||
0 EST i
|
||||
0 JEZ 2
|
||||
B1
|
||||
0 NUM 2
|
||||
0 OUT j
|
||||
B1
|
||||
0 NUM 1
|
||||
0 OUT is_prime
|
||||
B1
|
||||
2 NUM 2
|
||||
2 REF i
|
||||
1 RUN range
|
||||
0 RUN iter
|
||||
0 OUT _l1
|
||||
0 REF _r1
|
||||
0 REF _r2
|
||||
0 REF _r3
|
||||
0 OUT _l1.a1
|
||||
0 OUT _l1.a2
|
||||
0 OUT _l1.a3
|
||||
B1
|
||||
0 RUN _l1.__next__
|
||||
0 OUT j
|
||||
0 EST j
|
||||
0 JEZ 2
|
||||
B2
|
||||
2 REF i
|
||||
2 REF j
|
||||
1 OPT %
|
||||
1 NUM 0
|
||||
0 OPT ==
|
||||
0 JEZ 1
|
||||
B3
|
||||
0 NUM 0
|
||||
0 OUT is_prime
|
||||
B3
|
||||
0 BRK
|
||||
B1
|
||||
0 JMP -1
|
||||
B1
|
||||
0 DEL _l1
|
||||
B1
|
||||
0 REF is_prime
|
||||
0 JEZ 1
|
||||
B2
|
||||
1 REF num
|
||||
1 REF i
|
||||
0 OPT +
|
||||
0 OUT num
|
||||
B0
|
||||
0 JMP -1
|
||||
B0
|
||||
0 DEL _l0
|
||||
B0
|
||||
1 STR prime_number_30
|
||||
1 REF num
|
||||
1 NUM 129
|
||||
0 RUN EXPECT_EQ
|
||||
B0
|
||||
B0
|
||||
B0
|
||||
1 STR ====================
|
||||
0 RUN print
|
||||
B0
|
||||
1 STR [Unit Tests Succeed]
|
||||
0 RUN print
|
||||
B0
|
||||
1 STR ====================
|
||||
0 RUN print
|
||||
B0
|
||||
1 STR mem used max:
|
||||
0 RUN print
|
||||
B0
|
||||
0 RUN mem.max
|
||||
B0
|
||||
B0
|
||||
0 REF True
|
||||
0 JEZ 2
|
||||
B1
|
||||
1 NUM 10
|
||||
0 RUN time.sleep_ms
|
||||
B1
|
||||
0 RUN rgb.flow
|
||||
B1
|
||||
1 STR flowing
|
||||
0 RUN print
|
||||
B0
|
||||
0 JMP -1
|
||||
B0
|
||||
B0
|
||||
|
Binary file not shown.
@ -1 +1 @@
|
||||
pikascript-core==v1.2.6
|
||||
pikascript-core==v1.5.2
|
Loading…
x
Reference in New Issue
Block a user