RuleRefElement.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:2k
源码类别:

编译器/解释器

开发平台:

Others

  1. package antlr;
  2. /* ANTLR Translator Generator
  3.  * Project led by Terence Parr at http://www.jGuru.com
  4.  * Software rights: http://www.antlr.org/RIGHTS.html
  5.  *
  6.  * $Id: //depot/code/org.antlr/release/antlr-2.7.0/antlr/RuleRefElement.java#1 $
  7.  */
  8. class RuleRefElement extends AlternativeElement {
  9. protected String targetRule; // which rule is being called?
  10. protected String args=null;  // were any args passed to rule?
  11. protected String idAssign=null;  // is the return type assigned to a variable?
  12. protected String label;
  13. public RuleRefElement(Grammar g, Token t, int autoGenType_) {
  14. super(g, autoGenType_);
  15. targetRule = t.getText();
  16. // if ( Character.isUpperCase(targetRule.charAt(0)) ) { // lexer rule?
  17. if ( t.type == ANTLRTokenTypes.TOKEN_REF ) { // lexer rule?
  18. targetRule = CodeGenerator.lexerRuleName(targetRule);
  19. }
  20. line = t.getLine();
  21. }
  22. public RuleRefElement(Grammar g, String t, int line, int autoGenType_) {
  23. super(g, autoGenType_);
  24. targetRule = t;
  25. if ( Character.isUpperCase(targetRule.charAt(0)) ) { // lexer rule?
  26. targetRule = CodeGenerator.lexerRuleName(targetRule);
  27. }
  28. this.line = line;
  29. }
  30. public void generate() {
  31. grammar.generator.gen(this);
  32. }
  33. public String getArgs() {
  34. return args;
  35. }
  36. public String getIdAssign() {
  37. return idAssign;
  38. }
  39. public String getLabel() { 
  40. return label; 
  41. }
  42. public Lookahead look(int k) {
  43. return grammar.theLLkAnalyzer.look(k, this);
  44. }
  45. public void setArgs(String a) {
  46. args = a;
  47. }
  48. public void setIdAssign(String id) {
  49. idAssign = id;
  50. }
  51. public void setLabel(String label_) { 
  52. label = label_; 
  53. }
  54. public String toString() {
  55. if ( args!=null ) return " "+targetRule+args;
  56. else return " "+targetRule;
  57. }
  58. }