编译原理 LL(1)语法分析器java版 完整源代码

loading 分享 2026-8-26 下载文档

public class Accept2 { public

static

StringBuffer

stack=new

StringBuffer(\); public

static

StringBuffer

stack2=new

StringBuffer(\);

public static void main(String arts[]){ //stack2.deleteCharAt(0);

System.out.print(accept(stack,stack2)); } public

static

boolean

accept(StringBuffer

stack,StringBuffer stack2){//判断识别与否

boolean result=true; outer:while (true) {

System.out.format(\,stack+\); System.out.format(\,stack2+\); char c1 = stack.charAt(stack.length() - 1); char c2 = stack2.charAt(0); if(c1=='#'&&c2=='#') return true; switch (c1) {

case 'E':

if(!E(c2)) {result=false;break outer;} break;

case 'P': //P代表E’ if(!P(c2)) {result=false;break outer;} break; case 'T':

if(!T(c2)) {result=false;break outer;} break;

case 'Q': //Q代表T’ if(!Q(c2)) {result=false;break outer;} break; case 'F':

if(!F(c2)) {result=false;break outer;} break;

default: {//终结符的时候 if(c2==c1){

stack.deleteCharAt(stack.length()-1); stack2.deleteCharAt(0); //System.out.println(); } else{

return false; } } } if(result=false) break outer; }

return result; public static boolean E(char c) {//语法分析子程序boolean result=true; if(c=='i') {

stack.deleteCharAt(stack.length()-1); stack.append(\); }

else if(c=='('){

stack.deleteCharAt(stack.length()-1); stack.append(\);

}

E } else{

System.err.println(\推导时错误!不能匹配!\); result=false; }

return result; }

public static boolean P(char c){//语法分析子程序 P boolean result=true; if(c=='+') {

stack.deleteCharAt(stack.length()-1); stack.append(\); }

else if(c==')') {

stack.deleteCharAt(stack.length()-1); //stack.append(\ System.out.println(\); }

else if(c=='#') {

stack.deleteCharAt(stack.length()-1); //stack.append(\ System.out.println(\);


编译原理 LL(1)语法分析器java版 完整源代码.doc 将本文的Word文档下载到电脑
搜索更多关于: 编译原理 LL(1)语法分析器java版 完整源代码 的文档
相关推荐
相关阅读