func parse(fset *token.FileSet, filename string, src []byte, fragmentOk bool) (
	file *ast.File,
	sourceAdj func(src []byte, indent int) []byte,
	indentAdj int,
	err error,
) {
	_, err = goparser.ParseFile(fset, filename, src, goparser.PackageClauseOnly)
	if err != nil {
		src = append([]byte("package main;"), src...)
		sourceAdj = func(src []byte, indent int) []byte {
			src = src[indent+len("package main\n"):]
			return bytes.TrimSpace(src)
		}
	}
	file, err = parser.ParseFile(fset, filename, src, parserMode)
	return
}
parse parses src, which was read from the named file,
as a Go source file, declaration, or statement list.
package format
import (
	"bytes"
	goparser "go/parser"
	"github.com/goplus/gop/ast"
	"github.com/goplus/gop/parser"
	"github.com/goplus/gop/printer"
	"github.com/goplus/gop/token"
)