Skip to content

Latest commit

 

History

History
99 lines (82 loc) · 3.76 KB

File metadata and controls

99 lines (82 loc) · 3.76 KB

文件

目錄

Compiler

說明

最主要的類別,會呼叫 ScannerParser 來對輸入的 HiZollo Script 程式進行解析和建碼。

建構子

const compiler = new Compiler(options: CompilerOptions)

成員函式

  • compile(source: string):編譯給定的 HiZollo Script 程式碼。回傳一個 CompileResult 物件。

ExecutionWorker

說明

一個將 Worker 包裝起來的類別,可以設定程式執行時間上限,輔助安全執行編譯後的 HiZollo Script。

建構子

const ew = new ExecutionWorker(code: string)
  • code: 要執行的程式。

成員函式

  • execute(options: ExecuteOptions):執行程式。回傳一個 Promise<void> 表示成功結束。

Errors

一個表示錯誤內容的列舉,內容與對應中文敘述如下:

  • UnknownStatement:未知敘述
  • UnknownIdentifier:未知用途識別字
  • CantImportCoreModule:不能手動引入核心模組
  • AlreadyImported:已經引入此模組
  • LateImport:匯入敘述應該放在程式開頭
  • MissingModuleName:遺漏模組名稱
  • ModuleNotFound:找不到模組
  • MissingNumber:遺漏數字
  • MissingString:遺漏字串
  • MissingIdentifier:遺漏識別字
  • IdentifierNotDefined:變數未宣告
  • RedeclareIdentifier:變數重複宣告
  • MissingLeftBracket:遺漏左括號
  • MissingRightBracket:遺漏右括號
  • MissingRightSquareBracket:遺漏右中括號
  • MissingRightCurlyBracket:遺漏右大括號
  • MissingAssignOperator:遺漏指定運算符
  • MissingArrow:遺漏箭頭
  • InvalidComparation:關係運算子錯誤
  • InappropriateBreakStatement:跳出敘述只能出現在迴圈內
  • UseDisabledFunction:使用被禁用的函數

Tokens

一個表示所有 Token 種類的列舉,請參考原始碼

類別定義

CompilerOptions

一個物件,有以下的鍵值對:

  • includesPathMap 物件。
  • disabledFunctionsstring[],列出被禁用的函式。

PathMap

一個鍵值都為字串的物件,其鍵表示套件之名稱,值為套件程式之路徑或程式碼。有關套件知詳細敘述請看

CompileResult

一個物件,有以下的鍵值對:

  • errorCount:編譯錯誤數量。
  • errorMessages:編譯錯誤訊息,是一個 ErrorOutput 物件。
  • build:建碼,是一個 BuildResult 物件。

BuildResult

一個物件,有以下的鍵值對:

  • full:完整的建碼。在編譯錯誤數量不為 0 時不保證建碼可運作或運作結果符合預期。
  • partial:除去模組以外的建碼。

ErrorOutput

一個物件,有以下的鍵值對:

  • textify:格式化好的編譯錯誤訊息。
  • errors:一個 CompileError[] 物件。

CompileError

一個物件,有以下的鍵值對:

  • error: Errors 列舉的值,對應到此錯誤編號。
  • errorText: 字串,對應到此錯誤中文敘述。
  • line: 數字,對應到此錯誤發生之行號。
  • column: 數字,對應到此錯誤發生之符號最右邊於該行之索引值。
  • token: Tokens 列舉的值,且應小於 Tokens.MAX_TERMINAL_TOKEN,表示發生錯誤之 Token 值。

ExecuteOptions

一個物件,有以下的鍵值對:

  • maxExecutionTime:此程式的最大執行時間,以毫秒計,輸入 0 以下的數字來表示無限制。