parser working, needs more tests and an actual language to make sure that is true though
This commit is contained in:
parent
63dfb98aad
commit
606f8e4bad
10 changed files with 365 additions and 148 deletions
68
temp_parser.txt
Normal file
68
temp_parser.txt
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
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
|
||||
│ ┌─────────────────
|
||||
│ │ ;
|
||||
│ └─────────────────
|
||||
└───────────────────
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue