我正在创建一个词法分析器。在我的代码中,我可以输出符号,但是当涉及到字母和数字时,我无法设计出我的代码...
请帮助我完成我的项目..谢谢
package lab7;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Lab7 {
public static void main(String[] args) {
String word;
char[] wordArray;
Scanner sc = new Scanner(System.in);
wordArray = word.toCharArray();
for(int x = 0; x < wordArray.length; x++) {
if(wordArray[x] == '+') {
System.out.print("ADD ");
}
else if(wordArray[x] == '-') {
System.out.print("SUBTRACT ");
}
else if(wordArray[x] == '*') {
System.out.print("MULTIPLY ");
}
else if(wordArray[x] == '/') {
System.out.print("DIVIDE ");
}
else if(wordArray[x] == '(') {
System.out.print("MATH ");
}
else if(wordArray[x] == ')') {
System.out.print("MATH ");
}
else if(wordArray[x] == '=') {
System.out.print("ASSIGN ");
}
}
}
}
答案 0 :(得分:1)
Character
方法Character.isLetter
和Character.isDigit
可以为您提供帮助。
然而,你不能只通过逐字扫描字符串来编写真正的词法分析器。词法分析器生成多字符令牌,通常用作状态机,由正则表达式定义。
自动分割在这里没用。例如,如果您将按空格分割输入字符串,12+34
将是单个标记。所以你应该定义一些规则,例如,读取数字,同时有数字,等等。这导致了有限自动机(或状态机)的想法。