Token.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. namespace NTERA.Interpreter.Compiler
  2. {
  3. public enum Token
  4. {
  5. Unknown = 0,
  6. Identifer,
  7. Value,
  8. [LexerCharacter('#')]
  9. Sharp,
  10. [LexerCharacter('@')]
  11. AtSymbol,
  12. [LexerKeyword("DIM")]
  13. Dim,
  14. [LexerKeyword("DIMS")]
  15. Dims,
  16. [LexerKeyword("CONST")]
  17. Const,
  18. [LexerKeyword("REF")]
  19. Ref,
  20. [LexerKeyword("DYNAMIC")]
  21. Dynamic,
  22. [LexerKeyword("SAVEDATA")]
  23. SaveData,
  24. [LexerKeyword("CHARADATA")]
  25. CharaData,
  26. [LexerKeyword("GLOBAL")]
  27. Global,
  28. [LexerKeyword("FUNCTION")]
  29. [LexerKeyword("FUNCTIONS")]
  30. ReturnFunction,
  31. [LexerKeyword("TO")]
  32. To,
  33. [LexerCharacter('\n')]
  34. NewLine,
  35. [LexerCharacter('"')]
  36. QuotationMark,
  37. [LexerCharacter(':')]
  38. Colon,
  39. [LexerCharacter(',')]
  40. Comma,
  41. //[LexerCharacter('{')]
  42. OpenBracket,
  43. //[LexerCharacter('}')]
  44. CloseBracket,
  45. [LexerCharacter('%')]
  46. Modulo,
  47. Plus,
  48. Increment,
  49. Minus,
  50. Decrement,
  51. [LexerCharacter('/')]
  52. Slash,
  53. [LexerCharacter('*')]
  54. Asterisk,
  55. [LexerCharacter('^')]
  56. Caret,
  57. Equal,
  58. Less,
  59. More,
  60. NotEqual,
  61. LessEqual,
  62. MoreEqual,
  63. Or,
  64. And,
  65. [LexerCharacter('!')]
  66. Not,
  67. [LexerCharacter('(')]
  68. LParen,
  69. [LexerCharacter(')')]
  70. RParen,
  71. [LexerCharacter('?')]
  72. QuestionMark,
  73. TernaryEscape,
  74. EOF = -1 //End Of File
  75. }
  76. public static class TokenEnumExtensions
  77. {
  78. public static bool IsUnary(this Token token)
  79. {
  80. return token == Token.Plus
  81. || token == Token.Minus
  82. || token == Token.Not;
  83. }
  84. public static bool IsArithmetic(this Token token)
  85. {
  86. return token == Token.Plus
  87. || token == Token.Minus
  88. || token == Token.Slash
  89. || token == Token.Asterisk
  90. || token == Token.Modulo
  91. || token == Token.Caret
  92. || token == Token.Equal
  93. || token == Token.NotEqual
  94. || token == Token.Less
  95. || token == Token.LessEqual
  96. || token == Token.More
  97. || token == Token.MoreEqual
  98. || token == Token.Or
  99. || token == Token.And
  100. || token == Token.Not;
  101. }
  102. }
  103. }