complement AST spec

This commit is contained in:
2025-11-20 13:35:20 +09:00
parent 227c94c2ea
commit 40bec503e7

View File

@@ -42,7 +42,7 @@ atom := ID
| STAR
| ANDREF
stmt := defn
stmt := defn // defn statement
| expr ; // expr statement
| return expr ; // return statement
| DOLLAR ID expr ; // assignment statement
@@ -55,3 +55,47 @@ lambda := param_list compound
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?
```