2013-02-07 34 views
0

我知道這個問題是非常通用的,因此很難回答。當解析的文件被程序寫入時,使用解析器生成器或手寫代碼?

我需要解析一個文本文件,內容類似於配置文件。它包含可測量信號的描述,如何轉換爲物理單位,註釋,描述等。如果此文件是由人類編寫的,那麼我會使用解析器生成器,如lex/yacc或ANTLR。但由於這個文件是由其他程序寫的,它總是格式正確等。

我應該使用一個解析器生成器無論如何,或者是該文件是由其他程序編寫的原因編寫不同類型的解析器通過手工編碼?

+0

我會說這取決於你想分析的語法。如果它非常簡單並且不是遞歸的,那麼手動編寫解析器而不是使用解析器生成器是非常好的。 – piokuc

+0

更改其他程序,寫出'xml'代替:) –

+1

值得一提的是XML。 – LtWorf

回答

0

對我來說聽起來很複雜,省去了時間和麻煩,並且使用lex/yacc,如果文件是由程序生成的,這並不重要,它只是意味着在解析時不必驗證它,但無論如何,如果你使用lex/yacc,你可以免費獲得。另外,如果使用生成器,對格式的更改將更容易處理。

1
  1. 不解決掉已經一個問題解決了

  2. 如果你有工具來完成你的工作給你,然後使用工具。所以,如果你可以使用ANTLR或LEX/YACC,那麼就直接使用它來代替手工編寫一個詞法分析器和一個分析器。

這將大大減少工作

來源:The Art of Unix Programming - By Eric S. Raymond

+0

順便說一句,LEX/YACC比滾動你自己更容易理解和使用。每次。 –