mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
add test cases in main.py, add PikaStdData
This commit is contained in:
parent
a546e523ec
commit
a67c1dbd62
@ -548,17 +548,41 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>27</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\pikascript\pikascript-lib\PikaStdData\PikaStdData_Dict.c</PathWithFileName>
|
||||
<FilenameWithoutPath>PikaStdData_Dict.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>28</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\pikascript\pikascript-lib\PikaStdData\PikaStdData_List.c</PathWithFileName>
|
||||
<FilenameWithoutPath>PikaStdData_List.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>pikascript-api</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>27</FileNumber>
|
||||
<FileNumber>29</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -570,7 +594,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>28</FileNumber>
|
||||
<FileNumber>30</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -582,7 +606,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>29</FileNumber>
|
||||
<FileNumber>31</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -594,7 +618,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>30</FileNumber>
|
||||
<FileNumber>32</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -606,7 +630,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>31</FileNumber>
|
||||
<FileNumber>33</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -618,7 +642,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>32</FileNumber>
|
||||
<FileNumber>34</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -630,7 +654,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>33</FileNumber>
|
||||
<FileNumber>35</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -642,7 +666,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>34</FileNumber>
|
||||
<FileNumber>36</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -654,7 +678,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>35</FileNumber>
|
||||
<FileNumber>37</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -664,6 +688,42 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>38</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\pikascript\pikascript-api\PikaStdData_Dict-api.c</PathWithFileName>
|
||||
<FilenameWithoutPath>PikaStdData_Dict-api.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\pikascript\pikascript-api\PikaStdData_List-api.c</PathWithFileName>
|
||||
<FilenameWithoutPath>PikaStdData_List-api.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>40</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\pikascript\pikascript-api\PikaStdData-api.c</PathWithFileName>
|
||||
<FilenameWithoutPath>PikaStdData-api.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
@ -674,7 +734,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>36</FileNumber>
|
||||
<FileNumber>41</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -686,7 +746,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>37</FileNumber>
|
||||
<FileNumber>42</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -698,7 +758,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>38</FileNumber>
|
||||
<FileNumber>43</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -710,7 +770,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<FileNumber>44</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -722,7 +782,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>40</FileNumber>
|
||||
<FileNumber>45</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -734,7 +794,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>41</FileNumber>
|
||||
<FileNumber>46</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -746,7 +806,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>42</FileNumber>
|
||||
<FileNumber>47</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -758,7 +818,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>43</FileNumber>
|
||||
<FileNumber>48</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -770,7 +830,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>44</FileNumber>
|
||||
<FileNumber>49</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -782,7 +842,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>45</FileNumber>
|
||||
<FileNumber>50</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -794,7 +854,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>46</FileNumber>
|
||||
<FileNumber>51</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -806,7 +866,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>47</FileNumber>
|
||||
<FileNumber>52</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -818,7 +878,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>48</FileNumber>
|
||||
<FileNumber>53</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -830,7 +890,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>49</FileNumber>
|
||||
<FileNumber>54</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -842,7 +902,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>50</FileNumber>
|
||||
<FileNumber>55</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -854,7 +914,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>51</FileNumber>
|
||||
<FileNumber>56</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -868,13 +928,13 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>python</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>52</FileNumber>
|
||||
<FileNumber>57</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -886,7 +946,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>53</FileNumber>
|
||||
<FileNumber>58</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -898,7 +958,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>54</FileNumber>
|
||||
<FileNumber>59</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -910,7 +970,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>55</FileNumber>
|
||||
<FileNumber>60</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -134,11 +134,11 @@
|
||||
<RunIndependent>0</RunIndependent>
|
||||
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
|
||||
<Capability>1</Capability>
|
||||
<DriverSelection>4101</DriverSelection>
|
||||
<DriverSelection>4096</DriverSelection>
|
||||
</Flash1>
|
||||
<bUseTDR>1</bUseTDR>
|
||||
<Flash2>BIN\UL2CM3.DLL</Flash2>
|
||||
<Flash3></Flash3>
|
||||
<Flash3>"" ()</Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
@ -337,7 +337,7 @@
|
||||
<v6Rtti>0</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define>USE_HAL_DRIVER,STM32F103xE</Define>
|
||||
<Define>USE_HAL_DRIVER,STM32F103xE,__VM_DEBUG__</Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;..\pikascript\pikascript-api;..\..\..\src</IncludePath>
|
||||
</VariousControls>
|
||||
@ -533,6 +533,16 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\pikascript\pikascript-lib\PikaStdLib\PikaStdLib_RangeObj.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>PikaStdData_Dict.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\pikascript\pikascript-lib\PikaStdData\PikaStdData_Dict.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>PikaStdData_List.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\pikascript\pikascript-lib\PikaStdData\PikaStdData_List.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
@ -583,6 +593,21 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\pikascript\pikascript-api\PikaStdLib_RangeObj-api.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>PikaStdData_Dict-api.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\pikascript\pikascript-api\PikaStdData_Dict-api.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>PikaStdData_List-api.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\pikascript\pikascript-api\PikaStdData_List-api.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>PikaStdData-api.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\pikascript\pikascript-api\PikaStdData-api.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
|
51
bsp/simulation-keil-dev/pikascript/PikaStdData.py
Normal file
51
bsp/simulation-keil-dev/pikascript/PikaStdData.py
Normal file
@ -0,0 +1,51 @@
|
||||
from PikaObj import *
|
||||
|
||||
|
||||
class List(TinyObj):
|
||||
def __init__():
|
||||
pass
|
||||
|
||||
# add an arg after the end of list
|
||||
def append(arg: any):
|
||||
pass
|
||||
|
||||
# get an arg by the index
|
||||
def get(i: int) -> any:
|
||||
pass
|
||||
|
||||
# set an arg by the index
|
||||
def set(i: int, arg: any):
|
||||
pass
|
||||
|
||||
# get the length of list
|
||||
def len() -> int:
|
||||
pass
|
||||
|
||||
def __iter__() -> any:
|
||||
pass
|
||||
|
||||
def __next__() -> any:
|
||||
pass
|
||||
|
||||
|
||||
class Dict(TinyObj):
|
||||
def __init__():
|
||||
pass
|
||||
|
||||
# get an arg by the key
|
||||
def get(key: str) -> any:
|
||||
pass
|
||||
|
||||
# set an arg by the key
|
||||
def set(key: str, arg: any):
|
||||
pass
|
||||
|
||||
# remove an arg by the key
|
||||
def remove(key: str):
|
||||
pass
|
||||
|
||||
def __iter__() -> any:
|
||||
pass
|
||||
|
||||
def __next__() -> any:
|
||||
pass
|
@ -1,14 +1,81 @@
|
||||
from PikaObj import *
|
||||
import Device
|
||||
import PikaStdLib
|
||||
import PikaStdData
|
||||
|
||||
mem = PikaStdLib.MemChecker()
|
||||
|
||||
|
||||
for i in range(1, 100):
|
||||
print(i)
|
||||
|
||||
print('mem used max:')
|
||||
mem.max()
|
||||
print('mem used now:')
|
||||
mem.now()
|
||||
|
||||
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 ]')
|
||||
print('')
|
||||
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
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)
|
@ -4,6 +4,7 @@
|
||||
#include "PikaMain.h"
|
||||
#include "PikaStdLib_SysObj.h"
|
||||
#include "Device.h"
|
||||
#include "PikaStdData.h"
|
||||
#include "PikaStdLib.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -12,6 +13,7 @@
|
||||
PikaObj *New_PikaMain(Args *args){
|
||||
PikaObj *self = New_PikaStdLib_SysObj(args);
|
||||
obj_newObj(self, "Device", "Device", New_Device);
|
||||
obj_newObj(self, "PikaStdData", "PikaStdData", New_PikaStdData);
|
||||
obj_newObj(self, "PikaStdLib", "PikaStdLib", New_PikaStdLib);
|
||||
return self;
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@ -11,14 +11,80 @@ PikaObj * pikaScriptInit(){
|
||||
"\n"
|
||||
"mem = PikaStdLib.MemChecker()\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"for i in range(1, 100):\n"
|
||||
" print(i)\n"
|
||||
"\n"
|
||||
"print('mem used max:')\n"
|
||||
"mem.max()\n"
|
||||
"print('mem used now:')\n"
|
||||
"mem.now()\n"
|
||||
"\n"
|
||||
"def EXPECT_EQ(test_name, input, expected):\n"
|
||||
" print('-----TEST-----')\n"
|
||||
" print(test_name)\n"
|
||||
" if input != expected:\n"
|
||||
" print('[Error]')\n"
|
||||
" print(test_name)\n"
|
||||
" print('[info] Expected:')\n"
|
||||
" print(expected)\n"
|
||||
" print('[info] Input:')\n"
|
||||
" print(input)\n"
|
||||
" # error\n"
|
||||
" while True:\n"
|
||||
" is_error = 1\n"
|
||||
" else:\n"
|
||||
" print('[ OK ]')\n"
|
||||
" print('')\n"
|
||||
"\n"
|
||||
"a = 0\n"
|
||||
"for i in range(0, 10):\n"
|
||||
" if i == 5:\n"
|
||||
" continue\n"
|
||||
" a = a + i\n"
|
||||
"EXPECT_EQ('for_if_continue', a, 40)\n"
|
||||
" \n"
|
||||
"a = 0\n"
|
||||
"for i in range(0, 10):\n"
|
||||
" if i == 5:\n"
|
||||
" break\n"
|
||||
" a = a + i\n"
|
||||
"EXPECT_EQ('for_if_break', a, 10)\n"
|
||||
"\n"
|
||||
"a = 0\n"
|
||||
"for i in range(0, 10):\n"
|
||||
" for k in range(0, 3):\n"
|
||||
" # print(k)\n"
|
||||
" a = a + k\n"
|
||||
"EXPECT_EQ('for_for_in_range', a, 30)\n"
|
||||
"\n"
|
||||
"a = 0\n"
|
||||
"for i in range(0, 10):\n"
|
||||
" # print(i)\n"
|
||||
" a = a + i\n"
|
||||
"EXPECT_EQ('for_in_range', a, 45)\n"
|
||||
"\n"
|
||||
"list = PikaStdData.List()\n"
|
||||
"list.append(7)\n"
|
||||
"list.append('eee')\n"
|
||||
"len = list.len()\n"
|
||||
"for item in list:\n"
|
||||
" # print(item)\n"
|
||||
" a = item\n"
|
||||
"EXPECT_EQ('list_for_loop', a, 'eee')\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"list = PikaStdData.List()\n"
|
||||
"list.append(7)\n"
|
||||
"list.append('eee')\n"
|
||||
"len = list.len()\n"
|
||||
"a1 = list.get(0)\n"
|
||||
"a2 = list.get(1)\n"
|
||||
"res = iter(list)\n"
|
||||
"EXPECT_EQ('iter', res, list)\n"
|
||||
"\n"
|
||||
"dict = PikaStdData.Dict()\n"
|
||||
"dict.set('a', 1)\n"
|
||||
"dict.set('b', 2)\n"
|
||||
"dict.remove('b')\n"
|
||||
"a = dict.get('a')\n"
|
||||
"b = dict.get('b')\n"
|
||||
"EXPECT_EQ('PikaStdData', a, 1)\n"
|
||||
"EXPECT_EQ('PikaStdData_2', b, 0)\n"
|
||||
"\n");
|
||||
return pikaMain;
|
||||
}
|
||||
|
@ -0,0 +1,51 @@
|
||||
from PikaObj import *
|
||||
|
||||
|
||||
class List(TinyObj):
|
||||
def __init__():
|
||||
pass
|
||||
|
||||
# add an arg after the end of list
|
||||
def append(arg: any):
|
||||
pass
|
||||
|
||||
# get an arg by the index
|
||||
def get(i: int) -> any:
|
||||
pass
|
||||
|
||||
# set an arg by the index
|
||||
def set(i: int, arg: any):
|
||||
pass
|
||||
|
||||
# get the length of list
|
||||
def len() -> int:
|
||||
pass
|
||||
|
||||
def __iter__() -> any:
|
||||
pass
|
||||
|
||||
def __next__() -> any:
|
||||
pass
|
||||
|
||||
|
||||
class Dict(TinyObj):
|
||||
def __init__():
|
||||
pass
|
||||
|
||||
# get an arg by the key
|
||||
def get(key: str) -> any:
|
||||
pass
|
||||
|
||||
# set an arg by the key
|
||||
def set(key: str, arg: any):
|
||||
pass
|
||||
|
||||
# remove an arg by the key
|
||||
def remove(key: str):
|
||||
pass
|
||||
|
||||
def __iter__() -> any:
|
||||
pass
|
||||
|
||||
def __next__() -> any:
|
||||
pass
|
@ -0,0 +1,24 @@
|
||||
#include "PikaObj.h"
|
||||
#include "PikaStdLib_SysObj.h"
|
||||
#include "PikaStdData_Dict.h"
|
||||
|
||||
Arg* PikaStdData_Dict_get(PikaObj* self, char* key) {
|
||||
return arg_copy(obj_getArg(self, key));
|
||||
}
|
||||
|
||||
void PikaStdData_Dict___init__(PikaObj* self) {}
|
||||
|
||||
void PikaStdData_Dict_set(PikaObj* self, Arg* arg, char* key) {
|
||||
obj_setArg(self, key, arg);
|
||||
}
|
||||
|
||||
void PikaStdData_Dict_remove(PikaObj* self, char* key) {
|
||||
PikaStdLib_SysObj_remove(self, key);
|
||||
}
|
||||
|
||||
Arg * PikaStdData_Dict___iter__(PikaObj *self){
|
||||
return NULL;
|
||||
}
|
||||
Arg * PikaStdData_Dict___next__(PikaObj *self){
|
||||
return NULL;
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
#include "BaseObj.h"
|
||||
#include "PikaObj.h"
|
||||
|
||||
void PikaStdData_List_append(PikaObj* self, Arg* arg) {
|
||||
int top = obj_getInt(self, "top");
|
||||
char buff[11];
|
||||
char* topStr = fast_itoa(buff, top);
|
||||
PikaObj* pyload = obj_getObj(self, "pyload", 0);
|
||||
obj_setArg(pyload, topStr, arg);
|
||||
/* top++ */
|
||||
obj_setInt(self, "top", top + 1);
|
||||
}
|
||||
|
||||
int PikaStdData_List_len(PikaObj* self) {
|
||||
return obj_getInt(self, "top");
|
||||
}
|
||||
|
||||
Arg* PikaStdData_List_get(PikaObj* self, int i) {
|
||||
char buff[11];
|
||||
char* index = fast_itoa(buff, i);
|
||||
PikaObj* pyload = obj_getObj(self, "pyload", 0);
|
||||
return arg_copy(obj_getArg(pyload, index));
|
||||
}
|
||||
void PikaStdData_List___init__(PikaObj* self) {
|
||||
/* set top index for append */
|
||||
obj_setInt(self, "top", 0);
|
||||
obj_newObj(self, "pyload", "", New_TinyObj);
|
||||
}
|
||||
|
||||
void PikaStdData_List_set(PikaObj* self, Arg* arg, int i) {
|
||||
char buff[11];
|
||||
char* i_str = fast_itoa(buff, i);
|
||||
int top = obj_getInt(self, "top");
|
||||
if (i > top) {
|
||||
obj_setErrorCode(self, 1);
|
||||
obj_setSysOut(self, "[error]: index exceeded lengh of list.");
|
||||
}
|
||||
PikaObj* pyload = obj_getObj(self, "pyload", 0);
|
||||
obj_setArg(pyload, i_str, arg);
|
||||
}
|
||||
|
||||
Arg* PikaStdData_List___iter__(PikaObj* self) {
|
||||
obj_setInt(self, "__iter_i", 0);
|
||||
return arg_setPtr(NULL, "", TYPE_POINTER, self);
|
||||
}
|
||||
|
||||
Arg* PikaStdData_List___next__(PikaObj* self) {
|
||||
int __iter_i = args_getInt(self->list, "__iter_i");
|
||||
Arg* res = PikaStdData_List_get(self, __iter_i);
|
||||
if(NULL == res){
|
||||
return arg_setNull(NULL);
|
||||
}
|
||||
args_setInt(self->list, "__iter_i", __iter_i + 1);
|
||||
return res;
|
||||
}
|
@ -1,2 +1,2 @@
|
||||
pikascript-core==v1.3.0
|
||||
PikaStdLib==v1.3.0
|
||||
PikaStdLib==latest
|
||||
PikaStdData==latest
|
@ -1,137 +1,23 @@
|
||||
from PikaObj import *
|
||||
import PikaStdLib
|
||||
import PikaPiZero
|
||||
import STM32G0
|
||||
import PikaPiZero
|
||||
import PikaStdLib
|
||||
|
||||
# hardware init
|
||||
lcd = PikaPiZero.LCD()
|
||||
lcd.init()
|
||||
lcd.clear('white')
|
||||
key = PikaPiZero.KEY()
|
||||
key.init()
|
||||
time = STM32G0.Time()
|
||||
x_max = 120
|
||||
y_max = 150
|
||||
|
||||
# snake init
|
||||
s = PikaPiZero.Point()
|
||||
w = 9
|
||||
h = 9
|
||||
s.x = 50
|
||||
s.y = 10
|
||||
len = 0
|
||||
while len < 3:
|
||||
b = s
|
||||
i = 0
|
||||
while i < len:
|
||||
b = b.next
|
||||
i = i + 1
|
||||
b.next = PikaPiZero.Point()
|
||||
b.next.x = b.x - 10
|
||||
b.next.y = b.y
|
||||
b.next.prev = b
|
||||
len = len + 1
|
||||
# ring link
|
||||
b.next = s
|
||||
s.prev = b
|
||||
|
||||
i = 0
|
||||
b = s
|
||||
while i < len:
|
||||
lcd.fill(b.x, b.y, w, h, 'blue')
|
||||
b = b.next
|
||||
i = i + 1
|
||||
|
||||
print('snake lengh')
|
||||
print(len)
|
||||
|
||||
# fruit init
|
||||
f = PikaPiZero.Point()
|
||||
f.x = 30
|
||||
f.y = 20
|
||||
lcd.fill(f.x, f.y, w, h, 'green')
|
||||
|
||||
# memory check
|
||||
adc = STM32G0.ADC()
|
||||
pin = STM32G0.GPIO()
|
||||
pwm = STM32G0.PWM()
|
||||
uart = STM32G0.UART()
|
||||
rgb = PikaPiZero.RGB()
|
||||
mem = PikaStdLib.MemChecker()
|
||||
|
||||
rgb.init()
|
||||
rgb.enable()
|
||||
|
||||
print('hello 2')
|
||||
print('mem used max:')
|
||||
mem.max()
|
||||
|
||||
# main loop
|
||||
d = 0
|
||||
isUpdate = 1
|
||||
isEat = 0
|
||||
while True:
|
||||
if isUpdate:
|
||||
# isUpdate = 0
|
||||
# check eat fruit
|
||||
if f.x == s.x and f.y == s.y:
|
||||
# have eat fruit
|
||||
isEat = 1
|
||||
f.x = f.x + 30
|
||||
if f.x > x_max:
|
||||
f.x = f.x - x_max
|
||||
f.y = f.y + 30
|
||||
if f.y > y_max:
|
||||
f.y = f.y - y_max
|
||||
lcd.fill(f.x, f.y, w, h, 'green')
|
||||
# move snake by the direction
|
||||
if d == 0:
|
||||
x_new = s.x + 10
|
||||
y_new = s.y
|
||||
if x_new > x_max:
|
||||
x_new = 0
|
||||
elif d == 1:
|
||||
x_new = s.x
|
||||
y_new = s.y - 10
|
||||
if y_new < 0:
|
||||
y_new = y_max
|
||||
elif d == 2:
|
||||
x_new = s.x
|
||||
y_new = s.y + 10
|
||||
if y_new > y_max:
|
||||
y_new = 0
|
||||
elif d == 3:
|
||||
x_new = s.x - 10
|
||||
y_new = s.y
|
||||
if x_new < 0:
|
||||
x_new = x_max
|
||||
if isEat:
|
||||
isEat = 0
|
||||
b_new = PikaPiZero.Point()
|
||||
b_new.x = x_new
|
||||
b_new.y = y_new
|
||||
b_new.prev = s.prev
|
||||
b_new.next = s
|
||||
s.prev.next = b_new
|
||||
s.prev = b_new
|
||||
s = b_new
|
||||
len = len + 1
|
||||
print('snake lengh')
|
||||
print(len)
|
||||
print('mem used max:')
|
||||
mem.max()
|
||||
# drow the snake and fruit
|
||||
# clear last body
|
||||
lcd.fill(s.prev.x, s.prev.y, w, h, 'white')
|
||||
# new body
|
||||
s.prev.x = x_new
|
||||
s.prev.y = y_new
|
||||
# head is last body
|
||||
s = s.prev
|
||||
lcd.fill(s.x, s.y, w, h, 'blue')
|
||||
b = s
|
||||
i = 0
|
||||
# scan key
|
||||
key_val = key.get()
|
||||
if key_val == 0:
|
||||
d = 0
|
||||
isUpdate = 1
|
||||
elif key_val == 1:
|
||||
d = 1
|
||||
isUpdate = 1
|
||||
elif key_val == 2:
|
||||
d = 2
|
||||
isUpdate = 1
|
||||
elif key_val == 3:
|
||||
d = 3
|
||||
isUpdate = 1
|
||||
print('flowing')
|
||||
rgb.flow()
|
||||
|
||||
|
0
port/linux/api-make-linux.sh
Executable file → Normal file
0
port/linux/api-make-linux.sh
Executable file → Normal file
0
port/linux/api-make-win10.sh
Executable file → Normal file
0
port/linux/api-make-win10.sh
Executable file → Normal file
0
port/linux/api-make.sh
Executable file → Normal file
0
port/linux/api-make.sh
Executable file → Normal file
0
port/linux/gtest.sh
Executable file → Normal file
0
port/linux/gtest.sh
Executable file → Normal file
0
port/linux/init.sh
Executable file → Normal file
0
port/linux/init.sh
Executable file → Normal file
0
port/linux/make.sh
Executable file → Normal file
0
port/linux/make.sh
Executable file → Normal file
0
port/linux/package/pikascript/rust-msc-latest-linux
Executable file → Normal file
0
port/linux/package/pikascript/rust-msc-latest-linux
Executable file → Normal file
0
port/linux/pkg-push.sh
Executable file → Normal file
0
port/linux/pkg-push.sh
Executable file → Normal file
0
port/linux/pull-core.sh
Executable file → Normal file
0
port/linux/pull-core.sh
Executable file → Normal file
0
port/linux/push-core.sh
Executable file → Normal file
0
port/linux/push-core.sh
Executable file → Normal file
0
port/linux/test-banchmark.sh
Executable file → Normal file
0
port/linux/test-banchmark.sh
Executable file → Normal file
0
port/linux/update-compiler.sh
Executable file → Normal file
0
port/linux/update-compiler.sh
Executable file → Normal file
Loading…
x
Reference in New Issue
Block a user