我目前正在阅读“Dragon Book”(编译器:原理、技术和工具),我有点卡在使用 DFA(确定性有限自动机)的词法分析章节。
DFA 是一个二维数组,第一维包含状态,第二维包含转换符号。这意味着每个 DFA 状态都包含该语言的所有符号。书中的例子使用了一种小语言(通常是两个符号),它们在本章末尾做了如下注释:“因为一个典型的词法分析器在其 DFA 中有数百个状态,并且涉及 128 个输入字符的 ASCII 字母表,数组消耗不到一兆字节”。
但是,对于匹配字符串,我想匹配所有字符,这意味着整个字符集,并且很多输入文件使用 UTF-8 编码。这导致字母表以及 DFA 的大小大幅增加。
这就是我卡住的地方。词法分析器或正则表达式模拟器通常如何处理这个问题?
谢谢!