working on csv data, parser works but needs more testing, might add bool to ParserData_DestroyFn callback for clearing
This commit is contained in:
parent
4c3d357cb9
commit
ca6a9c118f
13 changed files with 384 additions and 279 deletions
|
|
@ -324,14 +324,14 @@ void ARC_ParserLang_CreateAsParser(ARC_Parser **parser, ARC_Parser_GetStringIdFn
|
|||
//<line> -> <body> NEWLINE <line> | <body> | NEWLINE <line> | LAMBDA
|
||||
uint32_t *line[] = { (uint32_t[]){ 3, ARC_PARSERLANG_BODY, ARC_PARSERLANG_TOKEN_NEWLINE_ID, ARC_PARSERLANG_LINE }, (uint32_t[]){ 1, ARC_PARSERLANG_BODY }, (uint32_t[]){ 2, ARC_PARSERLANG_TOKEN_NEWLINE_ID, ARC_PARSERLANG_LINE }, (uint32_t[]){ 1, ARC_PARSERLANG_LAMBDA } };
|
||||
|
||||
//<body> -> <tag> WHITESPACE ARROW WHITESPACE <arguments>
|
||||
uint32_t *body[] = { (uint32_t[]){ 5, ARC_PARSERLANG_TAG, ARC_PARSERLANG_TOKEN_WHITESPACE, ARC_PARSERLANG_TOKEN_ARROW_ID, ARC_PARSERLANG_TOKEN_WHITESPACE, ARC_PARSERLANG_ARGUMENTS } };
|
||||
//<body> -> <tag> <whitespace> ARROW <whitespace> <arguments>
|
||||
uint32_t *body[] = { (uint32_t[]){ 5, ARC_PARSERLANG_TAG, ARC_PARSERLANG_WHITESPACE, ARC_PARSERLANG_TOKEN_ARROW_ID, ARC_PARSERLANG_WHITESPACE, ARC_PARSERLANG_ARGUMENTS } };
|
||||
|
||||
//<arguments> -> <argument> WHITESPACE OR WHITESPACE <arguments> | <argument>
|
||||
uint32_t *arguments[] = { (uint32_t[]){ 5, ARC_PARSERLANG_ARGUMENT, ARC_PARSERLANG_TOKEN_WHITESPACE, ARC_PARSERLANG_TOKEN_OR_ID, ARC_PARSERLANG_TOKEN_WHITESPACE, ARC_PARSERLANG_ARGUMENTS }, (uint32_t[]){ 1, ARC_PARSERLANG_ARGUMENT } };
|
||||
//<arguments> -> <argument> <whitespace> OR <whitespace> <arguments> | <argument>
|
||||
uint32_t *arguments[] = { (uint32_t[]){ 5, ARC_PARSERLANG_ARGUMENT, ARC_PARSERLANG_WHITESPACE, ARC_PARSERLANG_TOKEN_OR_ID, ARC_PARSERLANG_WHITESPACE, ARC_PARSERLANG_ARGUMENTS }, (uint32_t[]){ 1, ARC_PARSERLANG_ARGUMENT } };
|
||||
|
||||
//<argument> -> <tagOrConstant> WHITESPACE <argument> | <tagOrConstant>
|
||||
uint32_t *argument[] = { (uint32_t[]){ 3, ARC_PARSERLANG_TAG_OR_CONSTANT, ARC_PARSERLANG_TOKEN_WHITESPACE, ARC_PARSERLANG_ARGUMENT }, (uint32_t[]){ 1, ARC_PARSERLANG_TAG_OR_CONSTANT } };
|
||||
//<argument> -> <tagOrConstant> <whitespace> <argument> | <tagOrConstant>
|
||||
uint32_t *argument[] = { (uint32_t[]){ 3, ARC_PARSERLANG_TAG_OR_CONSTANT, ARC_PARSERLANG_WHITESPACE, ARC_PARSERLANG_ARGUMENT }, (uint32_t[]){ 1, ARC_PARSERLANG_TAG_OR_CONSTANT } };
|
||||
|
||||
//<tagOrConstant> -> <parserLangageTag> | <constant>
|
||||
uint32_t *tagOrConstant[] = { (uint32_t[]){ 1, ARC_PARSERLANG_TAG }, (uint32_t[]){ 1, ARC_PARSERLANG_CONSTANT } };
|
||||
|
|
@ -360,7 +360,10 @@ void ARC_ParserLang_CreateAsParser(ARC_Parser **parser, ARC_Parser_GetStringIdFn
|
|||
//<alphaChar> -> ALPHA_LOWER_CHAR | ALPHA_UPPER_CHAR
|
||||
uint32_t *alphaChar[] = { (uint32_t[]){ 1, ARC_PARSERLANG_TOKEN_ALPHA_LOWER_CHAR }, (uint32_t[]){ 1, ARC_PARSERLANG_TOKEN_ALPHA_UPPER_CHAR }};
|
||||
|
||||
ARC_ParserTag parserLangTags[13] = {
|
||||
//<whitespace> -> WHITESPACE <whitespace> | WHITESPACE
|
||||
uint32_t *whitespace[] = { (uint32_t[]){ 2, ARC_PARSERLANG_TOKEN_WHITESPACE, ARC_PARSERLANG_WHITESPACE }, (uint32_t[]){ 1, ARC_PARSERLANG_TOKEN_WHITESPACE }};
|
||||
|
||||
ARC_ParserTag parserLangTags[14] = {
|
||||
{ ARC_PARSERLANG_LINE , line , 4 },
|
||||
{ ARC_PARSERLANG_BODY , body , 1 },
|
||||
{ ARC_PARSERLANG_ARGUMENTS , arguments , 2 },
|
||||
|
|
@ -373,11 +376,12 @@ void ARC_ParserLang_CreateAsParser(ARC_Parser **parser, ARC_Parser_GetStringIdFn
|
|||
{ ARC_PARSERLANG_VARIABLE , variable , 2 },
|
||||
{ ARC_PARSERLANG_VARIABLE_BODY , variableBody , 2 },
|
||||
{ ARC_PARSERLANG_VARIABLE_CHAR , variableChar , 3 },
|
||||
{ ARC_PARSERLANG_ALPHA_CHAR , alphaChar , 2 }
|
||||
{ ARC_PARSERLANG_ALPHA_CHAR , alphaChar , 2 },
|
||||
{ ARC_PARSERLANG_WHITESPACE , whitespace , 2 }
|
||||
};
|
||||
|
||||
ARC_Array parserLanguageArray = {
|
||||
13, //size
|
||||
14, //size
|
||||
parserLangTags //data
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue