用于java中的导入和方法调用的词法分析

用于java中的导入和方法调用的词法分析

问题描述:

import如何在java的词法分析中对语句和方法调用进行标记。例如:用于java中的导入和方法调用的词法分析

import java.util.Scanner

被此视为importjavautilScanner(4令牌)或importjava.util.Scanner(2个令牌)

在同样的思路,在:

Scanner input = new Scanner(System.in); 
int x = input.nextInt(); 

input.nextInt()看作input,nextInt()(2 toke ns)或input.nextInt()(1令牌)

词法分析在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)。

+0

更好的迟到然后永远不会 –

我相信导入将是1个词法分析。 Apache Antlr是定义语法的工具。 Java也是一样。

我会推荐使用Apache Antlr通过导入Java语法。这会给出正确的解决方案。