编译原理实验:实现词法分析
除了实现了关键字、标识符、运算符、操作符,整数的识别,还实现了其中存在的双目运算符、小数、多位数、负数等特殊情况的识别
类型处理类:Type.java
/** * 定义各种类别的具体值以及对于输入字符进行判断是何种类型 * */ public class Type { //关键字表 public static final String[] keyword = { "abstract", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "default", "do", "double", "else", "enum", "extends", "false", "final", "finally", "float", "for", "if", "implements", "import", "int", "interface", "long", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super", "switch", "this", "throw", "throws", "try", "true", "void", "while" }; //分隔符表 public static final char[] separator = { ',', ';', '{', '}'}; //运算符表 public static final String[] operator = { "+", "-", "*", "/", "%", ">", "<", "=", "&", "|", "~", ">=", "<=", "==", "!=", "&&", "||", "++", "--", "+=", "-=", "(", ")", "[", "]", "\"" }; /** * 判断输入字符是不是数字 * * 增加对负数的判断和多个小数点的判断,正则表达式 */ // public static boolean isDigit(String str) // { // Boolean strResult = str.matches("-?[0-9]+.*[0-9]*"); // return strResult; // } public static boolean isDigit(char ch) { return Character.isDigit(ch); } /** * 判断输入字符是不是字母 * @param ch * @return */ public static boolean isLetter(char ch) { return Character.isLetter(