Token.cs 1.8 KB

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