用java实现词法分析器
时间: 2023-10-01 07:04:47 浏览: 185
词法分析器是编译器的重要组成部分,用于将输入的程序代码转换为单词流以供语法分析器使用。在Java中,可以使用正则表达式和有限状态自动机来实现词法分析器。
以下是一个简单的示例,演示如何使用Java实现词法分析器:
```java
import java.util.regex.*;
public class Lexer {
private String input;
private Pattern pattern;
private Matcher matcher;
public Lexer(String input) {
this.input = input;
this.pattern = Pattern.compile("\\s*(\\d+|[a-zA-Z]+|.)");
this.matcher = pattern.matcher(input);
}
public boolean hasNextToken() {
return matcher.find();
}
public String getNextToken() {
return matcher.group(1);
}
}
```
在上面的代码中,我们定义了一个Lexer类,它包含一个输入字符串和一个正则表达式模式。我们可以使用hasNextToken()和getNextToken()方法来遍历输入字符串中的所有单词。
该正则表达式模式匹配所有空格和数字或字母字符。在getNextToken()方法中,我们返回匹配的第一个分组(即单词本身)。
示例用法:
```java
Lexer lexer = new Lexer("int x = 42;");
while (lexer.hasNextToken()) {
String token = lexer.getNextToken();
System.out.println(token);
}
```
输出:
```
int
x
=
42
;
```
阅读全文