Edge.java
资源名称:Parsing.rar [点击查看]
上传用户:xiaozhuqw
上传日期:2021-11-10
资源大小:21k
文件大小:1k
源码类别:
词法分析
开发平台:
Java
- import java.util.regex.Matcher;
- public class Edge {
- String root;//局部分析的“根”,包括词语
- int first ,last, sub1, sub2; //局部分析的起点、终点和构成成分
- public Edge(){}
- public Edge(String wt, int wid)//为一个词语建立一个局部分析
- {
- int i = wt.indexOf("/");
- if(i<0)
- this.root = wt; //只有词性标记
- else
- this.root = wt.substring(i + 1) + "(" + wt.substring(0, i) + ")"; //有词语和词性
- this.first = this.last = wid; //将起点和终点设置为词的序号
- this.sub1 = this.sub2 = -1; //构成成分为空
- }
- public Edge(Edge p, int pid, String r) //运用提升规则建立一个局部分析
- {
- this.root = r;
- this.first = p.first; //起点终点跟原局部分析相同
- this.last = p.last;
- this.sub1 = pid;
- this.sub2 = -1;
- }
- public Edge(Edge p1, Edge p2, int pid1, int pid2, String r) //运用捆绑规则建立一个局部分析
- {
- this.root = r;
- this.first = p1.first; //起点是左子树的起点
- this.last = p2.last; //终点是右子树的终点
- this.sub1 = pid1;
- this.sub2 = pid2;
- }
- public String GetRoot() //返回根的符号(不包括词语)
- {
- int i = this.root.indexOf("(");
- if(i < 0)
- return this.root;
- else
- return this.root.substring(0, i);
- }
- public static void main(String[] args)
- {
- Edge e1 = new Edge("noun", 1);
- System.out.println("root:" + e1.root);
- System.out.println("first:" + e1.first);
- System.out.println("last:" + e1.last);
- System.out.println("sub1:" + e1.sub1);
- System.out.println("sub2" + e1.sub2);
- System.out.println(e1.GetRoot());
- }
- }