⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scantest.java

📁 词法分析器 词法分析 lex java编写
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */import java.util.Scanner;import java.util.ArrayList;/** * * @author zhaowei */public class ScanTest {    private boolean error = false;    public void newTest() {        Scanner scanner = new Scanner(System.in);        ArrayList<Result> result = scan(scanner.nextLine().toLowerCase()+" ");        if(!error) {            for(Result current : result) {                System.out.println(current.toString());            }        }    }    public ArrayList<Result> scan(String input) {        ArrayList<Result> result = new ArrayList<Result>();        int index = 0;        while(index<input.length()-1) {            while(input.charAt(index)==' ') {                if(index==input.length()-1)                    return result;                index++;            }            if(input.charAt(index)<='z'&&input.charAt(index)>='a') {                int startIndex = index;                index++;                while((input.charAt(index)>='a'&&input.charAt(index)<='z')||(input.charAt(index)>='0'&&input.charAt(index)<='9')) {                    index++;                }                if(input.substring(startIndex,index).equals("if")) {                    result.add(new Result("if","-"));                }                else if(input.substring(startIndex,index).equals("then")) {                    result.add(new Result("then","-"));                }                else if(input.substring(startIndex,index).equals("else")) {                    result.add(new Result("else","-"));                }                else if(input.substring(startIndex,index).equals("while")) {                    result.add(new Result("while","-"));                }                else if(input.substring(startIndex,index).equals("do")) {                    result.add(new Result("do","-"));                }                else {                    result.add(new Result("IDN",input.substring(startIndex,index)));                }            }            else if(input.charAt(index)>='1'&&input.charAt(index)<='9') {                int startIndex = index;                index++;                while(input.charAt(index)>='0'&&input.charAt(index)<='9') {                    index++;                }                result.add(new Result("INT10",input.substring(startIndex,index)));            }            else if(input.charAt(index)=='0') {                int startIndex = index;                index++;                if(input.charAt(index)>='0'&&input.charAt(index)<='7') {                    index++;                    while(input.charAt(index)>='0'&&input.charAt(index)<='7') {                        index++;                    }                    result.add(new Result("INT8",input.substring(startIndex,index)));                }                else if(input.charAt(index)=='x') {                    index++;                    if((input.charAt(index)>='0'&&input.charAt(index)<='9')||(input.charAt(index)>='a'&&input.charAt(index)<='f')) {                        index++;                    }                    while((input.charAt(index)>='0'&&input.charAt(index)<='9')||(input.charAt(index)>='a'&&input.charAt(index)<='f')) {                        index++;                    }                    result.add(new Result("INT16",input.substring(startIndex,index)));                }                else {                    result.add(new Result("INT10",input.substring(startIndex,index)));                }            }            else if(input.charAt(index)=='+') {                index++;                result.add(new Result("+","-"));            }            else if(input.charAt(index)=='-') {                index++;                result.add(new Result("-","-"));            }            else if(input.charAt(index)=='*') {                index++;                result.add(new Result("*","-"));            }            else if(input.charAt(index)=='/') {                index++;                result.add(new Result("/","-"));            }            else if(input.charAt(index)=='<') {                index++;                result.add(new Result("<","-"));            }            else if(input.charAt(index)=='>') {                index++;                result.add(new Result(">","-"));            }            else if(input.charAt(index)=='(') {                index++;                result.add(new Result("(","-"));            }            else if(input.charAt(index)==')') {                index++;                result.add(new Result(")","-"));            }            else if(input.charAt(index)=='=') {                index++;                result.add(new Result("=","-"));            }            else if(input.charAt(index)==';') {                index++;                result.add(new Result(";","-"));            }            else {                error();                return result;            }        }        return result;    }    public void error() {        error = true;        System.out.println("Input Error!");    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -