我試圖做我的編譯器的類sintax文本修正。我們的想法是:我有一些規則,這是固有的語言(在我的情況下,葡萄牙),像「一個有效的短語是受動詞形容詞」,如「Ruby是巨大的」。如何創建一個解析器來標記從文件中獲取的單詞列表?
好了,首先我來標記輸入「Ruby是巨大的」。所以我有一個文本文件「動詞」,有很多動詞,一行一行。然後,我有一個文本「形容詞」,一個「代名詞」等等
我試圖用Ragel創建一個解析器,但我不知道我怎麼會做這樣的事情:
%%{
machine test;
subject = <open-the-subjects-file-and-accept-each-one-of-them>;
verb = <open-the-verbs-file-and-accept-each-one-of-them>;
adjective = <open-the-adjective-file-and-accept-each-one-of-them>;
main = subject verb adjective @ { print "Valid phrase!" } ;
}%%
我看了ANTLR,Lex/Yacc,Ragel等,但找不到能解決這個問題的人。我能想到的唯一方法就是預處理Ragel的輸入文件,以便我的程序讀取文件並將其內容寫入正確的位置。但我也不喜歡這個解決方案。
有誰知道我怎麼能做到這一點?沒有問題,如果它不是與Ragel,我只是想解決這個問題。我想使用Ruby或Python,但這也不是必需的。
謝謝。