0
我已經開始編寫自己的詞法分析器,並且由於它們具有與它們相關聯的開始(「)和結束(」)字符而導致令牌化字符串出現問題。Lexer:在標記時處理未終止的字符串
有沒有人知道一個常見的技術,一個詞法分析器可以應付並繼續lexing與一個未終止的字符串? 我認爲ANTLR可以做到這一點,這是由ANTLR的ATN處理?
我可以看到有是兩個問題在這裏假設字符串必須終止在同一行:
- 字符串終止發生在一個單獨的行 - 因此警告說,串只能在一個單一的放在用戶線。
- 字符串終止不會發生,那麼您什麼時候知道要繼續的有效點是?在新行後使用下一個有效標記的啓發式。
即
char *mystring = "my string which is unterminated....
int id = 20;
我在另一個答案的地方讀到,錯誤處理要比解析器而不是詞法分析器好得多。你對此有何看法,以及如何通過它,因爲這裏沒有標記...... – Har
@har:肯定有一個集中處理錯誤的說法,但是詞法錯誤總是會在掃描器中被檢測到。我通常只是調用'yyerror'來報告錯誤;在不好的情況下(同樣適用於不好的數字),通常沒有其他需要做的事情。當然,你可以返回一個「不好的字面量」標記,然後在解析器中產生一個錯誤信息,並生成一個單元,將'BAD_LITERAL'變成一個'value'(或者任何非終端的base)錯誤。 – rici