Я создаю лексический анализатор. в моем коде я могу выводить символы, но когда дело доходит до букв и цифр, я не могу спроектировать, какой будет мой код в этом.
пожалуйста, помогите мне в моем проекте.. спасибо
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 ");
}
}
}
}
Character
методы Character.isLetter
и Character.isDigit
могут помочь вам здесь.
Однако вы не можете написать реальный лексический анализатор, только сканируя строковое письмо буквой. Лексический анализатор создает многосимвольные токены и обычно реализуется как конечный автомат, который определяется регулярными выражениями.
Автоматическое расщепление здесь бесполезно. Например, если вы разделите строку ввода пробелами, 12+34
будет единственным токеном. Поэтому вы должны определить некоторые правила, например, читать цифры, в то время как есть цифры и т.д. Это приводит к идее конечного автомата (или конечного автомата).