簡體   English   中英

是否可以將ANTLR3語法轉換為正則表達式?

[英]Is it possible to convert ANTLR3 grammar into regular expression?

我有一個ANTLR3簡單語法分析器,該語法分析器接受短文本行並將其轉換為Java對象。 接下來,我有大量的文本行。 其中一些(少於1%)可以轉換,因為它們與語法匹配。

我需要將它們全部傳遞通過解析器,以了解哪些是可轉換的,並創建Java對象的集合。 操作非常耗時。 在將它們發送給ANTLR3之前,通過正則表達式傳遞它們會更加有效。

我可以自己創建這樣的正則表達式,但是從ANTLR3解析器動態獲取它會更好。 有可能嗎?

通常,只有常規語言才能具有描述它們的正則表達式。 (大多數RE引擎都支持與某些非常規語言(例如,通過反向引用)相匹配的功能,但仍不是所有與上下文無關的語言,甚至不是通用的形式語言。)

我並不是真正的antlr專家,但是我想它的語法可以匹配不可重新匹配的語言。

因此,即使您的問題在理論上也沒有真正解決,它也取決於語法。

可能是

  • 您的語法實際上是常規語法,或者
  • 有一門普通的語言是您的語法語言的略微超集-因此,RE可以過濾掉大多數不匹配的行,而有些則只會被語法/解析器過濾掉。

如果不看語法,很可能沒有確定的方法。

另外,正則表達式不一定比解析器要快。

具體來說,ANTLR可以解析上下文無關文法的 LL(*)子類。

要判斷您的語言是否為常規語言 ,請查看是否可以對常規語言應用抽水引理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM