• 大小: 8KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-01-08
  • 语言: Java
  • 标签: 编译原理  java实现  

资源简介

1.根据状态转换图直接编程 编写一个词法分析程序,它从左到右逐个字符的对源程序进行扫描,产生一个个的单词的二元式,形成二元式(记号)流文件输出。在此,词法分析程序作为单独的一遍,如下图所示。 具体任务有: (1)组织源程序的输入 (2)识别单词的类别并记录类别编号和值,形成二元式输出,得到单词流文件 (3)删除注释、空格和无用符号 (4)发现并定位词法错误,需要输出错误的位置在源程序中的第几行。将错误信息输出到屏幕上。 (5)对于普通标识符和常量,分别建立标识符表和常量表(使用线性表存储),当遇到一个标识符或常量时,查找标识符表或常量表,若存在,则返回位置,否则返回0并且填写符号

资源截图

代码片段和文件信息

import java.io.*;
import java.util.*;
public class cffx {
String sourceFile;//源文件名
String sentence;//程序语句
String word=““;//分析得到的字符串
String keyWord[]={“int““char““float““void““const““for““if““else““then““while““switch““break““begin““end“};
String id[]=new String[100];
int idLength=0;//记录标志符表中存放的标志符的个数
String num[]=new String[100];
int numLength=0;//记录常数表中存放的常数的个数
int line=0;//当前读到的行数
public boolean isDigit(char ch){
if((ch>=‘0‘)&&(ch<=‘9‘))
return true;
else
return false;
}
public boolean isLetter(char ch){
if(((ch>=‘A‘)&&(ch<=‘Z‘))||((ch>=‘a‘)&&(ch<=‘z‘)))
return true;
else
return false;
}
public void isKeyword(String str){
int i=0;
for(;i if(str.equals(keyWord[i]))//是关键字
{
System

评论

共有 条评论