private ProjectionBuilder readProjection(List<Field_defContext> fieldDefs, Scope scope) {
        if (null == fieldDefs)
            throw new ProgramCompileException("Null fieldDefs");
        ProjectionBuilder proj = new ProjectionBuilder();
        for (Field_defContext rulenode : fieldDefs) {
            // FIELD
            // expression alias_def?
            OperatorNode<ExpressionOperator> expr = convertExpr(rulenode.getChild(0), scope);

            String aliasName = null;
            if (rulenode.getChildCount() > 1) {
                // ^(ALIAS ID)
                aliasName = rulenode.alias_def().IDENTIFIER().getText();
            }
            proj.addField(aliasName, expr);
            // no grammar for the other rule types at this time
        }
        return proj;
    }
Translate the ANTLR grammar into the logical representation.
container-search/src/main/java/com/yahoo/search/yql/ProgramParser.java