「Felys」簡(jiǎn)易腳本語(yǔ)言【變量】

【概述】
如前文所說(shuō),F(xiàn)elys語(yǔ)言是有局部變量,這部分聽(tīng)起來(lái)很復(fù)雜很為會(huì)涉及到作用域的問(wèn)題,實(shí)則不然,我們只需要一個(gè)并不復(fù)雜的單鏈表和頭插法就可以做到。

【頭插法】
我們只需要知道鏈表入口即可,有新的節(jié)點(diǎn)進(jìn)入時(shí),就把入口的指針指向新節(jié)點(diǎn),再將新節(jié)點(diǎn)的指針指向原本的第一個(gè)節(jié)點(diǎn)地址即可。

【原理】
訪問(wèn)、修改、創(chuàng)建變量無(wú)非會(huì)遇到兩種情況,即存在或不存在,比如:第五層作用域中的變量可以訪問(wèn)當(dāng)前及一下的所有變量,卻不能訪問(wèn)到可能存在的第六層;又一個(gè)第五層的變量,隨著程序的執(zhí)行指令已經(jīng)回到第二層作用域,那么就算之后再有觸及到第五層作用域,也不應(yīng)該可以訪問(wèn)以前第五層作用域的變量。換而言之,一旦離開(kāi)一個(gè)作用域,那么我們就可以直接刪除這個(gè)作用域,這樣是不是一下子就變得很簡(jiǎn)單了。你甚至可以用棧的概念去理解,即進(jìn)入新的scope則壓入一個(gè)作用域,如果退出一個(gè)作用域就彈出一個(gè)作用域,不過(guò)我們并不用棧去實(shí)現(xiàn),因?yàn)闂J遣挥脕?lái)給我們遍歷按照變量的,作為替代,單鏈表配合頭插法完美符合我們的需求。


【變量操作】
訪問(wèn)、修改、創(chuàng)建本質(zhì)都是需要先從最里入口最近的當(dāng)前作用域開(kāi)始遍歷,只是后續(xù)操作有區(qū)別。訪問(wèn)函數(shù)是被用在計(jì)算的時(shí)候,所以如果找不到變量我們需要直接報(bào)錯(cuò)。

修改和創(chuàng)建是一個(gè)函數(shù)完成,先是嘗試尋找變量名,如果找到了就直接修改值,如果找不到就在離入口最近的當(dāng)前作用域添加變量。

【總結(jié)】
這應(yīng)該是最簡(jiǎn)單的一個(gè)模塊了,只花了兩天就從構(gòu)思到制作完成,算是當(dāng)時(shí)寫完代碼解析部分后小憩一下了。