永发信息网

java实现词法分析

答案:1  悬赏:20  手机版
解决时间 2021-04-06 18:14
java实现词法分析
最佳答案

import java.io.File;
import java.io.FileReader;

public class Compiler {
private static String string;
private static String str;
private static char ch;

public static void getChar() throws Exception{
File f= new File("C:\\","test.txt");
if(!f.exists()){
System.out.println("文件不存在,请输入正确的文件路径");
}
FileReader fr = new FileReader(f);
int rs = 0;
char []data = new char[256];
System.out.print("");

while((rs = fr.read(data)) > 0){
string = new String(data,0,rs).trim();
}
}

public static boolean isLetter(char c){
if((ch >= 'a' && ch + 'A' && ch <= 'Z')){
return true;
}
else
return false;
}

public static boolean isDigit(char c){
if(ch >='0' && ch <= '9'){
return true;
}
else
return false;
}

public static boolean isKey(String string) {
if(string.equals("void") || string.equals("if")|| string .equals("for")|| string.equals("while")
|| string.equals("do")|| string.equals("return")|| string.equals("break")
|| string.equals("main"))
{
return true;
}
else return false;
}

public static void judgement() throws Exception {
Compiler.getChar();
int m = 0;
string +=' ';
for(int i = 0;i < string.length();i++){
switch (m)
{
case 0:
ch = string.charAt(i);
if(ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '='
|| ch == '>' || ch == '<')
{
m = 4;
}
else if(ch == ',' || ch == ';' || ch == '{' || ch == '}' || ch == '(' || ch == ')')
{
m = 5;
}
else if ( isDigit((ch =string.charAt(i)) ) )
{
str = "";
str += ch;
m = 3;
}
else if ( isLetter(ch =string.charAt(i)) )
{
str = "";
str += ch;
m = 2;
}else {}
break;

case 4:
i--;
System.out.println(("( 4 " + "“ " + ch + " ” )"));
m = 0;
break;

case 5:
i --;
System.out.println(("( 5 " + "“ " + ch + " ” )"));
m = 0;
break;

case 2:
if (isLetter(ch = string.charAt(i)))
{
str += ch;
}
else
{
if ( isKey(str) )
{
System.out.println("( 1 " + "“ " + str + " ” )");
}else {
System.out.println(("( 2 " + "“ " + str + " ” )"));
}
i--;
m = 0;
}
break;

case 3:
if (isDigit((ch =string.charAt(i)) ) )
{
str += ch;
}
else
{
System.out.println(("( 3 " + "“ " + str + " ” )"));
i --;
m = 0;
}
break;
}
}
}

public static void main(String[] args) throws Exception{
Compiler.judgement();
// System.out.print(b)

}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
马立可汽车中心和信店地址在什么地方,想过去
单选题Whentheboywasseeingthe________
离婚协议中未进行财产分割说明的如何判定
地支藏干 亥藏戊壬甲 还是壬甲?怎么又俩个版
带有柴字的歌名
史上四大电脑装系统神技会多少
天天P图里微笑的功能在哪里
东英跆拳道我想知道这个在什么地方
堂哥的女儿应叫我什么呀?
晚上正确的睡姿是什么呢?
林州打井150-200米,洗井时用多大的空压机,
东风日产2012款经典轩逸原装正品安全气囊价格
一年级看图说话中有鱼有蝌蚪有鹅有荷花这一连
要怎么样开启红酒?
单选题美国西部历史上曾经发生大规模的沙尘暴
推荐资讯
四季葱亩产多少斤,一亩地小葱的产量能有多少
想要一首感动人的歌曲,容易学的,适合那种五
— No wonder you caught a cold. You out l
高速公路内保员工作总结
下列现象中,不是利用物体惯性的是A.运动员跳
优之味美食坊我想知道这个在什么地方
日语中“那支”是什么意思?
已知函数f(x-2)=x²-7x+13 求函数f(x
超级火箭靴图纸
斗地主,可以四代二,可以三代一,不能三代二
简述SNMP实体是怎么接受SNMP消息的
亲叔叔的老婆的弟弟的女儿可以和他结婚吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?