70 lines
2.4 KiB
Text
70 lines
2.4 KiB
Text
int i = 32;
|
|
|
|
<defineIntLine> -> INT <variable> EQUALS <value> SEMICOLON
|
|
<variable> -> <alphaChar> <variableBody>
|
|
<variableBody> -> <alphaCharOrNum> <variableBody> | LAMBDA
|
|
<alphaCharOrNum> -> UPPER_ALPHA_CHAR | LOWER_ALPHA_CHAR | NUMBER
|
|
<value> -> NUMBER <valueBody>
|
|
<valueBody> -> NUMBER <valueBody> | LAMBDA
|
|
|
|
typedef struct TEMP_LangVar = {
|
|
ARC_String *name;
|
|
void *data;
|
|
} TEMP_LangVar;
|
|
|
|
void *(* ARC_Parser_ConstantCallbackFn)(void **data, void *parentdata);
|
|
|
|
defineIntLine
|
|
┌─────────────────── TEMP_LangVar var = { NULL, NULL }
|
|
│ INT
|
|
│ ┌───────────────── <- NULL
|
|
│ │ int
|
|
│ └─────────────────
|
|
│
|
|
│ variable
|
|
│ ┌───────────────── ARC_String_Create(&(var.name));
|
|
│ │ alphaChar
|
|
│ │ ┌─────────────── ARC_String_Append(var.name, "i");
|
|
│ │ │ i
|
|
│ │ └───────────────
|
|
│ │
|
|
│ │ variableBody
|
|
│ │ ┌───────────────
|
|
│ │ │ LAMBDA
|
|
│ │ └───────────────
|
|
│ └─────────────────
|
|
│
|
|
│ EQUALS
|
|
│ ┌─────────────────
|
|
│ │ =
|
|
│ └─────────────────
|
|
│
|
|
│ value
|
|
│ ┌───────────────── var.name = malloc(sizeof(int32_t));
|
|
│ │ NUMBER
|
|
│ │ ┌─────────────── *(var.name) = 3
|
|
│ │ │ 3
|
|
│ │ └───────────────
|
|
│ │
|
|
│ │ valueBody
|
|
│ │ ┌───────────────
|
|
│ │ │ NUMBER
|
|
│ │ │ ┌───────────── *(var.name) = *var.name * 10 + 2
|
|
│ │ │ │ 2
|
|
│ │ │ └─────────────
|
|
│ │ │
|
|
│ │ │ valueBody
|
|
│ │ │ ┌─────────────
|
|
│ │ │ │ LAMBDA
|
|
│ │ │ └─────────────
|
|
│ │ └───────────────
|
|
│ └─────────────────
|
|
│
|
|
│ SEMICOLON
|
|
│ ┌─────────────────
|
|
│ │ ;
|
|
│ └─────────────────
|
|
└───────────────────
|
|
|
|
|
|
|