| // Copyright 2011 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // This file contains support functions for parsing .go files |
| // accessed via godoc's file system fs. |
| |
| package main |
| |
| import ( |
| "go/ast" |
| "go/parser" |
| "go/token" |
| pathpkg "path" |
| ) |
| |
| func parseFile(fset *token.FileSet, filename string, mode parser.Mode) (*ast.File, error) { |
| src, err := ReadFile(fs, filename) |
| if err != nil { |
| return nil, err |
| } |
| return parser.ParseFile(fset, filename, src, mode) |
| } |
| |
| func parseFiles(fset *token.FileSet, abspath string, localnames []string) (map[string]*ast.File, error) { |
| files := make(map[string]*ast.File) |
| for _, f := range localnames { |
| absname := pathpkg.Join(abspath, f) |
| file, err := parseFile(fset, absname, parser.ParseComments) |
| if err != nil { |
| return nil, err |
| } |
| files[absname] = file |
| } |
| |
| return files, nil |
| } |