private IAstNode FunctionDefinition() { Skip("#"); Token name = _lexer.Read(); if (!name.IsIdentifier || _reserved.Contains(name.Text)) throw new ParseException(name); IAstNode funcname = new NameNode(name); IAstNode parameters = new ParameterNode((TupleNode)Tuple()); IAstNode body = Block(); return new FunctionDefinitionNode(new Collection<IAstNode>() { funcname, parameters, body }); }