java 语法分析器 括号匹配
package test;
import java.util.*;
public class Test {
public String text="fewe{f(sdd(f)a[j]sdk)j}f";
int i=0;
public LinkedList stack=new LinkedList();
public Test() {
}
public String analyiz(int ip){
char temp=text.charAt(ip);
char a;
if(temp=='('||temp=='['||temp=='{'){
stack.add(temp);
}else if(temp==')'){
a=(Character)stack.getLast();
if(a=='('){
stack.removeLast();
}
}else if(temp==']'){
a=(Character)stack.getLast();
if(a=='['){
stack.removeLast();
}
}else if(temp=='}'){
a=(Character)stack.getLast();
if(a=='{'){
stack.removeLast();
}
}
if(stack.size()==0&&ip==text.length()-1){
String c="匹配";
return c;
}else if(stack.size()!=0&&ip==text.length()-1){
String b="不匹配";
return b;
}else{
return analyiz(ip+1);//递归
}
}
public static void main(String[] args){
Test test=new Test();
String a=test.analyiz(0);
System.out.println(a);
}
}
int i=0;
public LinkedList stack=new LinkedList();
public Test() {
}
public String analyiz(int ip){
char temp=text.charAt(ip);
char a;
if(temp=='('||temp=='['||temp=='{'){
stack.add(temp);
}else if(temp==')'){
a=(Character)stack.getLast();
if(a=='('){
stack.removeLast();
}
}else if(temp==']'){
a=(Character)stack.getLast();
if(a=='['){
stack.removeLast();
}
}else if(temp=='}'){
a=(Character)stack.getLast();
if(a=='{'){
stack.removeLast();
}
}
if(stack.size()==0&&ip==text.length()-1){
String c="匹配";
return c;
}else if(stack.size()!=0&&ip==text.length()-1){
String b="不匹配";
return b;
}else{
return analyiz(ip+1);//递归
}
}
public static void main(String[] args){
Test test=new Test();
String a=test.analyiz(0);
System.out.println(a);
}
}