nctref/src/lexer.h

62 lines
975 B
C
Raw Normal View History

2023-08-27 19:48:06 +03:00
#ifndef NCTREF_LEXER_H
#define NCTREF_LEXER_H
#include<stdio.h>
extern char *TOKEN_NAMES[];
typedef enum {
TOKEN_IDENTIFIER,
TOKEN_LOCAL,
TOKEN_EOF,
TOKEN_NUMBER,
TOKEN_SEMICOLON,
TOKEN_COLON,
TOKEN_IF,
TOKEN_PAREN_L,
TOKEN_PAREN_R,
TOKEN_SQUIGGLY_L,
TOKEN_SQUIGGLY_R,
TOKEN_EQUALS,
TOKEN_PLUS,
TOKEN_MINUS,
TOKEN_STAR,
TOKEN_SLASH,
TOKEN_EXTERN,
TOKEN_LOOP,
TOKEN_BREAK,
TOKEN_COMMA,
TOKEN_AMPERSAND,
TOKEN_VERTICAL_BAR,
TOKEN_CARET,
TOKEN_TILDE,
TOKEN_DOUBLE_EQUALS,
TOKEN_SQUAREN_L,
TOKEN_SQUAREN_R,
TOKEN_QUESTION_MARK,
TOKEN_STRING,
TOKEN_EXCLAMATION_EQUALS,
TOKEN_EXCLAMATION,
TOKEN_CONTINUE,
2024-12-14 18:13:33 +02:00
TOKEN_RETURN,
TOKEN_ARROW,
TOKEN_LEQUAL,
TOKEN_GEQUAL,
TOKEN_LESS,
TOKEN_GREATER,
2023-08-27 19:48:06 +03:00
} TokenKind;
typedef struct {
TokenKind type;
int row, column;
char *content; /* NULL for keywords. */
size_t length; /* Not valid for everything. */
} Token;
Token nct_tokenize(FILE*);
Token *nct_lex(FILE*);
void nct_lex_free(Token *);
2023-08-27 19:48:06 +03:00
#endif