当你看一个语言的EBNF描述,你经常看到的整数和实数的定义:数字的识别属于扫描仪还是解析器?
integer ::= digit digit* // Accepts numbers with a 0 prefix
real ::= integer "." integer (('e'|'E') integer)?
(定义是在飞行中做,我可能已经在他们犯了一个错误)。
虽然它们出现在上下文无关的语法中,但数字通常在词法分析阶段被识别出来。它们是否包含在语言定义中以使其更加完整,并且要由实施者认识到他们实际上应该在扫描仪中?