我一直在努力尋找無處不在的例子,但它是徒勞的。野牛的語義類型檢查分析
我想寫一個基本的Ruby解釋器。爲此,我編寫了一個包含令牌識別語句的flex詞法文件和一個語法文件。
我希望我的語法包含語義類型檢查。
我的語法文件包含,例如:
arg : arg '+' arg
這應該是整數和浮點數的有效規則。
據我讀過,我可以爲一個非終端如精氨酸指定類型,就像這樣:
%type <intval> arg
其中「INTVAL」是在類型工會和對應於INT C類。
但是,這只是整數,我不知道如何使規則有效,例如,浮動。 我想到了有兩個不同的規則,一個是整數,一個用於花車,如:
argint : argint '+' argint
argfloat : argfloat '+' argfloat
,但我相信有這樣做的很多很多更好的辦法,因爲這種暴行需要我有規則允許在浮動和整數之間添加。
我發現的所有例子都只有一種類型(通常是類似計算器的例子中的整數)。
我該如何實現指定像添加這樣的規則可以有整數和浮點數作爲參數?
非常感謝。
你誤解%類型的目的。它可以控制你自己的語法終端和非終端的類型,在YYUNION中使用,所以你不必爲你的$$,$ 1等編寫類型轉換:不允許你控制語義類型在你解析的程序中。 – EJP