用于java中的导入和方法调用的词法分析
问题描述:
import
如何在java的词法分析中对语句和方法调用进行标记。例如:用于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 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)。
答
我相信导入将是1个词法分析。 Apache Antlr是定义语法的工具。 Java也是一样。
我会推荐使用Apache Antlr通过导入Java语法。这会给出正确的解决方案。
更好的迟到然后永远不会 –