Archeus 0.0.0
A C library and game engine that focuses on documentation
Loading...
Searching...
No Matches
lexer.c File Reference
#include "../test.h"
#include "arc/std/lexer.h"

Go to the source code of this file.

Functions

 ARC_TEST (Lexer_Char_Match)
 
 ARC_TEST (Lexer_Check_Id_Basic)
 
 ARC_TEST (Lexer_Check_Id_Unordered_But_Continious)
 
 ARC_TEST (Lexer_Check_Id_Unordered_Not_Continious)
 
 ARC_TEST (Lexer_Check_Continious)
 
 ARC_TEST (Lexer_Check_Not_Continious)
 

Function Documentation

◆ ARC_TEST() [1/6]

ARC_TEST ( Lexer_Char_Match )

Definition at line 4 of file lexer.c.

4 {
5 ARC_Lexer *lexer;
6 ARC_Lexer_Create(&lexer);
7
9
10 ARC_String *simple;
11 ARC_String_CreateWithStrlen(&simple, "::{}!/.");
12
13 ARC_Lexer_LexString(lexer, &simple);
14
15 ARC_LexerToken *token;
16
17 token = ARC_Lexer_GetToken(lexer, 0);
19
20 token = ARC_Lexer_GetToken(lexer, 1);
22
23 token = ARC_Lexer_GetToken(lexer, 2);
25
26 token = ARC_Lexer_GetToken(lexer, 3);
28
29 token = ARC_Lexer_GetToken(lexer, 4);
31
32 token = ARC_Lexer_GetToken(lexer, 5);
34
35 token = ARC_Lexer_GetToken(lexer, 6);
37
38 ARC_Lexer_Destroy(lexer);
39}
#define ARC_LEXER_TOKEN_FORWARD_SLASH_ID
Definition lexer.h:271
#define ARC_LEXER_TOKEN_PERIOD_ID
Definition lexer.h:268
#define ARC_LEXER_TOKEN_LEFT_CURLY_BRACE_ID
Definition lexer.h:283
#define ARC_LEXER_TOKEN_RIGHT_CURLY_BRACE_ID
Definition lexer.h:286
#define ARC_LEXER_TOKEN_BANG_ID
Definition lexer.h:289
#define ARC_LEXER_TOKEN_COLON_ID
Definition lexer.h:259
ARC_LexerToken * ARC_Lexer_GetToken(ARC_Lexer *lexer, uint32_t index)
gets a token at a given index from a lexer
Definition lexer.c:272
void ARC_Lexer_LexString(ARC_Lexer *lexer, ARC_String **data)
creates tokens using a given string with ARC_LexerToken rules
Definition lexer.c:166
void ARC_Lexer_InitBasicTokenRules(ARC_Lexer *lexer)
adds a bunch of basic token rules (matching the BasicTokens above)
Definition lexer.c:472
void ARC_Lexer_Create(ARC_Lexer **lexer)
creates an ARC_Lexer type
Definition lexer.c:50
void ARC_Lexer_Destroy(ARC_Lexer *lexer)
destroys an ARC_Lexer type
Definition lexer.c:68
void ARC_String_CreateWithStrlen(ARC_String **string, char *data)
creates ARC_String type with strinlen
Definition string.c:32
a lexer token type
Definition lexer.h:18
uint32_t rule
Definition lexer.h:19
substring position within a string
Definition string.h:14
#define ARC_CHECK(TEST)
Definition test.h:33

References ARC_CHECK, ARC_Lexer_Create(), ARC_Lexer_Destroy(), ARC_Lexer_GetToken(), ARC_Lexer_InitBasicTokenRules(), ARC_Lexer_LexString(), ARC_LEXER_TOKEN_BANG_ID, ARC_LEXER_TOKEN_COLON_ID, ARC_LEXER_TOKEN_FORWARD_SLASH_ID, ARC_LEXER_TOKEN_LEFT_CURLY_BRACE_ID, ARC_LEXER_TOKEN_PERIOD_ID, ARC_LEXER_TOKEN_RIGHT_CURLY_BRACE_ID, ARC_String_CreateWithStrlen(), and ARC_LexerToken::rule.

◆ ARC_TEST() [2/6]

ARC_TEST ( Lexer_Check_Continious )

Definition at line 98 of file lexer.c.

98 {
99 ARC_Lexer *lexer;
100 ARC_Lexer_Create(&lexer);
101
107
109
110 ARC_Lexer_Destroy(lexer);
111}
#define ARC_True
Definition bool.h:11
void ARC_Lexer_RegisterTokenRule(ARC_Lexer *lexer, ARC_LexerTokenRule tokenRule)
adds a token rule to a lexer
Definition lexer.c:79
ARC_LexerTokenRule ARC_LexerTokenRule_CreateAndReturnMatchCharRule(uint32_t id, char character)
creates a ARC_LexerTokenRule with a given id and character
Definition lexer.c:378
ARC_Bool ARC_Lexer_IsContinious(ARC_Lexer *lexer)
returns a boolean based on if a lexers rules are continious
Definition lexer.c:290

References ARC_CHECK, ARC_Lexer_Create(), ARC_Lexer_Destroy(), ARC_Lexer_IsContinious(), ARC_Lexer_RegisterTokenRule(), ARC_LexerTokenRule_CreateAndReturnMatchCharRule(), and ARC_True.

◆ ARC_TEST() [3/6]

◆ ARC_TEST() [4/6]

◆ ARC_TEST() [5/6]

◆ ARC_TEST() [6/6]