Java词法分析器

时间:2014-03-16 13:29:49

标签: java lexical-analysis

我正在创建一个词法分析器。在我的代码中,我可以输出符号,但是当涉及到字母和数字时,我无法设计出我的代码...

请帮助我完成我的项目..谢谢

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 ");
            }

        }
    }
}

1 个答案:

答案 0 :(得分:1)

Character方法Character.isLetterCharacter.isDigit可以为您提供帮助。

然而,你不能只通过逐字扫描字符串来编写真正的词法分析器。词法分析器生成多字符令牌,通常用作状态机,由正则表达式定义。

自动分割在这里没用。例如,如果您将按空格分割输入字符串,12+34将是单个标记。所以你应该定义一些规则,例如,读取数字,同时有数字,等等。这导致了有限自动机(或状态机)的想法。