0916 词法分析(3)
2015-09-28 14:44
337 查看
package compileWork;
import java.util.ArrayList;
import java.util.Scanner;
public class compileWork_1
{
public static void main(String args[])
{
Scanner s=new Scanner(System.in);
System.out.println("please input code");
String scode=s.nextLine();
s.close();
ArrayList<String> arrayphrase=new ArrayList<String>();
int i;
for(i=0;i<scode.length();i++)
{
char[] stemp=scode.substring(i, i+1).toCharArray();
char cword=stemp[0];
String sphrase="";
int flag=0;
while(i<scode.length()&&cword<='Z'&&cword>='A'||cword<='z'&&cword>='a'||cword>='0'&&cword<='9')
{
flag=1;
i++;
sphrase+=cword;
if(i<scode.length()){
char[] cnextTemp=scode.substring(i,i+1).toCharArray();
cword=cnextTemp[0];
}else{
break;
}
}
if(flag==1){
arrayphrase.add(sphrase);
sphrase="";
}
if(i<scode.length()&&cword=='<')
{
i++;
sphrase+=cword;
char[] cnextTemp=scode.substring(i,i+1).toCharArray();
cword=cnextTemp[0];
if(i<scode.length()&&i<scode.length()&&cword=='=')
{
sphrase+=cword;
}
if(i<scode.length()&&cword=='>')
{
sphrase+=cword;
}
arrayphrase.add(sphrase);
sphrase="";
}
if(i<scode.length()&&cword==':')
{
sphrase+=cword;
char[] cnextTemp=scode.substring(i+1,i+2).toCharArray();
cword=cnextTemp[0];
if(i<scode.length()&&i<scode.length()&&cword=='=')
{
i++;
sphrase+=cword;
}
arrayphrase.add(sphrase);
sphrase="";
}
if(i<scode.length()&&cword=='+')
{
sphrase+=cword;
arrayphrase.add(sphrase);
sphrase="";
}
if(i<scode.length()&&cword=='-')
{
sphrase+=cword;
arrayphrase.add(sphrase);
sphrase="";
}
if(i<scode.length()&&cword=='*')
{
sphrase+=cword;
arrayphrase.add(sphrase);
sphrase="";
}
if(i<scode.length()&&cword=='/')
{
sphrase+=cword;
arrayphrase.add(sphrase);
sphrase="";
}
if(i<scode.length()&&cword==';')
{
sphrase+=cword;
arrayphrase.add(sphrase);
sphrase="";
}
}
for(String ssign :arrayphrase){
switch (ssign){
case "begin":
System.out.print("<1 "+ssign+">");
break;
case "end":
System.out.print("<2 "+ssign+">");
break;
case "if":
System.out.print("<3 "+ssign+">");
break;
case "then":
System.out.print("<4 "+ssign+">");
break;
case "else":
System.out.print("<5 "+ssign+">");
break;
case "while":
System.out.print("<6 "+ssign+">");
break;
case "do":
System.out.print("<7 "+ssign+">");
break;
case "+":
System.out.print("<13 "+ssign+">");
break;
case "-":
System.out.print("<14 "+ssign+">");
break;
case "*":
System.out.print("<15 "+ssign+">");
break;
case "/":
System.out.print("<16 "+ssign+">");
break;
case "<=":
System.out.print("<17 "+ssign+">");
break;
case "<>":
System.out.print("<18 "+ssign+">");
break;
case "<":
System.out.print("<19 "+ssign+">");
break;
case ":":
System.out.print("<21 "+ssign+">");
break;
case ":=":
System.out.print("<22 "+ssign+">");
break;
case ";":
System.out.print("<23 "+ssign+">");
break;
default:
int flagisn=1;
char[] cssigntemp=ssign.toCharArray();
for(int k=0;k<ssign.length();k++){
if(Character.isDigit(cssigntemp[k])!=true){
flagisn=0;
}
}
if(flagisn==1){
System.out.print("<11 "+ssign+">");
}else{
System.out.printf("<10"+ssign+">");
}
}
}
}
}
相关文章推荐
- iOS绘图教程
- Android --定时器
- 使用github保存代码和同步代码
- 深入浅出RxJava(三:响应式的好处)
- 暴雪透露未来将开发电视游戏
- java 线程的状态转换
- MySql集群搭建
- 【笔记】Android中handler用法
- 移动设备中页面缩放的设定
- 解决方法:android 6.0(api 23) SDK,不再提供org.apache.http.*(只保留几个类)
- (三)我的JavaScript系列:不同调用方式的this指向
- Android Studio --设置字体
- JavaScript判断FileUpload控件上传文件类型
- JavaScript高级程序设计之面向对象的程序设计之继承之借用构造函数第6.3.2讲笔记
- android Shader类简介_渲染图像示例
- android xml组建圆角背景设置
- RxJava的基础使用(二)
- 深入浅出RxJava(一:基础篇)
- iOS本地的缓存的方式
- JAVA实现异步调用实例代码