我目前对什么样的输入下推自动化感到困惑。我知道它们背后的概念(过渡,状态,堆栈,符号,弹出等),但我真的不明白:
A)如果我们需要来自a-z和0-9的所有字符,那么字母表就是因为我们正在解析标记而不是单个字符,例如典型的101或ABAB示例。
B)下推是否接受令牌。例如:如果找到令牌“TOK_IF”,则转到下一个转换或状态。
你能否告诉我关于A点和B点的事情?我真的很困惑。
答案 0 :(得分:1)
(确定性)下推 - 自动机可用于解析(确定性)无上下文语言。 可以通过单个字符定义该语言的语法,这些字符构成要解析的文本。然而,这需要大量的州。
因此,预先解析关键字和标识符到令牌(通常由词法分析器)更有效(并且更容易制定和理解语法)并对待这些令牌是一个单一的实体。 Lexers的实现速度比使用pushdown-automaton和大量州执行相同的工作要快得多。