code: func parseVariableDefinition(parser *Parser) (interface{}, error) {
  	var (
  		variable *ast.Variable
  		ttype    ast.Type
  		err      error
  	)
  	start := parser.Token.Start
  	if variable, err = parseVariable(parser); err != nil {
  		return nil, err
  	}
  	if _, err = expect(parser, lexer.COLON); err != nil {
  		return nil, err
  	}
  	if ttype, err = parseType(parser); err != nil {
  		return nil, err
  	}
  	var defaultValue ast.Value
  	if skp, err := skip(parser, lexer.EQUALS); err != nil {
  		return nil, err
  	} else if skp {
  		if defaultValue, err = parseValueLiteral(parser, true); err != nil {
  			return nil, err
  		}
  	}
  	return ast.NewVariableDefinition(&ast.VariableDefinition{
  		Variable:     variable,
  		Type:         ttype,
  		DefaultValue: defaultValue,
  		Loc:          loc(parser, start),
  	}), nil
  }
docs: /**
   * VariableDefinition : Variable : Type DefaultValue?
   */