Browse Source

add test cases in main.py, add PikaStdData

lyon 4 years ago
parent
commit
a67c1dbd62

+ 91 - 31
bsp/simulation-keil-dev/MDK-ARM/mimiscript-demo.uvoptx

@@ -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>

+ 28 - 3
bsp/simulation-keil-dev/MDK-ARM/mimiscript-demo.uvprojx

@@ -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 - 0
bsp/simulation-keil-dev/pikascript/PikaStdData.py

@@ -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

+ 73 - 6
bsp/simulation-keil-dev/pikascript/main.py

@@ -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)

+ 2 - 0
bsp/simulation-keil-dev/pikascript/pikascript-api/PikaMain-api.c

@@ -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 it is too large
+ 0 - 0
bsp/simulation-keil-dev/pikascript/pikascript-api/compiler-info.txt


+ 72 - 6
bsp/simulation-keil-dev/pikascript/pikascript-api/pikaScript.c

@@ -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;
 }

+ 51 - 0
bsp/simulation-keil-dev/pikascript/pikascript-lib/PikaStdData/PikaStdData.py

@@ -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

+ 24 - 0
bsp/simulation-keil-dev/pikascript/pikascript-lib/PikaStdData/PikaStdData_Dict.c

@@ -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;
+}

+ 55 - 0
bsp/simulation-keil-dev/pikascript/pikascript-lib/PikaStdData/PikaStdData_List.c

@@ -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;
+}

+ 2 - 2
bsp/simulation-keil-dev/pikascript/requestment.txt

@@ -1,2 +1,2 @@
-pikascript-core==v1.3.0
-PikaStdLib==v1.3.0
+PikaStdLib==latest
+PikaStdData==latest

+ 14 - 128
bsp/stm32g030c8/pikascript/main.py

@@ -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)
+adc = STM32G0.ADC()
+pin = STM32G0.GPIO()
+pwm = STM32G0.PWM()
+uart = STM32G0.UART()
+rgb = PikaPiZero.RGB()
+mem = PikaStdLib.MemChecker()
 
-# fruit init
-f = PikaPiZero.Point()
-f.x = 30
-f.y = 20
-lcd.fill(f.x, f.y, w, h, 'green')
+rgb.init()
+rgb.enable()
 
-# memory check
-mem = PikaStdLib.MemChecker()
+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 - 0
port/linux/api-make-linux.sh


Some files were not shown because too many files changed in this diff