词法分析程序设计
来源:互联网 发布:hc sr04 51单片机程序 编辑:程序博客网 时间:2024/04/29 03:21
一个自己写的小词法分析程序
`package shiyan;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import javax.print.attribute.standard.PrinterLocation;
public class ShiYan_one {
public static void main(String[] args) throws IOException{
String[] strings=new String[29];
fuzhi(strings);//给关键字赋值;
/*
* 以下为获取输入
*/
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in));
String string=bufferedReader.readLine();
StringBuffer stringBuffer=new StringBuffer(string);
scanner(stringBuffer, 0, strings);
/* * scanner函数为处理输入,分析 */public static void scanner(StringBuffer stringBuffer,int index,String[] strings){ String string=String.valueOf(stringBuffer.charAt(index)); String string2=""; int i=index; int flag=0; String match="^[A-Za-z0-9]$";//正则表达式用以判断是否是数字或字母 String match1="^[0-9]*$";//判断是否为数字 int flag_havekongge=0; do{ if(string.equals("#")){ return; } while(string.equals(" ")){//当检测到字符为空格时,读下一个 string=String.valueOf(stringBuffer.charAt(i)); flag_havekongge=1; ++i; if(i>=stringBuffer.length()){ break; } } if(flag_havekongge==1){ --i; flag_havekongge=0; } if(string.matches(match)){ string2=String.valueOf(stringBuffer.charAt(i)); if(i<stringBuffer.length()-1){ string=String.valueOf(stringBuffer.charAt(++i)); }else{ string2=""; } while(string.matches(match)){ string2+=String.valueOf(stringBuffer.charAt(i)); ++i; if(i>=stringBuffer.length()){ break; } string=String.valueOf(stringBuffer.charAt(i)); } for(int j=0;j<29;++j){ if(string2.equals(strings[j])){ System.out.print("("+j+","+string2+") "); flag=1; break; } flag=0; } if(flag==0){ if(string2.matches(match1)){ System.out.print("(11"+","+string2+") "); }else{ System.out.print("(10"+",'"+string2+"') "); } } }else{ if(!string.matches(match)){ string2=""; while(!string.matches(match)){ if(string.equals("#")||string.equals(" ")){ break; } string2+=string; ++i; if(i>=stringBuffer.length()){ break; } string=String.valueOf(stringBuffer.charAt(i)); } for(int j=0;j<29;++j){ if(string2.equals(strings[j])){ System.out.print("("+j+","+string2+") "); break; } } } } }while (i<stringBuffer.length()); }public static void fuzhi(String[] strings){ strings[0]="#"; strings[1]="begin"; strings[2]="if"; strings[3]="then"; strings[4]="while"; strings[5]="do"; strings[6]="end"; for(int i=7;i<13;++i){ strings[i]=" "; } strings[13]="+"; strings[14]="-"; strings[15]="*"; strings[16]="/"; strings[17]=":"; strings[18]=":="; strings[19]=" "; strings[20]="<"; strings[21]="<>"; strings[22]="<="; strings[23]=">"; strings[24]=">="; strings[25]="="; strings[26]=";"; strings[27]="("; strings[28]=")";}
}
`
0 0
- 词法分析程序设计
- 词法分析程序设计
- sicily1000. 词法分析程序设计 **
- 1000. 词法分析程序设计 **
- Sicily 1000. 词法分析程序设计 **
- 实验一 简单词法分析程序设计
- 算法练习(14):词法分析程序设计
- 编译原理_词法分析程序设计
- 实验一 源程序的预处理及词法分析程序设计
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 词法分析
- 算法竞赛入门经典第二版 第二章
- 如何开发你的第一个Java Google App Engine 程序
- Android 操作JSON数据
- 一些名词解释 关于iOS编程的“国际化与本地化”
- 51nod 1043 幸运号码【dp+滚动数组】
- 词法分析程序设计
- oracle中监控表中的索引是否使用
- 编译简单优先分析法
- 二叉搜索树的第k个结点
- 中文转拼音
- 二进制求和,lintcode
- window10 安装完后 几个小优化
- 通过Java实现Linux系统下grep指令的功能
- sample_allocator 参考手册