GrammarAtom.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/GrammarAtom.java#1 $
  7.  */
  8. /**A GrammarAtom is either a token ref, a character ref, or string.
  9.  * The analysis doesn't care.
  10.  */
  11. abstract class GrammarAtom extends AlternativeElement {
  12. protected String label;
  13. protected String atomText;
  14. protected int tokenType = Token.INVALID_TYPE;
  15. protected boolean not = false; // ~T or ~'c' or ~"foo"
  16. /** Set to type of AST node to create during parse.  Defaults to what is
  17.  *  set in the TokenSymbol.
  18.  */
  19.     protected String ASTNodeType = null;
  20. public GrammarAtom(Grammar g, Token t, int autoGenType) {
  21. super(g, autoGenType);
  22. atomText = t.getText();
  23. }
  24. public String getLabel() {
  25. return label;
  26. }
  27. public String getText() {
  28. return atomText;
  29. }
  30. public int getType() {
  31. return tokenType;
  32. }
  33. public void setLabel(String label_) { 
  34. label = label_; 
  35. }
  36. public String getASTNodeType() {
  37. return ASTNodeType;
  38. }
  39. public void setASTNodeType(String type) {
  40. ASTNodeType = type;
  41. }
  42. public void setOption(Token option, Token value) {
  43. if ( option.getText().equals("AST") ) {
  44. setASTNodeType(value.getText());
  45. }
  46. else {
  47. grammar.tool.error("Invalid element option:"+option.getText(),
  48.    grammar.getFilename(), option.getLine());
  49. }
  50. }
  51. public String toString() {
  52. String s = " ";
  53. if ( label!=null ) s += label+":";
  54. if ( not ) s += "~";
  55. return s+atomText;
  56. }
  57. }