2016-09-18 37 views
1

當我學習lex工具時,我發現它有助於以文本格式解析源文件,比如構建新的編程語言等。我還用它來構建工具來分析一些二進制輸入流,如編解碼器/解碼器。可以使用lex/flex來解析二進制格式的源文件嗎?

是否lex/flex/yacc/bison支持這樣的需求,他們是否有特殊的命令行選項和語法來啓用它?

謝謝!

回答

1

Flex(和我熟悉的其他lex實現)對非ascii字符(包括NUL字符)沒有問題。您可能必須使用8bit選項,儘管它是默認選項,除非您請求快速狀態表。

但是,大多數二進制格式使用長度前綴可變長度字段,它不能用正則表達式表示。而且,固定長度字段與上下文相關是相當普遍的;您可以使用啓動條件在flex中構建一個狀態機,但這樣做很多工作,並且可能會浪費您的時間和flex的功能。

+1

對於帶有「長度前綴可變長度」字段而不是lex的二進制文件,您會推薦哪種工具? – Janthelme