我目前正在考慮在Java中實現顯示here的語言。演示文稿有點長,但它本質上是創建動態語音的DSL。 例子:使用ANTLR,JavaCC或JFlex優於StringTokenizer及其等價物有什麼優點/缺點?
rule ExampleRule
{
criteria Criterion1 Criterion2 Criterion3=value
response ExampleResponse
remember State:=1
trigger Object TriggerName
ApplyFacts "State1:1:0,State2:1:0"
}
response ExampleResponse
{
say "Text" then object ExampleRule
say "Text" then any ExampleRule
say "Text"
scene "Scenepath"
}
我已經看過了不同的解析器生成如ANTLR,JavaCC的和JFlex的,但我不知道是否只是使用的StringTokenizer /掃描儀和推出自己的解析器,因爲它是一個愛好項目。
我以前決定使用ANTLR,但在生成的源代碼中使用完整路徑名遇到了ANTLR的一些問題,運行時庫似乎有點重量級。我無法找到比較三個解析器庫或內置Java替代品的更多信息。
考慮到語言的性質,每個解析器的優缺點是什麼?
這一切都取決於你的語言有多複雜。沒有細節(即語言的語法),這個問題就危險地接近「不具建設性」的領域,因爲它要求意見/討論。我建議你包含語言的語法或詳細說明。 –
添加了對該語言描述的鏈接。 – fullwall
TL; DR但您需要更大的解析器生成器:-) –