# 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 := ```