资源简介
识别保留字:if、int、for、while、do、return、break、continue等等;单词种别码为1。
其他的都识别为标识符;单词种别码为2。
常数为整数或浮点数;单词种别码为3。
运算符包括:+、-、*、/、=、>、=、<=、!= ;单词种别码为4。
分隔符包括: “,”“;”“(”“)”“{”“}”等; 单词种别码为5。
处理注释(去掉注释): /* */
其他的都识别为标识符;单词种别码为2。
常数为整数或浮点数;单词种别码为3。
运算符包括:+、-、*、/、=、>、=、<=、!= ;单词种别码为4。
分隔符包括: “,”“;”“(”“)”“{”“}”等; 单词种别码为5。
处理注释(去掉注释): /* */
代码片段和文件信息
import javax.swing.JTextArea;
public class LexicalAnalyzer {
static String[] rwtab=new String[]{“main““if““then““while““do““static“
“int““double““struct““break““else“
“long““switch““case““typedef““char“
“return““const““float““short““continue“
“for““void““sizeof“}; //已经定义的24个关键字,种别码从1开始
static String storage=““; //存储源程序字符串
static StringBuilder token=new StringBuilder(““); //存储单词自身组成的字符串
private char lastchar; //单个读取字符
private int index=0; //单行字符串脚标
private int syn; //种别码
private int row=1;
//分析器
void analyzer(){
token.delete(0 token.length()); //置空token对象,清除
lastchar=storage.charAt(index); //索引指向第0位
if(((lastchar>=‘a‘&&lastchar<=‘z‘)||(lastchar>=‘A‘&&lastchar<=‘Z‘))&&index index++;
token.append(lastchar);
while(((lastchar>=‘0‘&&lastchar<=‘9‘)||(lastchar>=‘a‘&&lastchar<=‘z‘)||(lastchar>=‘A‘&&lastchar<=‘Z‘))&&index lastchar=storage.charAt(index++);
if((lastchar>=‘0‘&&lastchar<=‘9‘)||(lastchar>=‘a‘&&lastchar<=‘z‘)||(lastchar>=‘A‘&&lastchar<=‘Z‘)) {
token.append(lastchar);
}else {
index--;
}
}
syn=2; //默认为识别出的字符串为自定义的标识符,种别码为2
String s=token.toString();
for(int i=0; i if(s.equals(rwtab[i])){
syn=1;
break; //识别出是关键字
}
}
}else if((lastchar>=‘0‘&&lastchar<=‘9‘)&&index index++;
token.append(lastchar);
while((lastchar>=‘0‘&&lastchar<=‘9‘||lastchar==‘.‘)&&index lastchar=storage.charAt(index++);
if((lastchar>=‘0‘&&lastchar<=‘9‘)||lastchar==‘.‘) {
token.append(lastchar);
}else {
index--;
}
}
syn=3; //整数的种别码为3
}else if(index index++;
switch(lastchar){
case ‘+‘:
case ‘-‘:
case ‘*‘:
token.append(lastchar);
syn=4;
break;
case ‘<‘:
token.append(lastchar);
syn=4;
if(index lastchar=storage.charAt(index);
if(lastchar==‘=‘){
token.append(lastchar);
index++;
}else if(lastchar==‘>‘){
token.append(lastchar);
index++;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5908 2019-11-24 21:03 LexicalAnalyzer.java
文件 2383 2019-11-24 21:03 Mainfr
文件 4633 2019-11-29 13:40 词法分析器.jar
相关资源
- 编译原理课程设计-java版
- 编译原理 C、Java语言词法分析器java实
- 广州大学编译原理实验报告1-3.zip
- 编译原理实验 词法分析设计 MFC
- 语义分析—编译原理
- java编写的算符优先分析法分析器
- 华中科技大学 编译原理 面向过程的
- 山东大学编译原理实验报告含代码
- Compiler_mean3tmp.rar
- 西安交通大学编译原理实验代码及报
- 编译原理第3版[刘铭][实验程序源代码
- 用Java做编译原理正规式转换成NFA.ra
- 编译原理课程设计含报告和可运行源
- 词法分析器实现java和c++
- 编译原理课程设计(附报告和可运行
- 现代编译原理虎书,包含c版和java版中
- 现代编译器的Java实现.(美)Andrew.W
- 编译原理java实现所需jar包-个人博客文
- 编译原理-虎书-龙书-鲸书
- C语言词法分析器(Java版.带界面)
- java编写的LR语法分析器编译原理实验
- 词法分析器Java语言编写附实验报告
- JAVA 编译原理 SLR(1)算法模拟器
- java 中间代码生成 编译原理
- 编译原理词法分析器 java版
- java 写的 用优先函数分析 数学表达式
- 符号串的最左和最右推导
- 编译原理词法分析器实现Java带界面源
- 编译原理综合实习 JavaCC实现 可翻译
- 编译原理 王生原 董渊 书后源代码
评论
共有 条评论