📄 sentence.java
字号:
package Syntax;
//产生式类
public class Sentence {
private int rightCurrent=0;
private int look_ahead_current=0;
private int look_ahead_length=5;//产生式右端最大长度
private int rightLength=10;//产生式右端最大长度
private int left;//产生式左部字符的索引值
private int[] right;//产生式右部字符的索引值数组
private int dot_at=0;//产生式中的加点项位置
private int[] look_ahead;//向前搜索符集
private int increment=5;
public Sentence()
{
right=new int[rightLength];
look_ahead=new int[look_ahead_length];
for(int i=0;i<rightLength;i++)
{
right[i]=-1;
}
for(int i=0;i<look_ahead_length;i++)
{
look_ahead[i]=-1;
}
}
private void increase_right()
{
int temp=rightLength;
rightLength+=increment;
int[] r=new int[rightLength];
for(int i=0;i<temp;i++)
{
r[i]=right[i];
}
right=r;
}
private void increase_look_ahead()
{
int temp=look_ahead_length;
look_ahead_length+=increment;
int[] l=new int[look_ahead_length];
for(int i=0;i<temp;i++)
{
l[i]=look_ahead[i];
}
look_ahead=l;
}
public boolean check()
{
return true;
}
public void setLeft(int i)
{
this.left=i;
}
public int getLeft()
{
return this.left;
}
public void setRight(int i)
{
if(rightCurrent==rightLength)increase_right();
right[rightCurrent++]=i;
}
public int[] getRight()
{
return this.right;
}
public int getRight(int i)
{
return this.right[i];
}
public void move_dot()//移动加点项
{
dot_at++;
}
public int getDot()//获得点位置
{
return dot_at;
}
public void add_look_ahead(int i)
{
if(look_ahead_current==look_ahead_length)increase_look_ahead();
look_ahead[look_ahead_current++]=i;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -