diff --git a/cmd/cue/cmd/common.go b/cmd/cue/cmd/common.go
index 4edfe36..15ea9dd 100644
--- a/cmd/cue/cmd/common.go
+++ b/cmd/cue/cmd/common.go
@@ -47,13 +47,12 @@
 
 var defaultConfig = config{
 	loadCfg: &load.Config{
-		Context: build.NewContext(
-			build.ParseFile(func(name string, src interface{}) (*ast.File, error) {
-				return parser.ParseFile(name, src,
-					parser.FromVersion(syntaxVersion),
-					parser.ParseComments,
-				)
-			})),
+		ParseFile: func(name string, src interface{}) (*ast.File, error) {
+			return parser.ParseFile(name, src,
+				parser.FromVersion(syntaxVersion),
+				parser.ParseComments,
+			)
+		},
 	},
 }
 
diff --git a/cmd/cue/cmd/script_test.go b/cmd/cue/cmd/script_test.go
index 736271b..c48d7e0 100644
--- a/cmd/cue/cmd/script_test.go
+++ b/cmd/cue/cmd/script_test.go
@@ -23,7 +23,8 @@
 // even if still valid in backwards compatibility mode.
 func TestLatest(t *testing.T) {
 	filepath.Walk("testdata/script", func(fullpath string, info os.FileInfo, err error) error {
-		if !strings.HasSuffix(fullpath, ".txt") {
+		if !strings.HasSuffix(fullpath, ".txt") ||
+			strings.HasPrefix(filepath.Base(fullpath), "legacy") {
 			return nil
 		}
 
diff --git a/cmd/cue/cmd/testdata/script/legacy.txt b/cmd/cue/cmd/testdata/script/legacy.txt
new file mode 100644
index 0000000..1b92cc3
--- /dev/null
+++ b/cmd/cue/cmd/testdata/script/legacy.txt
@@ -0,0 +1,22 @@
+! cue eval foo.cue
+cmp stderr expect-stderr
+
+! cue export foo.cue
+cmp stderr expect-stderr
+
+cue fmt foo.cue
+cmp foo.cue foo-new.cue
+
+-- expect-stderr --
+space-separated labels deprecated as of v0.0.13: try running `cue fmt` on the file to upgrade.:
+    ./foo.cue:1:3
+old-style comprehensions deprecated as of v0.0.11: try running `cue fmt` on the file to upgrade.:
+    ./foo.cue:2:8
+-- foo.cue --
+a b: 2
+"x": 3 for x in a
+-- foo-new.cue --
+a: b: 2
+for x in a {
+	"x": 3
+}
\ No newline at end of file
diff --git a/cue/load/config.go b/cue/load/config.go
index 95d883e..cdea276 100644
--- a/cue/load/config.go
+++ b/cue/load/config.go
@@ -23,6 +23,7 @@
 	"strings"
 
 	"cuelang.org/go/cue"
+	"cuelang.org/go/cue/ast"
 	"cuelang.org/go/cue/build"
 	"cuelang.org/go/cue/errors"
 	"cuelang.org/go/cue/token"
@@ -175,6 +176,19 @@
 	// This is mostly used for bootstrapping.
 	StdRoot string
 
+	// ParseFile is called to read and parse each file when preparing a
+	// package's syntax tree. It must be safe to call ParseFile simultaneously
+	// from multiple goroutines. If ParseFile is nil, the loader will uses
+	// parser.ParseFile.
+	//
+	// ParseFile should parse the source from src and use filename only for
+	// recording position information.
+	//
+	// An application may supply a custom implementation of ParseFile to change
+	// the effective file contents or the behavior of the parser, or to modify
+	// the syntax tree.
+	ParseFile func(name string, src interface{}) (*ast.File, error)
+
 	// Overlay provides a mapping of absolute file paths to file contents.
 	// If the file  with the given path already exists, the parser will use the
 	// alternative file contents provided by the map.
diff --git a/cue/load/loader.go b/cue/load/loader.go
index 3e3c789..d62a2bb 100644
--- a/cue/load/loader.go
+++ b/cue/load/loader.go
@@ -176,7 +176,10 @@
 
 func (l *loader) addFiles(dir string, p *build.Instance) {
 	for _, f := range p.BuildFiles {
-		d := encoding.NewDecoder(f, &encoding.Config{Stdin: l.cfg.stdin()})
+		d := encoding.NewDecoder(f, &encoding.Config{
+			Stdin:     l.cfg.stdin(),
+			ParseFile: l.cfg.ParseFile,
+		})
 		for ; !d.Done(); d.Next() {
 			_ = p.AddSyntax(d.File())
 		}
diff --git a/internal/encoding/encoding.go b/internal/encoding/encoding.go
index 6618a02..0a0b07c 100644
--- a/internal/encoding/encoding.go
+++ b/internal/encoding/encoding.go
@@ -134,6 +134,7 @@
 	EscapeHTML bool
 	ProtoPath  []string
 	Format     []format.Option
+	ParseFile  func(name string, src interface{}) (*ast.File, error)
 }
 
 // NewDecoder returns a stream of non-rooted data expressions. The encoding
@@ -190,7 +191,11 @@
 	path := f.Filename
 	switch f.Encoding {
 	case build.CUE:
-		i.file, i.err = parser.ParseFile(path, r, parser.ParseComments)
+		if cfg.ParseFile == nil {
+			i.file, i.err = parser.ParseFile(path, r, parser.ParseComments)
+		} else {
+			i.file, i.err = cfg.ParseFile(path, r)
+		}
 		i.validate(i.file, f)
 	case build.JSON, build.JSONL:
 		i.next = json.NewDecoder(nil, path, r).Extract
