Changeset 6050


Ignore:
Timestamp:
Mar 5, 2014 1:57:51 PM (6 years ago)
Author:
nlandin
Message:

XML generation for break, return, if and when statements added. #3533

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/NewXMLExport/Compiler/ModelicaXMLBackEnd/src/jastadd/ModelicaXMLGenerator.jrag

    r6045 r6050  
    8787    public void ASTNode.generateCloseTag(CodeStream str, String tag, String indent) {
    8888        str.format(CLOSE_TAG, indent, tag);
    89     }
    90    
    91     // not used for now, maybe use this later so we don't need to create maps
    92     public void ASTNode.generateAttribute(CodeStream str, String tag, String indent) {
    93        
    9489    }
    9590   
     
    618613    //=============================================================================
    619614    // Code generation for algorithms
    620     // Implementation of this will wait for a bit
    621615    //=============================================================================
    622616   
     
    634628        String indentOneStep = p.indent(indent);
    635629        String indentTwoSteps = p.indent(indentOneStep);
    636         generateOpenTag(str, "algorithm", indent);
     630        generateOpenTag(str, "assign", indent);
    637631        generateOpenTag(str, "to", indentOneStep);
    638632        p.print(getLeft(), str, indentTwoSteps);
     
    641635        p.print(getRight(), str, indentTwoSteps);
    642636        generateCloseTag(str, "from", indentOneStep);
    643         generateCloseTag(str, "algorithm", indent);
     637        generateCloseTag(str, "assign", indent);
    644638    }
    645639   
    646640    public void FBreakStmt.prettyPrintXML(Printer p, CodeStream str, String indent) {
    647         // no generation for break
     641        generateClosedTag(str, "break", p.indent(indent));
    648642    }
    649643   
    650644    public void FReturnStmt.prettyPrintXML(Printer p, CodeStream str, String indent) {
    651         // no generation for return
    652     }
    653    
    654     public void FIfWhenStmt.prettyPrintXML(Printer p, CodeStream str, String indent) {
    655         // add other if and when clauses
     645        generateClosedTag(str, "return", p.indent(indent));
     646    }
     647   
     648    public void FWhenStmt.prettyPrintXML(Printer p, CodeStream str, String indent) {
     649        String indentOneStep = p.indent(indent);
     650        String indentTwoSteps = p.indent(indentOneStep);
     651        generateOpenTag(str, "when", indent);
     652        for (FIfWhenClause clause : getFIfWhenClauses()) {
     653            p.print(clause, str, indentTwoSteps);
     654        }
     655        generateCloseTag(str, "when", indent);
     656    }
     657   
     658    public void FIfStmt.prettyPrintXML(Printer p, CodeStream str, String indent) {
     659        String indentOneStep = p.indent(indent);
     660        String indentTwoSteps = p.indent(indentOneStep);
     661        generateOpenTag(str, "if", indent);
     662        for (FIfWhenClause clause : getFIfWhenClauses()) {
     663            p.print(clause, str, indentTwoSteps);
     664        }
     665        if (getNumElseStmt() > 0) {
     666            for (FStatement stmt : getElseStmts()) {
     667                p.print(stmt, str, indentTwoSteps);
     668            }
     669        }
     670        generateCloseTag(str, "if", indent);
     671    }
     672   
     673    public void FIfWhenClause.prettyPrintXML(Printer p, CodeStream str, String indent) {
     674        String indentOneStep = p.indent(indent);
     675        generateOpenTag(str, "cond", indent);
     676        p.print(getTest(), str, indentOneStep);
     677        generateCloseTag(str, "cond", indent);
     678        generateOpenTag(str, "then", indent);
     679        for (FStatement stmt : getFStatements()) {
     680            p.print(stmt, str, indentOneStep);
     681        }
     682        generateCloseTag(str, "then", indent);
    656683    }
    657684   
     
    683710        generateCloseTag(str, "while", indent);
    684711    }
     712   
     713    public void FFunctionCallStmt.prettyprintXML(Printer p, CodeStream str, String indent) {
     714        // TODO implement this when generation of functions is implemented
     715    }
    685716}
Note: See TracChangeset for help on using the changeset viewer.