java 中导入和方法调用的词法分析
Lexical Analysis for import and method calls in java
import
语句和方法调用如何在 java 的词法分析中标记化。例如:
import java.util.Scanner
这是否被视为 import
、java
、util
、Scanner
(4 个标记)或 import
、java.util.Scanner
(2代币)
同样的思路,在:
Scanner input = new Scanner(System.in);
int x = input.nextInt();
是input.nextInt()
被视为input
、nextInt()
(2个标记)或input.nextInt()
(1个标记)
我相信导入将是 1 个词法分析。 Apache Antlr 是定义语法的工具。 Java也是一样
我建议通过导入 Java 语法来使用 Apache Antlr。这将给出正确的解决方案。
Chapter 3 of the JLS中描述了词法分析。
这意味着在您的第一个示例中,它将被标记为
keyword: import
whitespace
identifier: java
seperator: .
identifier: util
seperator: .
identifier: Scanner
seperator: ;
所以既不是 2 也不是 4,而是 8 个标记(因为根据 JLS,空格和分隔符是标记)。
同样,input.nextInt();
是 6 个令牌,因为 (
和 )
都是一个令牌(参见 JLS § 3.11)。
import
语句和方法调用如何在 java 的词法分析中标记化。例如:
import java.util.Scanner
这是否被视为 import
、java
、util
、Scanner
(4 个标记)或 import
、java.util.Scanner
(2代币)
同样的思路,在:
Scanner input = new Scanner(System.in);
int x = input.nextInt();
是input.nextInt()
被视为input
、nextInt()
(2个标记)或input.nextInt()
(1个标记)
我相信导入将是 1 个词法分析。 Apache Antlr 是定义语法的工具。 Java也是一样
我建议通过导入 Java 语法来使用 Apache Antlr。这将给出正确的解决方案。
Chapter 3 of the JLS中描述了词法分析。
这意味着在您的第一个示例中,它将被标记为
keyword: import
whitespace
identifier: java
seperator: .
identifier: util
seperator: .
identifier: Scanner
seperator: ;
所以既不是 2 也不是 4,而是 8 个标记(因为根据 JLS,空格和分隔符是标记)。
同样,input.nextInt();
是 6 个令牌,因为 (
和 )
都是一个令牌(参见 JLS § 3.11)。