翻譯 指令碼引擎實現 第一部分 總攬

2021-04-12 13:18:32 字數 1795 閱讀 1005

譯者:tony qu

備註:本文語言十分口語化,如果覺得讀起來不舒服,可以告訴我,我會做適當修訂。

介紹

你的指令碼語言需要乙個指令碼引擎,為什麼呢?因為他們真的很酷,幾乎每個人都希望了解。

首先,你必須知道你需要的是哪種指令碼引擎,henry robinson曾經寫過乙個關於不同指令碼引擎的介紹(如果你沒有讀過那篇文章一定要讀一下)。在這篇系列文章中,我將討論乙個編譯器和虛擬機器系統,就像unrealscript一樣。

然而,也有一些缺陷

當然,我們不能因為這些原因而停下來,我們已經下定決心了,好了,從**開始呢?

必讀

由於unreal遲遲沒有發布,所以我才開始這個專案的。我瀏覽了他們的技術**並獲得了

unrealscript參考文件,我雖然曾經聽說過unrealscript,但我卻不知道它到底是什麼。我讀了文件,發覺指令碼語言是個很酷的東西,於是我打算自己實現,然後嵌入到遊戲引擎中去,這樣人們就可以方便地建立新的遊戲內容了。

很 幸運,上學期在編譯構建課程中,我寫了乙個類,這是我們的作業,老師要求我們實現簡單的pascal編譯器。接下來我就開始構建更好的編譯器了。我已經有 了乙個可執行版本,它可以接受c的部分語法,但我僅用了兩周時間完成它,所以內部結構很不好。因此我必須重新設計這個編譯器,我想在你的人生中也遇到過類 似的情況吧,於是我繼續我的工作,並且邊做邊學習編譯原理的知識。

好了,讓我們談一些有用的東西吧。

首先,我建議每乙個 打算編寫編譯器的朋友都去弄一本「龍書」,大部分人對這本書有了解,特別是像我這樣的計算機專業的學生一定了解這本書。我說的其實就是 aho, sethi和ullman寫的那本編譯器原理、技巧與工具(isbn 0-201-10194-7)。在它的封面上有一條龍,因此叫做「龍書」,而且幾乎每乙個了解編譯器的人都讀過這本書。

2023年以來,這本書就沒有改版過,因為自從二十世紀六十年代編譯器的設計技術就沒有改變過,當然這本書中不包含特定處理器優化的東西,當然有其他書有這方面的內容。另外我們是編譯到位元組碼,而不是機器碼。

其次,如果你在尋找實現位元組碼語言的快速入門教材,那麼請看gamesutra上的

我們需要什麼

通常,乙個編譯器由以下幾個部分組成

當你編寫完所有這些之後,你就可以構建乙個指令碼系統。

就這些嗎?

是不是覺得有些驚訝,是不是覺得似乎指令碼並沒有想象中的那麼酷,是不是只有使用dll才能做演示呢?不需要。我們接下來會討論每個部件的詳細部分,其中的大多數並沒有想象中的那麼無趣,其實要建立乙個完整的指令碼編輯器有很多事要做,雖然,結構化你的**是必須的。

接下來這份教材中,我們會開發乙個十分簡單的編譯器/虛擬機器系統,雖然它和完整的指令碼系統有很大差距,但是它實現了上面列出來的所有元件,實現的那個簡單指令碼語言是關於如何維護字串的。

最後我告訴大家一些有用的東西(就像denthor曾經做的那樣),既然我認為我不夠幽默,我更願意從一些十分著名的書中引用一些東西。我相信你知道我說的是哪些書,如果不知道,請在

這裡查詢。

引用

「但是計畫已經展示出來了……」

「展示出來了?我想我只有在地下室才能找到它們」

"那不就是展示廳嗎!"

"在那有火把"

"哦,火把可能早就燒完了"

"那估計樓梯也壞得差不多了"

"但是你看,你不是看到通知了嗎?!"

"是的," arthur說,"我是看到了,它曾經在那個被鎖住的塞滿東西的閣樓的底部,廁所的那個閣樓,廁所的門上還寫著' 小心獵豹' "

Axure RP 第一部分

axure rp是乙個專業的快速原型設計工具。axure 發音 ack sure 代表美國axure公司 rp則是rapid prototyping 快速原型 的縮寫。axure rp是美國axure software solution公司旗艦產品,是乙個專業的快速原型設計工具,讓負責定義需求和規格...

第一部分 初識Solr

第一章 solr簡介 這章主要包括內容 這本書講述nosql技術,apache solr 像它的非關係模式兄弟一樣,針對於某些問題進行了優化。特別的,solr在處理企業級大量資料 及時搜尋 文字資料 返回相關性結果等方面進行了很大優化。這裡說的只是冰山一角,讓我們從下面幾方面來進行詳細敘說 solr...

css排雷第一部分

import url basic.css warning urgent plant moons plant moons 1 a href span title feature lang en 選出屬性等於lang或者以lang開頭的所有元素。選擇h1 strong 可以解釋為選擇h1字元素中的所有s...