You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

lexer.h 636B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #ifndef LEXER_H
  2. #define LEXER_H
  3. typedef enum lexer_token_class
  4. {
  5. LEXER_TOKEN_WHITESPACE,
  6. LEXER_TOKEN_IDENTIFIER,
  7. LEXER_TOKEN_KEYWORD,
  8. LEXER_TOKEN_OPERATOR,
  9. LEXER_TOKEN_SEPARATOR,
  10. LEXER_TOKEN_INTEGER,
  11. LEXER_TOKEN_STRING,
  12. LEXER_TOKEN_FUNCTION_START,
  13. LEXER_TOKEN_FUNCTION_END,
  14. LEXER_TOKEN_EXPRESSION_START,
  15. LEXER_TOKEN_EXPRESSION_END,
  16. LEXER_TOKEN_NONE
  17. } lexer_token_class;
  18. typedef struct lexer_token
  19. {
  20. lexer_token_class tokenClass;
  21. char* str;
  22. size_t len;
  23. } lexer_token;
  24. typedef struct lexer_tokens
  25. {
  26. lexer_token* pairs;
  27. size_t length;
  28. size_t allocd;
  29. } lexer_tokens;
  30. lexer_tokens* lexer_analyze(char* str);
  31. #endif