发布时间 : 星期一 文章缂栬瘧鍘熺悊-璇硶鍒嗘瀽鍣?(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];