首先使用最大修改规则将文件标记化(转换为标记序列)-始终获得尽可能长的有效标记。您的文本将转换为以下顺序:
n ++ ++ n
这是无效的表达。
根据JLS§3.2:
3.2。词汇翻译使用以下三个词法转换步骤,将原始Unipre字符流转换为标记序列:
将Unipre字符原始流中的Unipre转义(第3.3节)转换为相应的Unipre字符。
uxxxx格式的Unipre转义符,其中xxxx是十六进制值,表示编码为xxxx的UTF-16代码单元。此翻译步骤允许任何程序仅使用ASCII字符表示。将步骤1产生的Unipre流转换为输入字符和行终止符流(第3.4节)。
3.
将步骤2产生的输入字符和行终止符流转换为一系列输入元素(§3.5),该元素在空格(§3.6)和注释(§3.7)之后被丢弃,由标记(§3.5)组成它们是句法语法(第2.3节)的结尾符号。即使结果最终不能正确编写程序,而每个词汇翻译都可以使用,也要在每个步骤中使用最长的翻译。
(因此,输入字符
a--b被标记为(§3.5)为a, --, b,即使标记化a, -, -,b可能是语法正确的程序的一部分,也不是任何语法正确的程序的一部分。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)