構想 用c 寫乙個簡單的直譯器

2021-03-31 19:03:06 字數 1092 閱讀 2959

構想:用c#寫乙個簡單的直譯器

不知道有什麼用,玩玩而已。

提供常用畫圖函式(line,moveto,li***o,fill...)

提供常用數學函式(sin,cos...)

提供常用運算子(+ - * /) 用來計算座標

使用者可定義變數(暫時都是整型) 實現賦值語句  實現for迴圈 其他語句再說了

現在還不打算讓使用者定義區域性變數

文法:程式::[語句...]

語句::[迴圈/賦值/定義變數/命令]

迴圈::for ident:=表示式 to 表示式 do 語句

賦值::ident:=表示式;

定義變數::ident:type;

命令::命令名([表示式,]...);

表示式::[+/-]項[+/-項]...

項::因子[*//因子]

因子::數字/變數/(表示式)

後來想想覺得下面的文法描述要好一些  命令與函式的區別僅僅在於命令是內建的

程式::變數申明部分 函式申明部分 程式分段

變數申明部分::[變數申明].....

變數申明::變數名:型別[=數字];

函式申明部分::[函式申明/過程申明]......

函式申明::function 函式名(引數列表):返回值 begin 程式分段 end;

過程申明::procedure 過程名 (引數列表)begin 程式分段 end;

程式分段::begin [語句]....... end;

語句::[迴圈/賦值/命令/函式]

迴圈::for ident:=數字 to 數字 do 語句

賦值::ident:=表示式;

命令::命令名(引數列表);

函式::函式名(引數列表);

表示式::[+/-]項[+/-項]...

項::因子[*//因子]

因子::數字/變數/(表示式)

變數和值的關係,可以用雜湊來儲存,函式應該怎麼來做呢?

記錄函式定義的位置,然後等呼叫的時候找到定義繼續執行?看來只好如此。

引數列表用乙個結構陣列,函式名與引數列表的關係則用雜湊表。ok就這樣做。

希望有懂編譯原理的朋友指點指點

小白想用C語言寫乙個背單詞的程式

該考四級了,所以。c語言板塊比較冷啊,所以就來oc這邊問一下,oc的斑竹天天都能見到,很有愛。我只想寫乙個簡單的命令列程式。程式提示單詞漢語解釋,然後讓使用者在下方輸入英文,回車,程式判斷正誤,然後下一題。現在困擾的問題是,我在書上沒有看到能夠動態操作命令提示符的方法。現在我能建立的命令提示符都是死...

C 編寫乙個直譯器

一直想知道如何編寫一門指令碼語言,現在終於有機會實現了。非常感謝 thorsten ball 的大作 writing an interpreter in go 幫助我實現了這個想法!可能你比較好奇為啥這個專案叫 autumn,因為剛好這個專案是在國慶節開始的,正好是秋天,就以當時的季節命名了。c 是...

用PHP寫乙個最簡單的直譯器Part3

總想成為一名寫作技巧高超的作家,卻一不小心成為了碼農。不知道,大家有沒有看原文作者的一些看法 傳送門 我們為什麼要學習新的知識,我們應該如何學習新的知識。看過很多書,卻沒有記住多少,有時候覺得自己就像魚一樣,真的只有七秒的記憶。正如原作者所說的,學習知識最好的方法就是去實踐。這樣才可以將知識掌握。之...