added ability to check if token id is a lexer rule and wrote parser, still need to test
This commit is contained in:
parent
7a3495f7ae
commit
d8d1a1a107
7 changed files with 211 additions and 13 deletions
|
|
@ -37,3 +37,60 @@ ARC_TEST(Lexer_Char_Match){
|
|||
|
||||
ARC_Lexer_Destroy(lexer);
|
||||
}
|
||||
|
||||
ARC_TEST(Lexer_Check_Id_Basic){
|
||||
ARC_Lexer *lexer;
|
||||
ARC_Lexer_Create(&lexer);
|
||||
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(0, 0 ));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(1, ':'));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(2, ':'));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(3, ':'));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(4, ':'));
|
||||
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 0) == ARC_True );
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 7) == ARC_False);
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 2) == ARC_True );
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 4) == ARC_True );
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 5) == ARC_False);
|
||||
|
||||
ARC_Lexer_Destroy(lexer);
|
||||
}
|
||||
|
||||
ARC_TEST(Lexer_Check_Id_Unordered_But_Continious){
|
||||
ARC_Lexer *lexer;
|
||||
ARC_Lexer_Create(&lexer);
|
||||
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(2, ':'));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(0, 0 ));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(3, ':'));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(1, ':'));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(4, ':'));
|
||||
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 0) == ARC_True );
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 7) == ARC_False);
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 2) == ARC_True );
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 4) == ARC_True );
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 5) == ARC_False);
|
||||
|
||||
ARC_Lexer_Destroy(lexer);
|
||||
}
|
||||
|
||||
ARC_TEST(Lexer_Check_Id_Unordered_Not_Continious){
|
||||
ARC_Lexer *lexer;
|
||||
ARC_Lexer_Create(&lexer);
|
||||
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(2, ':'));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(8, 0 ));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(3, ':'));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(1, ':'));
|
||||
ARC_Lexer_RegisterTokenRule(lexer, ARC_LexerTokenRule_CreateAndReturnMatchCharRule(4, ':'));
|
||||
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 8) == ARC_True );
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 7) == ARC_False);
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 2) == ARC_True );
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 4) == ARC_True );
|
||||
ARC_CHECK(ARC_Lexer_IsTokenId(lexer, 5) == ARC_False);
|
||||
|
||||
ARC_Lexer_Destroy(lexer);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ void TEST_Parser_InitLexerRulesFn(ARC_Lexer *lexer){
|
|||
ARC_Lexer_InitBasicTokenRules(lexer);
|
||||
}
|
||||
|
||||
ARC_TEST(Lexer_Char_Match){
|
||||
ARC_TEST(Parser_Init){
|
||||
ARC_Parser *parser;
|
||||
|
||||
uint32_t *charOrNumTokens[] = { (uint32_t[]){ 1, CHAR }, (uint32_t[]){ 1, NUM } };
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue