complement AST spec
This commit is contained in:
46
README.md
46
README.md
@@ -42,7 +42,7 @@ atom := ID
|
|||||||
| STAR
|
| STAR
|
||||||
| ANDREF
|
| ANDREF
|
||||||
|
|
||||||
stmt := defn
|
stmt := defn // defn statement
|
||||||
| expr ; // expr statement
|
| expr ; // expr statement
|
||||||
| return expr ; // return statement
|
| return expr ; // return statement
|
||||||
| DOLLAR ID expr ; // assignment statement
|
| DOLLAR ID expr ; // assignment statement
|
||||||
@@ -55,3 +55,47 @@ lambda := param_list compound
|
|||||||
|
|
||||||
compound := LCURLY (stmt)* expr? RCURLY
|
compound := LCURLY (stmt)* expr? RCURLY
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## AST Node Spec
|
||||||
|
|
||||||
|
```c
|
||||||
|
NODE_PROGRAM:
|
||||||
|
token: PROGRAM
|
||||||
|
children: NODE_DEFN*
|
||||||
|
NODE_DEFN:
|
||||||
|
token: VAL
|
||||||
|
children: NODE_TYPE, ID, NODE_EXPR?
|
||||||
|
NODE_TYPE:
|
||||||
|
token: ID | COMPLEX_TYPE
|
||||||
|
children: NODE_TYPE, NODE_TYPE
|
||||||
|
| NODE_TYPE
|
||||||
|
NODE_EXPR:
|
||||||
|
token: EXPR
|
||||||
|
children: NODE_ATOM*
|
||||||
|
|
||||||
|
// ATOM
|
||||||
|
NODE_NUM:
|
||||||
|
token: NUM
|
||||||
|
children: none
|
||||||
|
NODE_ID:
|
||||||
|
token: ID
|
||||||
|
children: none
|
||||||
|
NODE_STR:
|
||||||
|
token: STR
|
||||||
|
children: none
|
||||||
|
NODE_LAMBDA:
|
||||||
|
token: LAMBDA
|
||||||
|
children: NODE_PARAM_LIST, NODE_COMPOUND
|
||||||
|
NODE_PARAM_LIST:
|
||||||
|
token: PARAM_LIST
|
||||||
|
children: (NODE_PARAM)*
|
||||||
|
NODE_PARAM:
|
||||||
|
token: PARAM
|
||||||
|
children: NODE_TYPE, ID
|
||||||
|
NODE_COMPOUND:
|
||||||
|
token: COMPOUND
|
||||||
|
children: NODE_STMT*, NODE_EXPR?
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user