Edge.java
上传用户:xiaozhuqw
上传日期:2021-11-10
资源大小:21k
文件大小:1k
源码类别:

词法分析

开发平台:

Java

  1. import java.util.regex.Matcher;
  2. public class Edge {
  3. String root;//局部分析的“根”,包括词语
  4. int first ,last, sub1, sub2; //局部分析的起点、终点和构成成分
  5. public Edge(){}
  6. public Edge(String wt, int wid)//为一个词语建立一个局部分析
  7. {
  8. int i = wt.indexOf("/");
  9. if(i<0)
  10. this.root = wt; //只有词性标记
  11. else
  12. this.root = wt.substring(i + 1) + "(" + wt.substring(0, i) + ")";  //有词语和词性
  13. this.first = this.last = wid;   //将起点和终点设置为词的序号
  14. this.sub1 = this.sub2 = -1;     //构成成分为空
  15. }
  16. public Edge(Edge p, int pid, String r) //运用提升规则建立一个局部分析
  17. {
  18. this.root = r;
  19. this.first = p.first; //起点终点跟原局部分析相同
  20. this.last = p.last;
  21. this.sub1 = pid;
  22. this.sub2 = -1;
  23. }
  24. public Edge(Edge p1, Edge p2, int pid1, int pid2, String r) //运用捆绑规则建立一个局部分析
  25. {
  26. this.root = r;
  27. this.first = p1.first; //起点是左子树的起点
  28. this.last = p2.last; //终点是右子树的终点
  29. this.sub1 = pid1;
  30. this.sub2 = pid2;
  31. }
  32. public String GetRoot() //返回根的符号(不包括词语)
  33. {
  34. int i = this.root.indexOf("(");
  35. if(i < 0)
  36. return this.root;
  37. else
  38. return this.root.substring(0, i);
  39. }
  40. public static void main(String[] args) 
  41. {
  42. Edge e1 = new Edge("noun", 1);
  43. System.out.println("root:" + e1.root);
  44. System.out.println("first:" + e1.first);
  45. System.out.println("last:" + e1.last);
  46. System.out.println("sub1:" + e1.sub1);
  47. System.out.println("sub2" + e1.sub2);
  48. System.out.println(e1.GetRoot());
  49. }
  50. }