29 if(data == NULL || userData == NULL){
40 char *languageCString =
41 "<language> -> <group> <language> | <variableLine> <language> | <whitespace> <language>\n"
43 "<group> -> <groupName> <whitespace> <variable> <whitespace> LEFT_CURLY_BRACE <whitespace> <variableLine> <whitespace> RIGHT_CURLY_BRACE\n"
45 "<variableLine> -> <type> <whitespace> <variable> <whitespace> EQUALS <whitespace> value <whitespace> SEMICOLON <whitespace>\n"
47 "<groupName> -> <variable>\n"
48 "<type> -> <variable>\n"
49 "<value> -> <variable> | <number> | <nestedValue>\n"
50 "<nestedValue> -> OPEN_CURLY_BRACE <whitespace> <valueArgs> <whitespace> CLOSE_CURLY_BRACE\n"
51 "<valueArgs> -> <value> | <value> COMMA <valueArgs>\n"
53 "<variable> -> ALPHA_UPPER_CHAR <variableName> | ALPHA_LOWER_CHAR <variableName> | UNDERSCORE <variableName>\n"
54 "<variableName> -> <charOrNum> <variableName> | LAMBDA\n"
55 "<charOrNum> -> ALPHA_UPPER_CHAR | ALPHA_LOWER_CHAR | UNDERSCORE | NUM\n"
57 "<number> -> NUMBER <number> | NUMBER LAMBDA\n"
59 "<whitespace> -> SPACE <whitespace> | TAB <whitespace> | NEWLINE <whitespace> | LAMBDA\n";
void ARC_Chemical_LoadFromFile(ARC_String *path)
TODO: write this.
void ARC_ChemicalData_CreateFn(void **data, ARC_ParserTagToken *parsedData, void *userData)
void ARC_Chemical_UnloadFromFile(ARC_String *data)
TODO: write this.
void ARC_Chemical_LoadFromString(ARC_String *path)
TODO: write this.
void ARC_Chemical_Create(ARC_Chemical **chemical)
TODO: write this.
void ARC_Chemical_RegisterType(ARC_Chemical *chemical, ARC_String *typeName, ARC_ChemicalData_CopyToTypeFn *copyToTypeFn, ARC_ParserCSV_DestroyTypeFn destroyTypeFn)
TODO: write this.
void ARC_Chemical_SetGroup(ARC_Chemical *chemical, ARC_String *groupName)
sets current group in config
void ARC_Chemical_Destroy(ARC_Chemical *chemical)
TODO: write this.
void ARC_Chemical_InitLexerRulesFn(ARC_Lexer *lexer)
uint32_t ARC_Chemical_GetStringIdFn(ARC_String *string)
void ARC_Chemical_UnloadFromString(ARC_String *data)
TODO: write this.
void * ARC_Chemical_Get(ARC_Chemical *chemical, ARC_String *element)
get a value from a given keyname
void(* ARC_ParserCSV_DestroyTypeFn)(void *data)
TODO: write this.
void(* ARC_ChemicalData_CopyToTypeFn)(void **data, ARC_ParserTagToken *parsedData)
TODO: write this.
#define ARC_PARSER_TAG_LAMBDA
basic tag for letting the parser know it is ok to end
void ARC_String_CreateWithStrlen(ARC_String **string, char *data)
creates ARC_String type with strinlen
ARC_Bool ARC_String_EqualsCStringWithStrlen(ARC_String *string, const char *cstring)
check if ARC_String and cstring match
void ARC_String_Destroy(ARC_String *string)
destroys ARC_String type
a parser type used inside of the parser data create function
substring position within a string