func AstToParsedExpr(a *Ast) (*exprpb.ParsedExpr, error) {
	return &exprpb.ParsedExpr{
		Expr:       a.Expr(),
		SourceInfo: a.SourceInfo(),
	}, nil
}
AstToParsedExpr converts an Ast to an protobuf ParsedExpr value.
package cel
import (
	"fmt"
	"github.com/google/cel-go/common"
	"github.com/google/cel-go/parser"
	exprpb "google.golang.org/genproto/googleapis/api/expr/v1alpha1"
)
func CheckedExprToAst(checkedExpr *exprpb.CheckedExpr) *Ast {
	return CheckedExprToAstWithSource(checkedExpr, nil)
}
func CheckedExprToAstWithSource(checkedExpr *exprpb.CheckedExpr, src common.Source) *Ast {
	refMap := checkedExpr.GetReferenceMap()
	if refMap == nil {
		refMap = map[int64]*exprpb.Reference{}
	}
	typeMap := checkedExpr.GetTypeMap()
	if typeMap == nil {
		typeMap = map[int64]*exprpb.Type{}
	}
	si := checkedExpr.GetSourceInfo()
	if si == nil {
		si = &exprpb.SourceInfo{}
	}
	if src == nil {
		src = common.NewInfoSource(si)
	}
	return &Ast{
		expr:    checkedExpr.GetExpr(),
		info:    si,
		source:  src,
		refMap:  refMap,
		typeMap: typeMap,
	}
}
func AstToCheckedExpr(a *Ast) (*exprpb.CheckedExpr, error) {
	if !a.IsChecked() {
		return nil, fmt.Errorf("cannot convert unchecked ast")
	}
	return &exprpb.CheckedExpr{
		Expr:         a.Expr(),
		SourceInfo:   a.SourceInfo(),
		ReferenceMap: a.refMap,
		TypeMap:      a.typeMap,
	}, nil
}
func ParsedExprToAst(parsedExpr *exprpb.ParsedExpr) *Ast {
	return ParsedExprToAstWithSource(parsedExpr, nil)
}
func ParsedExprToAstWithSource(parsedExpr *exprpb.ParsedExpr, src common.Source) *Ast {
	si := parsedExpr.GetSourceInfo()
	if si == nil {
		si = &exprpb.SourceInfo{}
	}
	if src == nil {
		src = common.NewInfoSource(si)
	}
	return &Ast{
		expr:   parsedExpr.GetExpr(),
		info:   si,
		source: src,
	}
}