0

正如我在这个问题中所说,我正在使用 DFA 来跟踪所有评论、字符串等。我完成了这个具有 11 个状态的 DFA。

现在我要编写 DFA 来识别 java 中的关键字。

主意:

最初,pos=0。pos 每次转换都加 1。

iskeyword() 是我自己的函数。

isalnum() 可以被任何用户定义的函数替换,这取决于未来的需求。

(许多不相关的转换和自循环虽然存在于实际的 DFA 中,但并未提供)。

(q0) -- !isalnum(pos)-------> (q1) ---iskeyword(pos,pos+len)---> (pos+=len)(q2)----- ! isalnum(pos)-------->(q3[使读取的关键字加粗])---iskeyword(pos,pos+len)-->(q2)。

它至少需要 4 个状态。上述方法与 DFA 的正常实现有很大不同。

我的问题是……

  1. 我可以按照上述方法吗?这样做是对的吗?(如果有效)
  2. 如果我必须以上述方式实现这一点,我该怎么做?构建单独的 DFA 以提高可读性?或者我可以将此 DFA 与识别评论、字符串的 DFA 结合起来(以减少状态数)
4

0 回答 0