📄 cifa.java
字号:
public class Cifa {
String proc,out;
StringBuffer token;
char ch;
int syn,p,n,sum;
static String rwtab[]={"begin","if","then","while","do","end"};
int line;
boolean iserror;
Cifa(String s){
proc=s;
line=1;
//error=false;
}
public String getString(){
out="";
do{
scaner();
if(syn==11)
out+=("Line "+line+" ( 11,"+sum+" )\n");
else if(syn==-1){
out+="Line "+line+" Error!\n" ;
iserror=true;
}
else if(syn!=30)
out+="Line "+line+" ( "+syn+","+token+" )\n";
}while(syn!=0);
if(iserror)
out+="词法分析出错!";
return out;
}
void scaner(){
sum=0;
token=new StringBuffer(30);
ch=proc.charAt(p++);
while(ch==' '||ch=='\n'){
if(ch==' ')
ch=proc.charAt(p++);
else{//\n
syn=30;
line++;
ch=proc.charAt(p++);
}
}
if((ch<='z'&&ch>='a')||(ch<='Z'&&ch>='A')){
while((ch<='z'&&ch>='a')||(ch<='Z'&&ch>='A')||(ch<='9'&&ch>='0')){
token.append(ch);
ch=proc.charAt(p++);
}
p--;
syn=10;
for(n=0;n<6;n++){
if(token.toString().equals(rwtab[n])){
syn=n+1;//get rid 0
break;
}
}
}
else if(ch<='9'&&ch>='0'){
while(ch<='9'&&ch>='0'){
sum=sum*10+ch-'0';
ch=proc.charAt(p++);
}
if((ch<='z'&&ch>='a')||(ch<='Z'&&ch>='A')){
syn=-1;
}
else{
p--;
syn=11;
}
}
else
switch(ch){
case '<':token.append(ch);;
ch=proc.charAt(p++);
if(ch=='>'){
syn=21;
token.append(ch);;
}
else if(ch=='='){
syn=22;
token.append(ch);;
}
else{
syn=20;
p--;
}
break;
case '>':token.append(ch);;
ch=proc.charAt(p++);
if(ch=='='){
syn=24;
token.append(ch);;
}
else{
syn=23;
p--;
}
break;
case ':':token.append(ch);;
ch=proc.charAt(p++);
if(ch=='='){
syn=18;
token.append(ch);;
}
else{
syn=17;
p--;
}
break;
case '+':syn=13;token.append(ch);;break;
case '-':syn=14;token.append(ch);;break;
case '*':syn=15;token.append(ch);;break;
case '/':syn=16;token.append(ch);;break;
case '(':syn=27;token.append(ch);;break;
case ')':syn=28;token.append(ch);break;
case '=':syn=25;token.append(ch);break;
case ';':syn=26;token.append(ch);break;
case '"':syn=29;token.append(ch);break;
case '#':syn=0;token.append(ch);break;
//case '\n':syn=30;line++;break;
default:syn=-1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -