Token.cs 2.0 KB

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