可處理中文Script的元件(含原始碼) |
|
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
可處理中文Script的元件(含原始碼)
範例畫面/程式請參考http://delphi.ktop.com.tw/topic.php?TOPIC_ID=43340
[元件用途] 基本上,可用於處理中文Script(程序式語言)或計算公式、測試演算法(可處理遞回)等, 也可任意變換調整語法中的語法符號、保留字、等等,自行設計出更具中文味的程式語言, 在Script的語法結構上可中英文交叉混用(eg. Begin ... End/開始 ... 結束/開始 ... End), 所有提供的函數程序都同時具備中文和英文寫法(eg. Showmessage()/顯示訊息()),當然也可 自行定義適當的中文別名增加Script的辨識能力。 不過,本元件採用Interpreter架構設計,因此執行Script時不需先行Compile但也因此,若 Script內容含迴圈或遞回程式碼的話,在執行效率上會比不上Compile架構的Script Engine [程式語法] 我在設計本Script元件,主要是參考Pascal Grammar修改而來,目前支援程度概述如下 定義函數 ->定義函數(Function) 定義程序 ->定義程序(Procedure) 定義變數 ->定義變數(Var) 條件判斷 -> 若 則 否則(if then else) 迴圈 -> 從 遞增到/遞減到 做(for to/downto do) -> 成立條件 做 (while do) -> 重複 直到(Repeat Until) 完整的數學及邏輯計算式 和 陳述(Expression/Statement) 另外,不支援自訂型態和型態檢查(換句話說Script本身在解譯過程中會自動做型態轉換) [元件用法簡易說明] 1.Install 如用Delphi 7 請直接開啟spTools.dpk後 Complie後Install即可 Delphi 6 應該一樣 Delphi 5 或 4(忘了!要稍微修改Source Code中的uses 區段,把variants拿掉) 安裝後會在spTools頁次出現兩個元件 2.Components TopInterpreter 用來處裡中文Script的元件 TopStdFuns 標準函數處理元件TopInterpreter透過本元件來處理函數,如要擴充元件的處理函數 請自行繼承本元件 TopInterpreter 重要屬性 Source:TStrings 用來指定Script程式碼 CompleteBooleanEval:Boolean 是否要完全計算完整個邏輯運算式(一般程式語言預設值皆為False) AutoCreateVariabe:boolean 是否要自動建立變數,若是則當在處理Script碰到未事先宣告或用程式碼 事先加入的變數則自動建立(預設值為False) SupportFuncs :TopStdFuns 用來指定處理函數的元件 Variables[VarName:String]:OleVariant 用來存取變數 ErrorMessage:String 紀錄解譯過程發生的錯誤訊息 TopInterpreter 重要方法 procedure AddVariable(VarName,VarAlias:String;Value:OleVariant;comment:string=''); 加入變數(變數名稱,變數別名,變數值) procedure RemoveVariable(VarName:String); 移除變數(變數名稱) procedure ClearVariables; 清除全部變數 procedure ClearScriptDefine; 清除執行Script後(即執行SyntaxCheck或Run之後)所建立的Functions/Variables function EvalExpression:Variant; 直接求公式值(此時Script只能含即指定敘述:= 右邊的計算式) function SyntaxCheck:boolean; 檢查Script語法是否正確不會出現執行期錯誤(比方說變數未設定初值導致除0), 若執行成功則傳回Ture,否則請自行參考ErrorMessage的錯誤訊息 function Run:boolean; 執行Script語法,若執行成功則傳回Ture,否則請自行參考ErrorMessage的錯誤訊息 procedure MarkDifferentTokens(Re:TRichEdit;AllRange:Boolean=False); 標示不同類型的語法元素,請參考InterpreterDemo procedure CreateGrammarDictionary(GD:TTreeView); 自動建立語法字典,請參考InterpreterDemo 請自行參考範例,懶的打了發表人 - speedup 於 2004/09/01 00:49:34
------
唉~
附加檔案:55724_spTools.rar
|
lau_ireton
一般會員 發表:0 回覆:1 積分:0 註冊:2003-11-12 發送簡訊給我 |
|
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |