从零开始开发JVM语言(二)词法分析
目录戳 这里 词法分析的工作是,将输入的字符串转化为结构清晰的 Token 通常来说,这个 Token 需要包含两样东西,词 和 类型 ##词 什么是词呢?例如,输入串如下: val num = 3 * 7 从直觉上(语法高亮也帮助了我们)可以看出,它由如下几部分组成 val num = 3 * 7 我们不会把 val 拆成 v al 或者其他什么形式,因为它是一个“词” “词”表示用于解析的最小单元。词的规定很宽泛,像emoji语言,它的一个词很可能就是一个emoji图像(虽然我没研究过不过大概如此吧。。)而对于主流的编程语言,词通常为一串字母,数字,某些特殊符号(运算符) 注:如下方式的原理和自动机一致,但是性能没有自动机高。好处在于手写实现几乎不可能出错。 在 Latte 中,词有如下规定 Scanner.java#L95 如下的符号 // SPLIT ".", ":", "::", "=", "+=", "-=", "*=", "/=", "%=", "<<", ">>", ">>>", "&", "^", "|", "~", "^^", "!", "&&", "||", "!=", "==", "!==", "===", "<", ">", "<=", ">=", "+", "-", "*", "/", "%", "++", "--", "@", "=:=", "!:="