toker.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #ifndef TOKER_H
  2. #define TOKER_H
  3. struct Toke{
  4. int toke;
  5. int begin,end;
  6. Toke():toke(0),begin(0),end(0){}
  7. Toke( int n,int b,int e ):toke(n),begin(b),end(e){}
  8. };
  9. struct Toker{
  10. FILE* fh;
  11. enum{
  12. UNK=0,LATIN1=1,UTF8=2,UTF16BE=3,UTF16LE=4
  13. };
  14. Toke curr_toke;
  15. int toke_index;
  16. int encoding;
  17. vector<char> line;
  18. vector<bchar_t> wline;
  19. vector<Toke> tokes;
  20. int line_num;
  21. string file_name;
  22. Toker( string file );
  23. void close();
  24. int curr();
  25. int next();
  26. string text();
  27. bstring wtext();
  28. int peek( int n );
  29. void nextLine();
  30. int tgetc();
  31. string sourceFile();
  32. string sourceInfo();
  33. static string toString( int n );
  34. };
  35. enum{
  36. T_NOP=0x80000000,
  37. //non-ident
  38. T_DOTDOT,
  39. T_ARRAYDECL,
  40. T_LT,T_EQ,T_GT,T_LE,T_GE,T_NE,
  41. T_IDENT,T_INTCONST,T_FLOATCONST,T_STRINGCONST,T_BADSTRINGCONST,T_CSTRING,T_WSTRING,
  42. //ident
  43. T_STRICT,T_SUPERSTRICT,T_MODULE,T_FRAMEWORK,T_IMPORT,T_MODULEINFO,
  44. T_DEFDATA,T_READDATA,T_RESTOREDATA,
  45. T_REM,T_ENDREM,
  46. T_TRY,T_CATCH,T_ENDTRY,T_THROW,T_GOTO,
  47. T_TRUE,T_FALSE,T_PI,
  48. T_BYTE,T_SHORT,T_INT,T_LONG,T_FLOAT,T_DOUBLE,T_OBJECT,T_STRING,
  49. T_VAR,T_PTR,T_VARPTR,
  50. T_CHR,
  51. T_LEN,T_ASC,T_SIZEOF,
  52. T_SGN,
  53. T_ABS,T_MIN,T_MAX,T_MOD,
  54. T_SHL,T_SHR,T_SAR,
  55. T_NOT,T_AND,T_OR,
  56. T_ADDASSIGN,T_SUBASSIGN,T_MULASSIGN,T_DIVASSIGN,T_MODASSIGN,
  57. T_ORASSIGN,T_ANDASSIGN,T_XORASSIGN,T_SHLASSIGN,T_SHRASSIGN,T_SARASSIGN,
  58. T_RETURN,T_LOCAL,T_GLOBAL,T_CONST,T_FIELD,T_ALIAS,T_END,
  59. T_TYPE,T_ENDTYPE,T_EXTENDS,
  60. T_METHOD,T_ENDMETHOD,T_ABSTRACT,T_FINAL,
  61. T_FUNCTION,T_ENDFUNCTION,
  62. T_NEW,T_RELEASE,T_DELETE,
  63. T_NULL,T_SELF,T_SUPER,
  64. T_INCBIN,T_INCBINPTR,T_INCBINLEN,
  65. T_INCLUDE,T_EXTERN,T_ENDEXTERN,
  66. T_PUBLIC,T_PRIVATE,
  67. T_IF,T_THEN,T_ELSE,T_ELSEIF,T_ENDIF,
  68. T_FOR,T_TO,T_STEP,T_NEXT,T_EACHIN,
  69. T_WHILE,T_WEND,
  70. T_REPEAT,T_UNTIL,T_FOREVER,
  71. T_SELECT,T_CASE,T__DEFAULT,T_ENDSELECT,
  72. T_EXIT,T_CONTINUE,
  73. T_ASSERT,
  74. T_NODEBUG
  75. };
  76. #endif