⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sentence.java

📁 自己写的一个用java实现的一个语法分析器
💻 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 + -