著色器的狀態(tài)機一般都比詞法分析器的狀態(tài)機簡單,因為我們總是使用一個顏色來表達一些類型的記號(譬如操作符、數(shù)字和名字一般都用同樣的顏色——黑色)。因此我們每當(dāng)支持一種新語言或者當(dāng)語言升級的修改IDE的時候,總是要同時修改兩個狀態(tài)機。手寫狀態(tài)機是很容易出錯的,就如同手寫語法分析器也很容易出錯一樣。語法分析器的解決辦法是讓你給文法來生成語法分析器的代碼,因此詞法分析器和著色器也使用類似的方法:給狀態(tài)機生成代碼。
目前這個狀態(tài)機只做了一半:只能畫狀態(tài),暫時還不能指定顏色或者記號類型。當(dāng)然添加一個指定顏色的功能是很簡單的,不過我還需要想一想如何用圖像來表達,讓狀態(tài)機顯得更清晰。今天做了一個晚上搞定了狀態(tài)機的編輯程序,如圖所示:

接下來就可以開發(fā)兩個功能,第一個是生成著色器的代碼,第二個是生成詞法分析器的代碼。這樣就可以避免因為程序?qū)戝e從而省下一大堆調(diào)試的時間了。