我正在嘗試爲利用關鍵字對(由空格分隔)的文件類型編寫解析器,並且正在以正確的方式掙扎。令牌的一些例子可能是:確定lex中的關鍵字對
angle spring
angle dampen
angle collision
也有結束該塊,例如塊定義和標記:
dynamics
angle spring 1.0
angle dampen 0.0
angle collision 0.0
some 1 2 3
more ['stuff' 'here']
tokens "values can be strings, paths, etc"
end dynamics
換行似乎是顯著,我一直在使用它來確定如果我正在查看關鍵字或只是一個普通的舊字符串(關鍵字應該是每行中的第一個標記)。我以正確的方式接近這個嗎?我是否應該在yacc階段將所有內容標記爲一對並更嚴格地定義配對?
謝謝你的時間!
我不明白問題在哪裏。標記時只需使用正則表達式'angle \ spring',並且解析器不需要知道它實際上使用了空格。如果間距可以是任意的,你可以使用像'angle \ s + spring'這樣的正則表達式來定義關鍵詞標記。如果這不是你想要的,你應該用一個例子來澄清你的意思。 – Bakuriu 2014-10-27 20:22:23
我遵循ply文檔(http://www.dabeaz.com/ply/ply.html,4.3標記規範)中描述的保留關鍵字示例,該示例在決定它是隻是一個字符串。我想爲所有使用空格的令牌創建特殊規則? – spencewah 2014-10-27 20:26:02