Herb C Reference
Loading...
Searching...
No Matches
lexer.c File Reference
#include "include/buffer.h"
#include "include/lexer_peek_helpers.h"
#include "include/token.h"
#include "include/util.h"
#include <ctype.h>
#include <string.h>

Macros

#define LEXER_STALL_LIMIT   5
 

Functions

static size_t lexer_sizeof (void)
 
static bool lexer_eof (const lexer_T *lexer)
 
static bool lexer_has_more_characters (const lexer_T *lexer)
 
static bool lexer_stalled (lexer_T *lexer)
 
lexer_Tlexer_init (const char *source)
 
token_Tlexer_error (lexer_T *lexer, const char *message)
 
static void lexer_advance (lexer_T *lexer)
 
static void lexer_advance_by (lexer_T *lexer, const size_t count)
 
static token_Tlexer_advance_with (lexer_T *lexer, const char *value, const token_type_T type)
 
static token_Tlexer_advance_with_next (lexer_T *lexer, size_t count, token_type_T type)
 
static token_Tlexer_advance_current (lexer_T *lexer, const token_type_T type)
 
static token_Tlexer_match_and_advance (lexer_T *lexer, const char *value, const token_type_T type)
 
static token_Tlexer_parse_whitespace (lexer_T *lexer)
 
static token_Tlexer_parse_identifier (lexer_T *lexer)
 
static token_Tlexer_parse_erb_open (lexer_T *lexer)
 
static token_Tlexer_parse_erb_content (lexer_T *lexer)
 
static token_Tlexer_parse_erb_close (lexer_T *lexer)
 
token_Tlexer_next_token (lexer_T *lexer)
 
void lexer_free (lexer_T *lexer)
 

Macro Definition Documentation

◆ LEXER_STALL_LIMIT

#define LEXER_STALL_LIMIT   5

Function Documentation

◆ lexer_sizeof()

static size_t lexer_sizeof ( void  )
static

◆ lexer_eof()

static bool lexer_eof ( const lexer_T lexer)
static

◆ lexer_has_more_characters()

static bool lexer_has_more_characters ( const lexer_T lexer)
static

◆ lexer_stalled()

static bool lexer_stalled ( lexer_T lexer)
static

◆ lexer_init()

lexer_T * lexer_init ( const char *  source)

◆ lexer_error()

token_T * lexer_error ( lexer_T lexer,
const char *  message 
)

◆ lexer_advance()

static void lexer_advance ( lexer_T lexer)
static

◆ lexer_advance_by()

static void lexer_advance_by ( lexer_T lexer,
const size_t  count 
)
static

◆ lexer_advance_with()

static token_T * lexer_advance_with ( lexer_T lexer,
const char *  value,
const token_type_T  type 
)
static

◆ lexer_advance_with_next()

static token_T * lexer_advance_with_next ( lexer_T lexer,
size_t  count,
token_type_T  type 
)
static

◆ lexer_advance_current()

static token_T * lexer_advance_current ( lexer_T lexer,
const token_type_T  type 
)
static

◆ lexer_match_and_advance()

static token_T * lexer_match_and_advance ( lexer_T lexer,
const char *  value,
const token_type_T  type 
)
static

◆ lexer_parse_whitespace()

static token_T * lexer_parse_whitespace ( lexer_T lexer)
static

◆ lexer_parse_identifier()

static token_T * lexer_parse_identifier ( lexer_T lexer)
static

◆ lexer_parse_erb_open()

static token_T * lexer_parse_erb_open ( lexer_T lexer)
static

◆ lexer_parse_erb_content()

static token_T * lexer_parse_erb_content ( lexer_T lexer)
static

◆ lexer_parse_erb_close()

static token_T * lexer_parse_erb_close ( lexer_T lexer)
static

◆ lexer_next_token()

token_T * lexer_next_token ( lexer_T lexer)

◆ lexer_free()

void lexer_free ( lexer_T lexer)