TODO: write this.
36 {
38
39
40 char *languageCString =
41 "<language> -> <group> <language> | <variableLine> <language> | <whitespace> <language>\n"
42
43 "<group> -> <groupName> <whitespace> <variable> <whitespace> LEFT_CURLY_BRACE <whitespace> <variableLine> <whitespace> RIGHT_CURLY_BRACE\n"
44
45 "<variableLine> -> <type> <whitespace> <variable> <whitespace> EQUALS <whitespace> value <whitespace> SEMICOLON <whitespace>\n"
46
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"
52
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"
56
57 "<number> -> NUMBER <number> | NUMBER LAMBDA\n"
58
59 "<whitespace> -> SPACE <whitespace> | TAB <whitespace> | NEWLINE <whitespace> | LAMBDA\n";
60
61
64
65
66
67
68
69
70
71
72
74}
void ARC_String_CreateWithStrlen(ARC_String **string, char *data)
creates ARC_String type with strinlen
void ARC_String_Destroy(ARC_String *string)
destroys ARC_String type
substring position within a string