Token.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. namespace NTERA.Interpreter.Compiler
  2. {
  3. public enum Token
  4. {
  5. Unknown = 0,
  6. Identifer,
  7. Value,
  8. [LexerCharacter('#', LexerType.Real)]
  9. Sharp,
  10. [LexerCharacter('@', LexerType.Real)]
  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', LexerType.Both)]
  26. NewLine,
  27. [LexerCharacter(':', LexerType.Real)]
  28. Colon,
  29. [LexerCharacter(',', LexerType.Real)]
  30. Comma,
  31. [LexerCharacter('{', LexerType.Both)]
  32. OpenBracket,
  33. [LexerCharacter('}', LexerType.Both)]
  34. CloseBracket,
  35. Format,
  36. Modulo,
  37. Plus,
  38. Increment,
  39. Minus,
  40. Decrement,
  41. [LexerCharacter('/', LexerType.Real)]
  42. Slash,
  43. [LexerCharacter('*', LexerType.Real)]
  44. Asterisk,
  45. [LexerCharacter('^', LexerType.Real)]
  46. Caret,
  47. Equal,
  48. Less,
  49. More,
  50. NotEqual,
  51. LessEqual,
  52. MoreEqual,
  53. Or,
  54. And,
  55. [LexerCharacter('!', LexerType.Real)]
  56. Not,
  57. [LexerCharacter('(', LexerType.Real)]
  58. LParen,
  59. [LexerCharacter(')', LexerType.Real)]
  60. RParen,
  61. EOF = -1 //End Of File
  62. }
  63. public static class TokenEnumExtensions
  64. {
  65. public static bool IsUnary(this Token token)
  66. {
  67. return token == Token.Plus
  68. || token == Token.Minus
  69. || token == Token.Not;
  70. }
  71. public static bool IsArithmetic(this Token token)
  72. {
  73. return token == Token.Plus
  74. || token == Token.Minus
  75. || token == Token.Slash
  76. || token == Token.Asterisk
  77. || token == Token.Modulo
  78. || token == Token.Caret
  79. || token == Token.Equal
  80. || token == Token.NotEqual
  81. || token == Token.Less
  82. || token == Token.LessEqual
  83. || token == Token.More
  84. || token == Token.MoreEqual
  85. || token == Token.Or
  86. || token == Token.And
  87. || token == Token.Not;
  88. }
  89. public static bool IsStringOp(this Token token)
  90. {
  91. return token == Token.Plus;
  92. }
  93. }
  94. }