Token.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. namespace NTERA.Engine.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("FUNCTION")]
  23. [LexerKeyword("FUNCTIONS")]
  24. ReturnFunction,
  25. [LexerKeyword("TO")]
  26. To,
  27. [LexerCharacter('\n')]
  28. NewLine,
  29. [LexerCharacter('"')]
  30. QuotationMark,
  31. [LexerCharacter(':')]
  32. Colon,
  33. [LexerCharacter(',')]
  34. Comma,
  35. //[LexerCharacter('{')]
  36. OpenBracket,
  37. //[LexerCharacter('}')]
  38. CloseBracket,
  39. [LexerCharacter('%')]
  40. Modulo,
  41. Plus,
  42. Increment,
  43. Append,
  44. Minus,
  45. Decrement,
  46. ShiftLeft,
  47. ShiftRight,
  48. [LexerCharacter('/')]
  49. Slash,
  50. [LexerCharacter('*')]
  51. Asterisk,
  52. [LexerCharacter('^')]
  53. Caret,
  54. Equal,
  55. Less,
  56. More,
  57. NotEqual,
  58. LessEqual,
  59. MoreEqual,
  60. Or,
  61. And,
  62. [LexerCharacter('!')]
  63. Not,
  64. [LexerCharacter('(')]
  65. LParen,
  66. [LexerCharacter(')')]
  67. RParen,
  68. [LexerCharacter('?')]
  69. QuestionMark,
  70. TernaryEscape,
  71. EOF = -1 //End Of File
  72. }
  73. public static class TokenEnumExtensions
  74. {
  75. public static bool IsUnary(this Token token)
  76. {
  77. return token == Token.Plus
  78. || token == Token.Minus
  79. || token == Token.Not;
  80. }
  81. public static bool IsArithmetic(this Token token)
  82. {
  83. return token == Token.Plus
  84. || token == Token.Minus
  85. || token == Token.Slash
  86. || token == Token.Asterisk
  87. || token == Token.Modulo
  88. || token == Token.Caret
  89. || token == Token.ShiftLeft
  90. || token == Token.ShiftRight
  91. || token == Token.Equal
  92. || token == Token.NotEqual
  93. || token == Token.Less
  94. || token == Token.LessEqual
  95. || token == Token.More
  96. || token == Token.MoreEqual
  97. || token == Token.Or
  98. || token == Token.And
  99. || token == Token.Not;
  100. }
  101. }
  102. }