code: func SoyFile(name, text string) (node *ast.SoyFileNode, err error) {
  	var t = &tree{
  		name:    name,
  		text:    text,
  		aliases: make(map[string]string),
  		lex:     lex(name, text),
  	}
  	defer t.recover(&err)
  	t.root = t.itemList(itemEOF)
  	t.lex = nil
  	return &ast.SoyFileNode{
  		Name: t.name,
  		Text: t.text,
  		Body: t.root.Nodes,
  	}, nil
  }
docs: // SoyFile parses the input into a SoyFileNode (the AST).
  // The result may be used as input to a soy backend to generate HTML or JS.