「Felys」簡易腳本語言【簡介】

【制作初衷】
在自學了C語言一段時間之后,很迫切地想把學到的理論應(yīng)用起來,卻苦于沒有合適的項目去玩,后來偶然看到了一個博主講解cpython源代碼的時候,我就琢磨著要不寫個簡易的解釋器玩玩。畢業(yè)暑假開始時查了一點資料,了解到了一種叫逆波蘭表達式的東西,決定以此為基礎(chǔ)開始構(gòu)思,并在稍作休息一周之后寫下了第一行代碼。

在寫代碼的時候即會考慮添加一些新的功能也不得不舍棄一些難以支持的,在不斷的試錯和均衡之下創(chuàng)造出了Felys。即使這和正真的編程語言是完全兩回事,但依然是一次非常有趣辛苦的實踐。順便提一嘴名字的由來,因為我非常喜歡崩三的帕朵和愛莉,所以把她們名字合并了一下(Pardofelis & Elysia)得到了Felys這個簡單但有特點的名字。

【設(shè)計目標】
因為我沒有系統(tǒng)地學過編譯器(解釋器)和C語言,所以一切從簡,最低限度的實現(xiàn)必要的功能。數(shù)據(jù)類型只有雙浮點型,表達式可以支持基礎(chǔ)的四則運算和比較符,邏輯方面則支持循環(huán)、判斷、跳行,這里不涉及字符/列表/函數(shù)/對象等概念。

Felys語言語法示例
【核心邏輯】
整個解釋器一共分為兩個部分:解析和運算。解析部分會讀取源文件,并且以鏈表的形式存儲,鏈表的每一條包括六個數(shù)據(jù):行號、作用域、關(guān)鍵字、表達式、下一行、跳行,并且會將其中關(guān)鍵字所內(nèi)涵的邏輯全部解析出來(聽起來有點抽象,之后會具體介紹)。運算則會根據(jù)將已經(jīng)解析完成的鏈表,一步一步往下運行直到鏈表盡頭,原理大致為讀取關(guān)鍵字,使用逆波蘭算法計算表達式,根據(jù)關(guān)鍵字和表達式結(jié)果決定是執(zhí)行下一行還是跳行到其他地方去。