Changeset 11200


Ignore:
Timestamp:
May 28, 2018 12:04:13 PM (19 months ago)
Author:
amartensen
Message:

#5620 improved support for string comments split by '+'

Location:
trunk/Compiler/ModelicaFrontEnd
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Compiler/ModelicaFrontEnd/src/jastadd/ast/Modelica.ast

    r11192 r11200  
    210210
    211211SrcComment       : SrcBaseNode ::= [SrcStringComment] [SrcAnnotation];
    212 SrcStringComment : SrcBaseNode ::= <SrcComment:String>;
     212SrcStringComment : SrcBaseNode ::= SrcExp;
    213213
    214214// Annotations and modifications
  • trunk/Compiler/ModelicaFrontEnd/src/jastadd/flattening/Flattening.jrag

    r11186 r11200  
    14611461     */
    14621462    public FStringComment SrcStringComment.flatten() {
    1463         String comment = getSrcComment();
     1463        String comment = getComment();
    14641464        StringBuilder escapedComment = new StringBuilder();
    14651465        int length = comment.length();
     
    14831483        }
    14841484        return new FStringComment(escapedComment.toString().replaceAll("\\\\", ""));
     1485    }
     1486
     1487    public String SrcStringComment.getComment() {
     1488        return getSrcExp().concatStringLit();
     1489    }
     1490
     1491    public String ASTNode.concatStringLit() {
     1492        StringBuilder sb = new StringBuilder();
     1493        concatStringLit(sb);
     1494        return sb.toString();
     1495    }
     1496
     1497    public void ASTNode.concatStringLit(StringBuilder sb) {
     1498        for(ASTNode child : children) {
     1499            child.concatStringLit(sb);
     1500        }
     1501    }
     1502
     1503    @Override
     1504    public void SrcStringLitExp.concatStringLit(StringBuilder sb) {
     1505        sb.append(getSTRING());
    14851506    }
    14861507
  • trunk/Compiler/ModelicaFrontEnd/src/parser/Modelica.parser

    r11192 r11200  
    15861586 
    15871587SrcStringComment string_comment =
    1588   STRING.s      {: return new SrcStringComment(s); :}
    1589   | string_comment PLUS STRING.s {: string_comment.setSrcComment(string_comment.getSrcComment().concat(s));
    1590                                     return string_comment; :}
    1591  
    1592   ;
    1593  
     1588  string_comment_exp    {: return new SrcStringComment(string_comment_exp); :}
     1589  ;
     1590
     1591SrcExp string_comment_exp
     1592  = string     
     1593  | string_comment_exp PLUS string {: return new SrcAddExp(string_comment_exp, string); :}
     1594  ;
     1595
     1596 SrcStringLitExp string =
     1597  STRING.s  {: return new SrcStringLitExp(s); :}
     1598  ;
     1599
    15941600 SrcIdDecl id_decl =
    15951601   ID.id   {: return new SrcIdDecl(id); :}
  • trunk/Compiler/ModelicaFrontEnd/test/modelica/TypeTests.mo

    r10783 r11200  
    332332end TypeRel6;
    333333
     334model SplitStringComment
     335 Real x "a"+"b"+"c";
     336
     337    annotation(__JModelica(UnitTesting(tests={
     338        FlatteningTestCase(
     339            name="SplitStringComment",
     340            description="tests flattening of split string comments",
     341            flatModel="
     342fclass TypeTests.SplitStringComment
     343 Real x \"abc\";
     344end TypeTests.SplitStringComment;
     345")})));
     346end SplitStringComment;
    334347
    335348
Note: See TracChangeset for help on using the changeset viewer.