📜  扫描仪中的 java 小写 - Java (1)

📅  最后修改于: 2023-12-03 14:54:32.707000             🧑  作者: Mango

扫描仪中的 java 小写 - Java

Java 扫描仪是一种用于读取和分析 Java 源文件的工具。它通常用于编写语法高亮和代码维护工具。在 Java 扫描仪中,小写的词汇对于在编码环境中处理源代码是至关重要的。本文将介绍如何在 Java 扫描仪中识别小写 Java。

Java 扫描仪

Java 扫描仪是一个用于分析 Java 源代码的程序。它将源代码作为输入,并将其转换为一个抽象的表示。 Java 扫描仪主要由两大组件组成:词法分析器语法分析器

词法分析器

词法分析器是 Java 扫描仪的第一步。它负责从原始源代码中抽出词法单元,并将它们转换为具有实际含义的标记。 例如,下面是一个代表 Java 方法的源代码示例:

public void doSomething(int arg1, int arg2) {
    // do something
}

词法分析器将此代码转换为一系列标记。每个标记表示源代码中的一个单词,例如 public、void、doSomething、(、)、,、和 { 。 除此之外,词法分析器还识别了一些不可见的标记,如空格、制表符和回车符。

语法分析器

语法分析器是 Java 扫描仪的第二步。它负责将标记作为输入,并将它们转换为一棵语法树。 语法树是一个表示代码结构的嵌套结构。 在以下示例中,语法分析器将利用上面的标记创建以下语法树。

MethodDefinition:
    Modifiers? Type Identifier (FormalParameterList?)
        (throws TypeNameList?)? MethodBody

从 Java 9 开始,Java 扫描仪API开始将识别小写,以便正确解析 Java 9 模块化系统。 这包括根据源代码中的大小写区分标识符和关键字。 但是,对于大多数情况,Java 扫描仪还是不区分大小写。 换句话说,Java 扫描仪可以在源代码中忽略大小写标识符。

识别小写 Java

如果要在 Java 扫描仪中识别小写 Java,您需要使用 **Scanner.javaLowerCaseMode()**方法。 这个方法强制Java扫描仪将所有识别标识符的小写。 需要注意的是,它只适用于识别标识符(如类名称,方法名称和变量名称),而不应用于关键字。

以下是一个示例,演示如何将 Java 扫描仪切换到小写模式:

Scanner scanner = Scanner.forSourceString("public class Test {}");
scanner.javaLowerCaseMode();
Token token = scanner.scan();
while (token != Token.EOF) {
    System.out.println(token.toString());
    token = scanner.scan();
}

输出将是:

PUBLIC
CLASS
test
{
}

请注意,识别了公共和类,但没有识别 Test

结论

在许多情况下,您无需担心在 Java 扫描仪中识别小写 Java。 但是,如果你需要正确地处理大小写敏感的语法,请使用 **Scanner.javaLowerCaseMode()**方法,以便保持识别标识符的小写。

参考资料