Statement { CodeBlock(CodeBlock) Enum(Enum) Node(Node) } CodeBlock(string) Enum(name: Name, nodes: Node[]) Node(name: Name, params: Param[]) Param { Named(name: Name, type_: Type) Unnamed(Type) } Type { Name(Name) Optional(Type) Multiple(Type) } Name( string, line: number, col: number, ) // vim: syntax=elm