30 lines
368 B
Markdown
30 lines
368 B
Markdown
# C-val Compiler
|
|
|
|
## Lexical Spec
|
|
|
|
* LBRACK `[`
|
|
* RBRACK `]`
|
|
* LCURLY `{`
|
|
* RCURLY `}`
|
|
* LPAREN `(`
|
|
* RPAREN `)`
|
|
* ID `[all]`
|
|
* SEMI `;`
|
|
* COMMA `,`
|
|
* ARROW `->`
|
|
* STAR `*`
|
|
* COMMENT `#`
|
|
* NUM `[0-9]*(.[0-9]+)?`
|
|
* RETURN `return`
|
|
* IF `if`
|
|
* ELSE `else`
|
|
* STRING `"{any}"`
|
|
|
|
## Syntax Spec
|
|
|
|
```
|
|
decl := val typespec id stmt ;
|
|
typespec := id | [id* -> id?]
|
|
stmt :=
|
|
|
|
``` |