资源简介
语法分析器和词法分析器的java实现代码,以证明可以,望各位下载。
代码片段和文件信息
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 词法分析器
*/
public class LexicalAnalyzer {
// 单词种别码 1-17为关键字种别码
public static final int CHAR = 1;
public static final int SHORT = 2;
public static final int INT = 3;
public static final int LONG = 4;
public static final int FLOAT = 5;
public static final int DOUBLE = 6;
public static final int FINAL = 7;
public static final int STATIC = 8;
public static final int IF = 9;
public static final int ELSE = 10;
public static final int WHILE = 11;
public static final int DO = 12;
public static final int FOR = 13;
public static final int BREAK = 14;
public static final int CONTINUE = 15;
public static final int VOID = 16;
public static final int RETURN = 17;
// 20为标识符种别码
public static final int ID = 20;
// 30为常量种别码
public static final int NUM = 30;
// 31-40为运算符种别码
public static final int AS = 31; // =
public static final int EQ = 32; // ==
public static final int GT = 33; // >
public static final int LT = 34; // <
public static final int GE = 35; // >=
public static final int LE = 36; // <=
public static final int ADD = 37; // +
public static final int SUB = 38; // -
public static final int MUL = 39; // *
public static final int DIV = 40; // /
// 41-49为界限符种别码
public static final int LP = 41; // (
public static final int RP = 42; // )
public static final int LBT = 43; // [
public static final int RBT = 44; // ]
public static final int LBS = 45; // {
public static final int RBS = 46; // }
public static final int COM = 47; //
public static final int COL = 48; // :
public static final int SEM = 49; // ;
// -1为无法识别的字符标志码
public static final int ERROR = -1;
public static int errorNum = 0; // 记录词法分析错误的个数
// 判断是否为字母
public static boolean isLetter(char c) {
if (((c >= ‘a‘) && (c <= ‘z‘)) || ((c >= ‘A‘) && (c <= ‘Z‘))) {
return true;
}
return false;
}
// 判断是否为关键字,若是则返回关键字种别码
public static int isKeyID(String str) {
String keystr[] = {“char“ “short“ “int“ “long“ “float“ “double“ “final“ “static“ “if“ “else“ “while“
“do“ “for“ “break“ “continue“ “void“ “return“};
for (int i = 0; i < keystr.length; i++) {
if (str.equals(keystr[i])) {
return i + 1;
}
}
return 0;
}
// 判断是否为常量(整数、小数、浮点数)
public static boolean isNum(String str) {
int dot = 0; // .的个数
int notNum = 0; // 不是数字的个数
for (int i = 0; i < str.length(); i++) {
if (!(str.charAt(i) >= ‘0‘ && str.charAt(i) <= ‘9‘)) {
notNum++;
if (notNum > dot + 1) {
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-04-28 20:08 SyntaxAnalyzer\
目录 0 2019-04-28 21:20 SyntaxAnalyzer\.idea\
文件 609 2019-04-28 20:08 SyntaxAnalyzer\.idea\checkst
文件 278 2019-04-28 20:13 SyntaxAnalyzer\.idea\misc.xm
文件 275 2018-12-05 15:49 SyntaxAnalyzer\.idea\modules.xm
文件 20415 2019-04-28 21:20 SyntaxAnalyzer\.idea\workspace.xm
目录 0 2019-04-28 20:08 SyntaxAnalyzer\out\
目录 0 2019-04-28 20:08 SyntaxAnalyzer\out\production\
目录 0 2019-04-28 20:23 SyntaxAnalyzer\out\production\SyntaxAnalyzer\
目录 0 2019-04-28 20:30 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\
文件 70 2019-04-28 20:30 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input1.txt
文件 56 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input2.txt
文件 53 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input3.txt
文件 112 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input4.txt
文件 77 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input5.txt
文件 375 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\input6.txt
文件 3275 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output1.txt
文件 3838 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output2.txt
文件 1818 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output3.txt
文件 6756 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output4.txt
文件 5089 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output5.txt
文件 31669 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\output6.txt
文件 38 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test1.txt
文件 20 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test2.txt
文件 17 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test3.txt
文件 53 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test4.txt
文件 36 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test5.txt
文件 179 2019-04-28 20:13 SyntaxAnalyzer\out\production\SyntaxAnalyzer\file\test6.txt
文件 517 2019-04-28 20:14 SyntaxAnalyzer\out\production\SyntaxAnalyzer\LexicalAnalyzer$Pair.class
文件 9967 2019-04-28 20:14 SyntaxAnalyzer\out\production\SyntaxAnalyzer\LexicalAnalyzer.class
文件 595 2019-04-28 20:23 SyntaxAnalyzer\out\production\SyntaxAnalyzer\SyntaxAnalyzer$Production.class
............此处省略24个文件信息
- 上一篇:DFA NFA 正则表达式转换
- 下一篇:xssProtect-0.1.zip
相关资源
- 编译原理 C、Java语言词法分析器java实
- 词法分析器实现java和c++
- 语法分析器Java语言编写附实验报告
- java开发的基于LL1文法的语法分析器
- C语言词法分析器(Java版.带界面)
- java编写的LR语法分析器编译原理实验
- 词法分析器Java语言编写附实验报告
- 编译原理词法分析器 java版
- 编译原理词法分析器实现Java带界面源
- 用java语言编写的递归下降语法分析器
- 利用Java编写简单的C语言词法分析器
- 用java实现的语法分析器
- 含界面的java的词法分析器
- 语法分析器java实现
- 编译原理 LL1语法分析器(JAVA写的)
- 词法分析器(java实现)
- 词法分析器java语言版本
- 采用java编写的C语言词法分析器(可执
- java编写的PL/0词法分析器
- 语法分析器(Java实现-带UI界面).zi
- java语法分析器源代码LL(1)文法
- PL0词法分析器java实现
- 词法分析器(java版有UI界面).zip
- 递归下降语法分析器用Java语言编写
- LR0语法分析器JAVA
- 递归下降法实现语法分析器java
- c语言表达式的语法分析器
- Java编写的C-minus词法和语法分析器
- 一个带界面的词法分析+语法分析语法
- LL(1)语法分析器
评论
共有 条评论