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

编译器/解释器

开发平台:

Others

  1. #ifndef INC_Token_hpp__
  2. #define INC_Token_hpp__
  3. /**
  4.  * <b>SOFTWARE RIGHTS</b>
  5.  * <p>
  6.  * ANTLR 2.6.0 MageLang Insitute, 1999
  7.  * <p>
  8.  * We reserve no legal rights to the ANTLR--it is fully in the
  9.  * public domain. An individual or company may do whatever
  10.  * they wish with source code distributed with ANTLR or the
  11.  * code generated by ANTLR, including the incorporation of
  12.  * ANTLR, or its output, into commerical software.
  13.  * <p>
  14.  * We encourage users to develop software with ANTLR. However,
  15.  * we do ask that credit is given to us for developing
  16.  * ANTLR. By "credit", we mean that if you use ANTLR or
  17.  * incorporate any source code into one of your programs
  18.  * (commercial product, research project, or otherwise) that
  19.  * you acknowledge this fact somewhere in the documentation,
  20.  * research report, etc... If you like ANTLR and have
  21.  * developed a nice tool with the output, please mention that
  22.  * you developed it using ANTLR. In addition, we ask that the
  23.  * headers remain intact in our source code. As long as these
  24.  * guidelines are kept, we expect to continue enhancing this
  25.  * system and expect to make other tools available as they are
  26.  * completed.
  27.  * <p>
  28.  * The ANTLR gang:
  29.  * @version ANTLR 2.6.0 MageLang Insitute, 1999
  30.  * @author Terence Parr, <a href=http://www.MageLang.com>MageLang Institute</a>
  31.  * @author <br>John Lilley, <a href=http://www.Empathy.com>Empathy Software</a>
  32.  * @author <br><a href="mailto:pete@yamuna.demon.co.uk">Pete Wells</a>
  33.  */
  34. #include "antlr/config.hpp"
  35. #include "antlr/RefCount.hpp"
  36. #include <string>
  37. ANTLR_BEGIN_NAMESPACE(antlr)
  38. /** A token is minimally a token type.  Subclasses can add the text matched
  39.  *  for the token and line info.
  40.  */
  41. class Token;
  42. typedef RefCount<Token> RefToken;
  43. class Token {
  44. public:
  45. // constants
  46. #ifndef NO_STATIC_CONSTS
  47. static const int MIN_USER_TYPE = 4;
  48. static const int NULL_TREE_LOOKAHEAD = 3;
  49. static const int INVALID_TYPE = 0;
  50. static const int EOF_TYPE = 1;
  51. static const int SKIP = -1;
  52. #else
  53. enum {
  54. MIN_USER_TYPE = 4,
  55. NULL_TREE_LOOKAHEAD = 3,
  56. INVALID_TYPE = 0,
  57. EOF_TYPE = 1,
  58. SKIP = -1
  59. };
  60. #endif
  61. // each Token has at least a token type
  62. int type; //=INVALID_TYPE;
  63. public:
  64. // the illegal token object
  65. static RefToken badToken; // = new Token(INVALID_TYPE, "<no text>");
  66. Token();
  67. Token(int t);
  68. Token(int t, const ANTLR_USE_NAMESPACE(std)string& txt);
  69. virtual int getColumn() const;
  70. virtual int getLine() const;
  71. virtual ANTLR_USE_NAMESPACE(std)string getText() const;
  72. virtual int getType() const;
  73. virtual void setColumn(int c);
  74. virtual void setLine(int l);
  75. virtual void setText(const ANTLR_USE_NAMESPACE(std)string& t);
  76. virtual void setType(int t);
  77. virtual ANTLR_USE_NAMESPACE(std)string toString() const;
  78. virtual ~Token();
  79. private:
  80. Token(const Token&);
  81. const Token& operator=(const Token&);
  82. };
  83. #ifdef NEEDS_OPERATOR_LESS_THAN
  84. inline operator<(RefToken l,RefToken r); //{return true;}
  85. #endif
  86. extern RefToken nullToken;
  87. ANTLR_END_NAMESPACE
  88. #endif //INC_Token_hpp__