我正在Java
为我的学期项目制作一个基本的词法分析器,但我与我的学科老师在一个概念上存在冲突。
我的观点是,一般来说,如果像“1a”这样的输入被提供给词法分析器,那么它应该给出如下输出:
"<Number><Identifier>"
但是,我的老师说它应该将此标记为错误,因为它不应将其视为数字和标识符,而是应将整个字符串(即“1a”)标记为错误。这是因为(正如他所说)标识符不能以数字开头。
相反,我认为这应该是编译器(语法分析器)下一阶段的责任,以决定某些东西是否是有效的标识符。我知道他对不以数字开头的标识符是正确的,但我需要关闭词法分析器应该决定这一点的部分。
我将非常感谢您的帮助。谢谢