目前,我对哪种输入下推式自动化技术感到困惑。我知道它们背后的概念(转换,状态,堆栈,符号,弹出等),但我真的不明白:

A)字母表用于是否需要a-z和0-9中的所有字符,因为我们要分析标记而不是单个字符,例如典型的101或ABAB示例。

B)下推式甚至接受 token 吗?例如:如果找到 token “TOK_IF”,则转到下一个转换或状态。

您能给我关于点A和点B的启发吗?我真的很困惑。

最佳答案

(确定性)下推自动机可用于解析(确定性)上下文无关的语言。
可以在单个字符上定义此语言的语法,这些字符构成要分析的文本。但是,这需要大量的状态。

因此,将关键字和标识符预解析为 token (通常由词法分析器)并将这些 token 视为单个实体会更有效(更容易形成和理解语法)。 Lexers的实现比使用下推自动机和大量州来完成相同工作的速度要快得多。

10-01 21:58