缂栬瘧鍘熺悊-璇硶鍒嗘瀽鍣?(java瀹岀編杩愯鐗?---鍓湰 - 鐧惧害鏂囧簱 联系客服

发布时间 : 星期一 文章缂栬瘧鍘熺悊-璇硶鍒嗘瀽鍣?(java瀹岀編杩愯鐗?---鍓湰 - 鐧惧害鏂囧簱更新完毕开始阅读a90e2cdf77c66137ee06eff9aef8941ea66e4b9c

{

biaozhi=1; } else

{

a[flag]=first[j][k]; flag++; } } }

if(biaozhi==1)//把右侧所有非终结符的first中的#去除 {

i++;biaozhi=0;continue; } else {

biaozhi=0;break; } } else

if(b.charAt(i)>='A'&&b.charAt(i)<='Z'&&i+1>=b.length())//是非终结符且没有下一个字符 {

int j;

for(j=0;Vn[i]!=null;j++) {

if(Vn[j].equals(String.valueOf(b.charAt(i)))) {

break; } }

for(int k=0;first[j][k]!='\\0';k++) {

if(puanduanChar(a,first[j][k])) {

if(first[j][k]=='#') {

biaozhi=1;//表达式右侧能推出空,标记 } else

{

a[flag]=first[j][k];//不能推出空,直接将first集加入select集

flag++; }

} }

if(biaozhi==1)//表达式右侧能推出空 {

for(j=0;Vn[i]!=null;j++) {

if(Vn[j].equals(b.substring(0,1)))

{

break; } }

for(int k=0;follow[j][k]!='\\0';k++) {

if(puanduanChar(a,follow[j][k])) {

a[flag]=follow[j][k];//将将表达式左侧的非终结符的follow加入select

flag++; } }

break; } else {

biaozhi=0;break; } } } }

//返回b在Vt[]的位置

private int puanduanXulie(char Vt[],char b) {

int i;

for(i=0;Vt[i]!='\\0';i++) {

if(Vt[i]==b)break; }

return i; }

//判断b是否在a中,在返回false,不在返回true

private boolean puanduanChar(char a[],char b) {

for(int i=0;a[i]!='\\0';i++) {

if(a[i]==b)return false; }

return true; }

//判断b是否在a中,在返回false,不在返回true

private boolean puanduanString(String a[],char b) {

for(int i=0;a[i]!=null;i++) {

if(a[i].equals(String.valueOf(b)))return false; }

return true; }

//把b加入字符串组firstVn[]

private void addString(String firstVn[],String b) {

int i;

for(i=0;firstVn[i]!=null;i++) { }

firstVn[i]=b; }

//判断b是否已完成first判断

private int firstComplete(char b) {

int i;

for(i=0;Vn[i]!=null;i++) {

if(Vn[i].equals(String.valueOf(b))) {

if(firstComplete[i]==1)return i; else return -1; } }

return -1; }

//判断b是否已完成follow判断

private int followComplete(char b) {

for(int i=0;Vn[i]!=null;i++) {

if(Vn[i].equals(String.valueOf(b))) {

if(followComplete[i]==1)return i; else return -1; } }

return -1; }

//把相应终结符添加到first**中

private int addElementFirst(char a[],int p,int flag) {

for(int i=0;first[p][i]!='\\0';i++) {

if(puanduanChar(a,first[p][i])&&first[p][i]!='#') {

a[flag]=first[p][i]; flag++; } }

return flag; }

//把相应终结符添加到follow**中

private int addElementFollow(char a[],int p,int flag) {

for(int i=0;follow[p][i]!='\\0';i++) {

if(puanduanChar(a,follow[p][i])) {

a[flag]=follow[p][i];