國立屏東大學

#新手 試著做了一個超微型程式語言

2022年11月10日 11:45 (已編輯)
一、簡介: 最近試著自己做了一個超微型程式語言,那就讓我們先來介紹它的語法吧~ (還有很多 bug 請見諒...) 這個程式語言提供了幾個基本的語法,包括: 1. var (宣告變數) 使用 var x = b 宣告變數,變數型態有 int、float、string,以及 array。 範例:
imgur
2. if() ... endif 使用 if() ... endif 判斷條件,條件僅接受簡單的 > 和 <(原諒它就只是個超微型語言...),沒有 else 語法。 範例:
imgur
3. for() ... endfor 使用 for() ... endfor 進行重複動作。 語法: for(<condition>; <opretion>) <condition> 僅接受 > 或 < <opretion> 僅接受 += 或 -= 範例:
imgur
4. print() 使用 print() ...,不然你還能拿 print 做什麼... 範例:
imgur
5. # 使用 # 來註解程式 範例:
imgur
二、範例程式 簡單的 print 1 to 100 的範例:
imgur
簡單的雙迴圈範例 print 5 'aaaaa' for 10 times:
imgur
簡單 print、if 搭配範例:
imgur
三、原理: 這個程式語言的執行分成兩個步驟:(1) 將程式語言轉為 assembly(2 pass);(2) 執行 assembly。 這個 Assembler 不會進行 lexical analysis,只會做簡單的 syntactic analysis。 第一步:將程式語言轉為 assembly 使用 assembler v2.py 將程式語言轉為 assembly。Assembly 的設計參考 SIC/XE。其他細節可以在 Github 上的原始碼內找到。 使用方法:python '.\assembler v2.py' '.\test v2.pi' '.\obj code v2.hic' test v2.pi 是指定 input file obj code v2.hic 是指定 output file(組譯出來的組合語言就在這裡) 第二步:執行 assembly 使用 excuter v2.py 執行 .hic 檔,來模擬 assembly 的執行。 使用方法:python '.\executer v2.py' '.\obj code v2.hic' obj code v2.hic 是指定 input file 讓我們看看剛才的簡單範例(print 1 to 100)。高階程式碼如下:
imgur
組譯出來的 hic code 如下:
imgur
四、其他 Github :
Required Python version : >= 3.10 Required packages : os, sys, random, string ========== 更新 Update to version 3.0 這次的更新大幅改版 if、for 等語法,並新增 while、else、input、句尾分號(可要可不要)等新語法。終於變得比較像樣了~ 一、語法 1. var(變數宣告) 和 v2 語法差不多,只是新增了句尾分號。(一行可以疊很多個) 範例:
imgur
2. if() ... else ... 新增 else,並且支援 ==、!=、>=、<=、<、> 等條件式。與 v2 最大差別在於要執行的程式需放在 {} 內。 範例:
imgur
也接受一個 if:
imgur
3. for() ... 更新 for loop 語法。使用方法如下: for(<initial>, <condition>, <opretion>) <initial> 初始化條件(變數宣告) <condition> 接受==、!=、>=、<=、<、> 等條件式 <opretion> 每次迴圈結束時執行程式(+=、-=等) 範例:
imgur
4. while() v3 新增語法,跟一般的 while 差不多。 範例:
imgur
5. cal cal 運算式,接受 a (+-*/)= b 和 a = b (+-*/) c 兩種格式。 範例:
imgur
6. input() 使用 input() 函式取得使用者輸入,函式內放入要存入輸入之變數名稱。 範例:
imgur
三、簡單小小小遊戲:
imgur
二、其他 Github :
Required Python version : >= 3.10 Required packages : os, sys, random, string, copy
愛心WOW哈哈
68
留言 19
文章資訊