diff --git a/include/arc/std/config.h b/include/arc/std/config.h index 916d955..526e756 100644 --- a/include/arc/std/config.h +++ b/include/arc/std/config.h @@ -186,27 +186,34 @@ void ARC_Config_UnloadFromFile(ARC_Config *config, ARC_String *data); #define ARC_CONFIG_CLOSE_CURLY_BRACE 0x25 #define ARC_CONFIG_TILDE 0x26 -#define ARC_CONFIG_LANGUAGE 0x27 -#define ARC_CONFIG_GROUP 0x28 -#define ARC_CONFIG_GROUP_NAME 0x29 -#define ARC_CONFIG_GROUP_ARGS 0x2A -#define ARC_CONFIG_VARIABLE_LINES 0x2B -#define ARC_CONFIG_VARIABLE_LINE 0x2C -#define ARC_CONFIG_ALLOW_SPACE 0x2D -#define ARC_CONFIG_TYPE 0x2E -#define ARC_CONFIG_VALUE 0x2F -#define ARC_CONFIG_NESTED_VALUE 0x30 -#define ARC_CONFIG_VALUE_ARGS 0x31 -#define ARC_CONFIG_VARIABLE 0x32 -#define ARC_CONFIG_VARIABLE_NAME 0x33 -#define ARC_CONFIG_VARIABLE_CHAR 0x34 -#define ARC_CONFIG_STRING 0x35 -#define ARC_CONFIG_STRING_CHARS 0x36 -#define ARC_CONFIG_STRING_CHAR 0x37 -#define ARC_CONFIG_ESCAPE_CHAR 0x38 -#define ARC_CONFIG_NUMBER_SIGN 0x39 -#define ARC_CONFIG_NUMBER_TAG 0x3A -#define ARC_CONFIG_WHITESPACE 0x3B +#define ARC_CONFIG_LANGUAGE 0x27 +#define ARC_CONFIG_GROUP 0x28 +#define ARC_CONFIG_GROUP_NAME 0x29 +#define ARC_CONFIG_GROUP_ARGS 0x2A +#define ARC_CONFIG_VARIABLE_LINES 0x2B +#define ARC_CONFIG_VARIABLE_LINE 0x2C +#define ARC_CONFIG_ALLOW_SPACE 0x2D +#define ARC_CONFIG_TYPE 0x2E +#define ARC_CONFIG_VALUE 0x2F +#define ARC_CONFIG_NESTED_VALUE 0x30 +#define ARC_CONFIG_VALUE_ARGS 0x31 +#define ARC_CONFIG_ARRAY 0x32 +#define ARC_CONFIG_VARIABLE 0x33 +#define ARC_CONFIG_VARIABLE_NAME 0x34 +#define ARC_CONFIG_VARIABLE_CHAR 0x35 +#define ARC_CONFIG_STRING 0x36 +#define ARC_CONFIG_STRING_CHARS 0x37 +#define ARC_CONFIG_STRING_CHAR 0x38 +#define ARC_CONFIG_ESCAPE_CHAR 0x39 +#define ARC_CONFIG_NUMBER_SIGN 0x3A +#define ARC_CONFIG_NUMBER_TAG 0x3B +#define ARC_CONFIG_WHITESPACE 0x3C +#define ARC_CONFIG_COMMENT 0x3D +#define ARC_CONFIG_LINE_COMMENT 0x3E +#define ARC_CONFIG_MULTI_LINE_COMMENT 0x3F +#define ARC_CONFIG_LINE_CHARS 0x40 +#define ARC_CONFIG_MULTI_LINE_CHARS 0x41 +#define ARC_CONFIG_COMMENT_CHAR 0x42 /** * @brief TODO: write this diff --git a/src/std/config.c b/src/std/config.c index fcdfc6f..6b5c169 100644 --- a/src/std/config.c +++ b/src/std/config.c @@ -229,6 +229,9 @@ uint32_t ARC_Config_GetStringIdFn(ARC_String *string){ if(ARC_String_EqualsCStringWithStrlen(string, "")){ return ARC_CONFIG_VALUE_ARGS; } + if(ARC_String_EqualsCStringWithStrlen(string, "")){ + return ARC_CONFIG_ARRAY; + } if(ARC_String_EqualsCStringWithStrlen(string, "")){ return ARC_CONFIG_VARIABLE; } @@ -259,7 +262,24 @@ uint32_t ARC_Config_GetStringIdFn(ARC_String *string){ if(ARC_String_EqualsCStringWithStrlen(string, "")){ return ARC_CONFIG_WHITESPACE; } - + if(ARC_String_EqualsCStringWithStrlen(string, "")){ + return ARC_CONFIG_COMMENT; + } + if(ARC_String_EqualsCStringWithStrlen(string, "")){ + return ARC_CONFIG_LINE_COMMENT; + } + if(ARC_String_EqualsCStringWithStrlen(string, "")){ + return ARC_CONFIG_MULTI_LINE_COMMENT; + } + if(ARC_String_EqualsCStringWithStrlen(string, "")){ + return ARC_CONFIG_LINE_CHARS; + } + if(ARC_String_EqualsCStringWithStrlen(string, "")){ + return ARC_CONFIG_MULTI_LINE_CHARS; + } + if(ARC_String_EqualsCStringWithStrlen(string, "")){ + return ARC_CONFIG_COMMENT_CHAR; + } return ~(uint32_t)0; } @@ -289,7 +309,7 @@ void ARC_Config_GroupDataHashtableDestroyKeyValueFn(void *key, void *value){ free(typeData); } -// -> EQUAL SEMICOLON +// -> EQUAL SEMICOLON void ARC_ConfigData_RunVariableLineTag(ARC_ParserTagToken *tagToken, ARC_Config *config){ //skip whitespace and check for group name ARC_ParserTagToken *childTagToken = (ARC_ParserTagToken *)ARC_Vector_Get(tagToken->tagTokens, 1); @@ -342,7 +362,7 @@ void ARC_ConfigData_RunVariableLineTag(ARC_ParserTagToken *tagToken, ARC_Config ARC_String_Destroy(variableString); //get - childTagToken = (ARC_ParserTagToken *)ARC_Vector_Get(tagToken->tagTokens, 7); + childTagToken = (ARC_ParserTagToken *)ARC_Vector_Get(tagToken->tagTokens, 9); //check if is a reference ARC_String *valueString; @@ -526,7 +546,7 @@ void ARC_ConfigData_RunLanguageTag(ARC_ParserTagToken *tagToken, ARC_Config *con } continue; - //this is for whitespace and any oddities + //this is for whitespace, comments, and any oddities default: continue; } @@ -553,34 +573,42 @@ void ARC_Config_Create(ARC_Config **config){ /* ~ define the language as a string ~ */ char *languageCString = - " -> | | \n" + " -> | | \n" - " -> OPEN_CURLY_BRACE CLOSE_CURLY_BRACE\n" - " -> \n" - " -> | LAMBDA\n" + " -> OPEN_CURLY_BRACE CLOSE_CURLY_BRACE\n" + " -> \n" + " -> | LAMBDA\n" - " -> | \n" - " -> EQUAL SEMICOLON\n" - " -> SPACE | TAB | LAMBDA\n" + " -> | | \n" + " -> EQUAL SEMICOLON\n" + " -> SPACE | TAB | LAMBDA\n" - " -> \n" - " -> | | | \n" - " -> OPEN_CURLY_BRACE CLOSE_CURLY_BRACE\n" - " -> COMMA | \n" + " -> | \n" + " -> | | | \n" + " -> OPEN_CURLY_BRACE CLOSE_CURLY_BRACE\n" + " -> COMMA | \n" - " -> ALPHA_UPPER_CHAR | ALPHA_LOWER_CHAR | UNDERSCORE \n" - " -> | LAMBDA\n" - " -> ALPHA_UPPER_CHAR | ALPHA_LOWER_CHAR | UNDERSCORE | NUMBER\n" + " -> OPEN_BRACKET CLOSE_BRACKET | LAMBDA\n" + " -> ALPHA_UPPER_CHAR | ALPHA_LOWER_CHAR | UNDERSCORE \n" + " -> | LAMBDA\n" + " -> ALPHA_UPPER_CHAR | ALPHA_LOWER_CHAR | UNDERSCORE | NUMBER\n" - " -> QUOTE QUOTE\n" - " -> | | LAMBDA\n" - " -> TAB | SPACE | BANG | HASH | DOLLAR | PERCENT | AMPERSAND | SINGLE_QUOTE | OPEN_PAREN | CLOSE_PAREN | ASTERISK | PLUS | COMMA | MINUS | PERIOD | SLASH | NUMBER | COLON | SEMICOLON | LESS_THAN | GREATER_THAN | EQUAL | QUESTION_MARK | AT | ALPHA_UPPER_CHAR | OPEN_BRACKET | CLOSE_BRACKET | CARET | UNDERSCORE | GRAVE | ALPHA_LOWER_CHAR | OPEN_CURLY_BRACE | VERTICAL_LINE | CLOSE_CURLY_BRACE | TILDE\n" - " -> BACKSLASH BACKSLASH | BACKSLASH QUOTE | BACKSLASH ALPHA_UPPER_CHAR | BACKSLASH ALPHA_LOWER_CHAR\n" + " -> QUOTE QUOTE\n" + " -> | | LAMBDA\n" + " -> TAB | SPACE | BANG | HASH | DOLLAR | PERCENT | AMPERSAND | SINGLE_QUOTE | OPEN_PAREN | CLOSE_PAREN | ASTERISK | PLUS | COMMA | MINUS | PERIOD | SLASH | NUMBER | COLON | SEMICOLON | LESS_THAN | GREATER_THAN | EQUAL | QUESTION_MARK | AT | ALPHA_UPPER_CHAR | OPEN_BRACKET | CLOSE_BRACKET | CARET | UNDERSCORE | GRAVE | ALPHA_LOWER_CHAR | OPEN_CURLY_BRACE | VERTICAL_LINE | CLOSE_CURLY_BRACE | TILDE\n" + " -> BACKSLASH BACKSLASH | BACKSLASH QUOTE | BACKSLASH ALPHA_UPPER_CHAR | BACKSLASH ALPHA_LOWER_CHAR\n" - " -> MINUS | \n" - " -> NUMBER | NUMBER\n" + " -> MINUS | \n" + " -> NUMBER | NUMBER\n" - " -> SPACE | TAB | NEWLINE | LAMBDA\n"; + " -> SPACE | TAB | NEWLINE | LAMBDA\n" + + " -> | \n" + " -> SLASH SLASH NEWLINE\n" + " -> SLASH ASTERISK \n" + " -> | LAMBDA\n" + " -> ASTERISK SLASH | NEWLINE | \n" + " -> TAB | SPACE | BANG | QUOTE | HASH | DOLLAR | PERCENT | AMPERSAND | SINGLE_QUOTE | OPEN_PAREN | CLOSE_PAREN | ASTERISK | PLUS | COMMA | MINUS | PERIOD | SLASH | NUMBER | COLON | SEMICOLON | LESS_THAN | GREATER_THAN | EQUAL | QUESTION_MARK | AT | ALPHA_UPPER_CHAR | OPEN_BRACKET | BACKSLASH | CLOSE_BRACKET | CARET | UNDERSCORE | GRAVE | ALPHA_LOWER_CHAR | OPEN_CURLY_BRACE | VERTICAL_LINE | CLOSE_CURLY_BRACE | TILDE\n"; /* ~ define the language as a string ~ */ ARC_String *languageString;