Changeset 648 in gra2mol


Ignore:
Timestamp:
10/07/11 11:52:31 (6 years ago)
Author:
jlcanovas
Message:
 
Location:
trunk/Grammar2Model.examples.Delphi2Model/ASTMExtraction
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Grammar2Model.examples.Delphi2Model/ASTMExtraction/files/src/delphi.g

    r639 r648  
    1 /******************************************************************************* 
    2  * Copyright (c) 2010 
    3  * All rights reserved. This program and the accompanying materials 
    4  * are made available under the terms of the Eclipse Public License v1.0 
    5  * which accompanies this distribution, and is available at 
    6  * http://www.eclipse.org/legal/epl-v10.html 
    7  * 
    8  * Contributors: 
    9  *    Javier Canovas (jlcanovas@um.es)  
    10  *******************************************************************************/ 
    11  
    12  
    131/** Delphi 7 grammar 
    142  * Author: Javier Canovas (jlcanovas@um.es) 
     
    329317 
    330318designator  
    331         :       qualId ('.' ident | '[' exprList ']' | '^')* 
    332         ; 
    333  
     319        :       designatorSubPart ('.' designator)? 
     320        ; 
     321 
     322designatorSubPart  // modified 
     323        :       designatorPart ( '[' exprList ']' | '^')* 
     324        ; 
     325 
     326designatorPart // modified 
     327        :       ID  
     328        |       '&' reservedWord 
     329        |       ID '(' ID '^' ')' // mine 
     330        ; 
    334331setConstructor  
    335332        :       '[' (setElement (',' setElement)*) ']' 
  • trunk/Grammar2Model.examples.Delphi2Model/ASTMExtraction/files/src/delphi2astm.g2m

    r639 r648  
    1 -- ******************************************************************************* 
    2 -- * Copyright (c) 2011 
    3 -- * All rights reserved. This program and the accompanying materials 
    4 -- * are made available under the terms of the Eclipse Public License v1.0 
    5 -- * which accompanies this distribution, and is available at 
    6 -- * http://www.eclipse.org/legal/epl-v10.html 
    7 -- * 
    8 -- * Contributors: 
    9 -- *    Javier Canovas (jlcanovas@um.es)  
    10 -- ******************************************************************************* 
    11  
    12  
    131---------------------------------------------------------------------------------- 
    142-- Gra2MoL transformation definition for extracting ASTM models from Delphi code 
     
    164-- 
    175-- TODO: 
     6--   * There are several TODO within the definition 
    187---------------------------------------------------------------------------------- 
    198 
     
    226215end_rule 
    227216 
     217skip_rule 'skipStatementList' 
     218        from stmtList stats 
     219        to   astm::gastm::Statement 
     220        queries 
     221                next : /stats/#statement; 
     222        mappings 
     223                skip next; 
     224end_rule 
     225 
    228226skip_rule 'skipCorrectStatement' 
    229227        from    statement st 
     
    247245                rElem : /st/#expression; 
    248246        mappings 
    249                 expression                                                              = new astm::gastm::BinaryExpression; 
    250                 expression.leftOperand                                  = new astm::gastm::IdentifierReference; 
    251                 expression.leftOperand.name                     = new astm::gastm::Name; 
    252                 expression.leftOperand.name.nameString  = extract lElem; 
    253                 expression.leftOperand.refersTo                 = lElem; 
    254                  
    255                 expression.operator                                     = new astm::gastm::Assign; 
    256                  
    257                 expression.rightOperand                                 = rElem; 
     247                expression                              = new astm::gastm::BinaryExpression; 
     248                expression.leftOperand  = lElem; 
     249                expression.operator     = new astm::gastm::Assign; 
     250                expression.rightOperand = rElem; 
    258251end_rule 
    259252 
     
    266259                eElem : /st//#expression; 
    267260        mappings 
    268                 expression = new astm::gastm::FunctionCallExpression; 
    269                  
    270                 expression.calledFunction                                       = new astm::gastm::IdentifierReference; 
    271                 expression.calledFunction.name                          = new astm::gastm::Name; 
    272                 expression.calledFunction.name.nameString       = extract nElem; 
    273                 expression.calledFunction.refersTo                      = dElem; 
    274  
    275                 expression.actualParams = eElem; 
     261                expression                                = new astm::gastm::FunctionCallExpression; 
     262                expression.calledFunction = dElem; 
     263                expression.actualParams   = eElem; 
     264end_rule 
     265 
     266rule 'mapFunctionCall' 
     267        from    simpleStatement/designator f 
     268        to              astm::gastm::FunctionCallExpression 
     269        queries 
     270                nElem : /f//#ident[0]; 
     271                dElem : /f/#designator; 
     272                eElem : /f//#expression; 
     273        mappings 
     274                --expressionType = 
     275                calledFunction = dElem; 
     276                actualParams   = eElem; 
    276277end_rule 
    277278 
     
    296297end_rule 
    297298 
    298 -- 
    299 -- Rules for qualified names 
    300 -- 
    301 rule 'mapDesignator' 
    302         from    designator d 
    303         to              astm::gastm::NameReference 
    304         queries 
    305                  
    306         mappings         
     299rule 'mapIfStatement' 
     300        from structStmt/conditionalStmt/ifStmt st 
     301        to      astm::gastm::IfStatement 
     302        queries 
     303                exp       : /st//ifStmt/#expression; 
     304                thenElems : /st//ifStmt/#statement[0]; 
     305                elseElems : /st//ifStmt/#statement[1]; 
     306        mappings 
     307                condition = exp; 
     308                thenBody  = thenElems; 
     309                elseBody  = elseElems; 
     310end_rule 
     311 
     312rule 'mapCaseStatement' 
     313        from structStmt/conditionalStmt/caseStmt st 
     314        to      astm::gastm::SwitchStament 
     315        queries 
     316                exp       : /st//caseStmt/#expression; 
     317                caseSels  : /st//caseStmt/#caseSelector; 
     318                elseElems : /st//caseStmt/#stmtList; 
     319        mappings 
     320                switchExpression = exp; 
     321                cases            = caseSels; 
     322                cases            = elseElems; 
     323end_rule 
     324 
     325rule 'mapCaseBlock' 
     326        from caseSelector cs 
     327        to       astm::gastm::CaseBlock 
     328        queries 
     329                exps  : /cs//constExpr/#expression; -- TODO: Deal with constExpr 
     330                stats : /cs/#statement; 
     331        mappings 
     332                caseExpressions = exps; 
     333                body            = statement; 
     334end_rule 
     335 
     336rule 'mapDefaultCaseBlock' 
     337        from stmtList st 
     338        to   astm::gastm::DefaultBlock 
     339        queries 
     340                stats : /st/#statement; 
     341        mappings 
     342                body = stats; 
     343end_rule 
     344 
     345rule 'mapTryStatement' 
     346        from structStmt/tryStmt st 
     347        to   astm::gastm::TryStatement 
     348        queries 
     349                stats  : /st//tryStmt/#stmtList[0]; 
     350                exceps : /st//tryStmt/#exceptionBlock; -- TODO: Deal with exception blocks 
     351                alts   : /st//tryStmt/#stmtList[1]; 
     352        mappings 
     353                guardedStatement = stats; 
     354                catchBlocks      = exceps; 
     355                finalStatement   = alts; 
    307356end_rule 
    308357 
     
    311360-- 
    312361 
    313 skip_rule 'locateFromDesignator' 
    314         from designator d 
    315         to       astm::gastm::DefinitionObject 
    316         queries 
    317                 source : /d//#ident; 
     362rule 'locateFromDesignatorNoQualified' 
     363        from designator{!TOKEN[0].eq(".")} d 
     364        to       astm::gastm::IdentifierReference 
     365        queries 
     366                source : /d//#designatorPart; 
    318367                varloc : //#varDecl//ident{ID.eq(source.ID)}; 
    319368                metloc : //#procedureDeclSection//ident[0]{ID.eq(source.ID)}; 
     369        mappings 
     370                name                    = new astm::gastm::Name; 
     371                name.nameString = extract source;        
     372                if(metloc.hasResults) then 
     373                        refersTo = metloc; 
     374                else  
     375                        refersTo = varloc; 
     376                end_if 
     377end_rule 
     378 
     379rule 'locateFromDesignatorQualified' 
     380        from designator{TOKEN[0].eq(".")} d 
     381        to       astm::gastm::QualifiedOverData 
     382        queries 
     383                source : /d/designatorSubPart/#designatorPart; 
     384                varloc : //#varDecl//ident{ID.eq(source.ID)}; 
     385                metloc : //#procedureDeclSection//ident[0]{ID.eq(source.ID)}; 
     386                next   : /d/#designator; 
     387        mappings 
     388                name                    = new astm::gastm::Name; 
     389                name.nameString = extract source;        
     390                member                  = next; 
     391                if(metloc.hasResults) then 
     392                        refersTo = metloc; 
     393                else  
     394                        refersTo = varloc; 
     395                end_if 
     396end_rule 
     397 
     398skip_rule 'locateFromID' 
     399        from ident id 
     400        to       astm::gastm::DefinitionObject 
     401        queries 
     402                varloc : //#varDecl//ident{ID.eq(id.ID)}; 
     403                metloc : //#procedureDeclSection//ident[0]{ID.eq(id.ID)}; 
    320404        mappings 
    321405                if(metloc.hasResults) then 
     
    326410end_rule 
    327411 
    328 skip_rule 'locateFromDesignator' 
    329         from ident id 
    330         to       astm::gastm::DefinitionObject 
    331         queries 
    332                 varloc : //#varDecl//ident{ID.eq(id.ID)}; 
    333                 metloc : //#procedureDeclSection//ident[0]{ID.eq(id.ID)}; 
    334         mappings 
    335                 if(metloc.hasResults) then 
    336                         skip metloc; 
    337                 else  
    338                         skip varloc; 
    339                 end_if 
    340 end_rule 
    341  
    342412--  
    343413-- Rules for expressions 
    344414-- 
    345 skip_rule 'skipRelOp' 
    346         from    expression exp 
     415 
     416-- Be careful, this rule must be located here (before skipToSimpleExpression) 
     417rule 'mapRelOp' 
     418        from    expression/relOp exp 
     419        to              astm::gastm::BinaryExpression 
     420        queries 
     421                lElems : /exp/#simpleExpression[0]; 
     422                rElems : /exp/#simpleExpression[1]; -- TODO: Deal with more than one 
     423                 
     424                isEquals : /exp/relOp{TOKEN.eq("=")}; -- TODO: Deal with  
     425        mappings 
     426                leftOperand  = lElems; 
     427                rightOperand = rElems; 
     428                 
     429                if(isEquals.hasResults) then 
     430                        operator = new astm::gastm::Equal; 
     431                end_if 
     432end_rule 
     433 
     434skip_rule 'skipToSimpleExpression' 
     435        from    expression/simpleExpression exp 
    347436        to              astm::gastm::Expression 
    348437        queries 
    349                 existsRelOp : /exp/#relOp[0]; 
    350438                nextNode    : /exp/#simpleExpression; 
    351439        mappings 
    352                 if(existsRelOp.hasResults) then 
    353                         skip existRelOp; 
    354                 else 
    355                         skip nextNode; 
    356                 end_if 
    357 end_rule 
    358  
    359 -- TODO: Fill it in! 
    360 rule 'mapRelOp' 
    361         from    relOp ro 
    362         to              astm::gastm::BinaryExpression 
    363         queries 
    364         mappings 
     440                skip nextNode; 
    365441end_rule 
    366442 
     
    377453                        skip nextNode; 
    378454                end_if 
    379 end_rule 
    380  
    381 -- TODO: Fill it in! 
    382 rule 'addOp' 
    383         from    relOp ro 
    384         to              astm::gastm::BinaryExpression 
    385         queries 
    386         mappings 
    387455end_rule 
    388456 
     
    439507        mappings 
    440508                --expressionType = 
    441                  
    442                 calledFunction                                  = new astm::gastm::IdentifierReference; 
    443                 calledFunction.name                     = new astm::gastm::Name; 
    444                 calledFunction.name.nameString  = extract nElem; 
    445                 calledFunction.refersTo                 = dElem; 
    446  
    447                 actualParams = eElem; 
     509                calledFunction = dElem; 
     510                actualParams   = eElem; 
    448511end_rule 
    449512 
     
    458521 
    459522-- TODO: Dealing with complex identifiers 
    460 rule 'mapVariableRef' 
     523skip_rule 'mapVariableRef' 
    461524        from    factor/designator f 
    462525        to              astm::gastm::IdentifierReference 
    463         queries 
    464                 nElem : /f/designator//#ident;           
     526        queries  
    465527                dElem : /f/#designator; 
    466528        mappings 
    467                 name                    = new astm::gastm::Name; 
    468                 name.nameString = extract nElem; 
    469                 refersTo                = dElem;  
    470 end_rule 
     529                skip dElem; 
     530end_rule 
  • trunk/Grammar2Model.examples.Delphi2Model/ASTMExtraction/resultModel.ecore.xmi

    r631 r648  
    33  <files xsi:type="sastm:DelphiUnit" language="Delphi"> 
    44    <locationInfo> 
    5       <inSourceFile pathName="/home/jlcanovas/eclipses/eclipse-3.6-helios/workspace/Grammar2Model/../Grammar2Model.examples.Delphi2Model/delphiSrc/untClArchivo.pas"/> 
     5      <inSourceFile pathName="/Users/jlcanovas/Desktop/eclipse-helios/workspace/Grammar2Model/../Grammar2Model.examples.Delphi2Model/delphiSrc/untClArchivo.pas"/> 
    66    </locationInfo> 
    77    <name nameString="untClArchivo"/> 
     
    7272                  <name nameString="wnd"/> 
    7373                </leftOperand> 
    74                 <rightOperand xsi:type="gastm:IdentifierReference"> 
    75                   <name nameString="Handle"/> 
     74                <rightOperand xsi:type="gastm:QualifiedOverData"> 
     75                  <name nameString="Application"/> 
     76                  <member> 
     77                    <name nameString="Handle"/> 
     78                  </member> 
    7679                </rightOperand> 
    7780              </expression> 
     
    176179              </leftOperand> 
    177180              <rightOperand xsi:type="sastm:DelphiFunctionCallExpression"> 
    178                 <calledFunction xsi:type="gastm:IdentifierReference"> 
    179                   <name nameString="RutaDoc"/> 
     181                <calledFunction xsi:type="gastm:QualifiedOverData"> 
     182                  <name nameString="dmDatos"/> 
     183                  <member> 
     184                    <name nameString="RutaDoc"/> 
     185                  </member> 
    180186                </calledFunction> 
    181187                <actualParams xsi:type="gastm:ActualParameterExpression"> 
     
    199205              </leftOperand> 
    200206              <rightOperand xsi:type="sastm:DelphiFunctionCallExpression"> 
    201                 <calledFunction xsi:type="gastm:IdentifierReference"> 
    202                   <name nameString="Create"/> 
     207                <calledFunction xsi:type="gastm:QualifiedOverData" refersTo="//@files.0/@implementation/@fragments.3/@body.0/@declarations.0"> 
     208                  <name nameString="TFrmSelFil"/> 
     209                  <member> 
     210                    <name nameString="Create"/> 
     211                  </member> 
    203212                </calledFunction> 
    204213                <actualParams xsi:type="gastm:ActualParameterExpression"/> 
     
    206215            </expression> 
    207216          </subStatements> 
     217          <subStatements xsi:type="gastm:TryStatement"> 
     218            <guardedStatement xsi:type="gastm:IfStatement"> 
     219              <condition xsi:type="gastm:BinaryExpression"> 
     220                <leftOperand xsi:type="gastm:QualifiedOverData" refersTo="//@files.0/@implementation/@fragments.3/@body.0/@declarations.0"> 
     221                  <name nameString="f"/> 
     222                  <member> 
     223                    <name nameString="ShowModal"/> 
     224                  </member> 
     225                </leftOperand> 
     226                <rightOperand xsi:type="gastm:IdentifierReference"> 
     227                  <name nameString="mrOk"/> 
     228                </rightOperand> 
     229              </condition> 
     230              <thenBody xsi:type="gastm:ExpressionStatement"> 
     231                <expression xsi:type="gastm:BinaryExpression"> 
     232                  <operator xsi:type="gastm:Assign"/> 
     233                  <leftOperand xsi:type="gastm:IdentifierReference"> 
     234                    <name nameString="nombre"/> 
     235                  </leftOperand> 
     236                  <rightOperand xsi:type="gastm:QualifiedOverData" refersTo="//@files.0/@implementation/@fragments.3/@body.0/@declarations.0"> 
     237                    <name nameString="f"/> 
     238                    <member> 
     239                      <name nameString="fichero"/> 
     240                    </member> 
     241                  </rightOperand> 
     242                </expression> 
     243              </thenBody> 
     244            </guardedStatement> 
     245          </subStatements> 
    208246          <declarations xsi:type="gastm:VariableDefinition" isMutable="true"> 
    209247            <identifierName nameString="f"/> 
     
    223261              </expression> 
    224262            </subStatements> 
     263            <subStatements xsi:type="gastm:IfStatement"> 
     264              <thenBody xsi:type="gastm:ExpressionStatement"> 
     265                <expression xsi:type="gastm:BinaryExpression"> 
     266                  <operator xsi:type="gastm:Assign"/> 
     267                  <leftOperand xsi:type="gastm:IdentifierReference"> 
     268                    <name nameString="result"/> 
     269                  </leftOperand> 
     270                  <rightOperand xsi:type="gastm:QualifiedOverData"> 
     271                    <name nameString="Fields"/> 
     272                    <member> 
     273                      <name nameString="AsString"/> 
     274                    </member> 
     275                  </rightOperand> 
     276                </expression> 
     277              </thenBody> 
     278            </subStatements> 
    225279          </subStatements> 
    226280        </body> 
     
    238292              </expression> 
    239293            </subStatements> 
     294            <subStatements xsi:type="gastm:IfStatement"> 
     295              <thenBody xsi:type="gastm:ExpressionStatement"> 
     296                <expression xsi:type="gastm:BinaryExpression"> 
     297                  <operator xsi:type="gastm:Assign"/> 
     298                  <leftOperand xsi:type="gastm:IdentifierReference"> 
     299                    <name nameString="result"/> 
     300                  </leftOperand> 
     301                  <rightOperand xsi:type="gastm:QualifiedOverData"> 
     302                    <name nameString="Fields"/> 
     303                    <member> 
     304                      <name nameString="AsString"/> 
     305                    </member> 
     306                  </rightOperand> 
     307                </expression> 
     308              </thenBody> 
     309            </subStatements> 
    240310          </subStatements> 
    241311        </body> 
     
    253323              </expression> 
    254324            </subStatements> 
     325            <subStatements xsi:type="gastm:IfStatement"> 
     326              <thenBody xsi:type="gastm:ExpressionStatement"> 
     327                <expression xsi:type="gastm:BinaryExpression"> 
     328                  <operator xsi:type="gastm:Assign"/> 
     329                  <leftOperand xsi:type="gastm:IdentifierReference"> 
     330                    <name nameString="result"/> 
     331                  </leftOperand> 
     332                  <rightOperand xsi:type="gastm:QualifiedOverData"> 
     333                    <name nameString="Fields"/> 
     334                    <member> 
     335                      <name nameString="AsString"/> 
     336                    </member> 
     337                  </rightOperand> 
     338                </expression> 
     339              </thenBody> 
     340            </subStatements> 
    255341          </subStatements> 
    256342        </body> 
     
    268354              </expression> 
    269355            </subStatements> 
     356            <subStatements xsi:type="gastm:IfStatement"> 
     357              <thenBody xsi:type="gastm:ExpressionStatement"> 
     358                <expression xsi:type="gastm:BinaryExpression"> 
     359                  <operator xsi:type="gastm:Assign"/> 
     360                  <leftOperand xsi:type="gastm:IdentifierReference"> 
     361                    <name nameString="result"/> 
     362                  </leftOperand> 
     363                  <rightOperand xsi:type="gastm:QualifiedOverData"> 
     364                    <name nameString="Fields"/> 
     365                    <member> 
     366                      <name nameString="AsString"/> 
     367                    </member> 
     368                  </rightOperand> 
     369                </expression> 
     370              </thenBody> 
     371            </subStatements> 
    270372          </subStatements> 
    271373        </body> 
     
    273375      <fragments xsi:type="gastm:FunctionDefinition"> 
    274376        <identifierName nameString="TArchivo.BorraArchivo"/> 
    275         <body xsi:type="sastm:DelphiBlockStatement"/> 
     377        <body xsi:type="sastm:DelphiBlockStatement"> 
     378          <subStatements xsi:type="gastm:IfStatement"> 
     379            <thenBody xsi:type="gastm:ExpressionStatement"> 
     380              <expression xsi:type="gastm:BinaryExpression"> 
     381                <operator xsi:type="gastm:Assign"/> 
     382                <leftOperand xsi:type="gastm:IdentifierReference"> 
     383                  <name nameString="result"/> 
     384                </leftOperand> 
     385                <rightOperand xsi:type="gastm:IntegerLiteral" value="1"/> 
     386              </expression> 
     387            </thenBody> 
     388            <elseBody xsi:type="gastm:IfStatement"> 
     389              <condition xsi:type="sastm:DelphiFunctionCallExpression"> 
     390                <calledFunction xsi:type="gastm:IdentifierReference"> 
     391                  <name nameString="RenameFile"/> 
     392                </calledFunction> 
     393                <actualParams xsi:type="gastm:ActualParameterExpression"> 
     394                  <value xsi:type="gastm:IdentifierReference"> 
     395                    <name nameString="ruta"/> 
     396                  </value> 
     397                </actualParams> 
     398                <actualParams xsi:type="gastm:ActualParameterExpression"/> 
     399              </condition> 
     400              <thenBody xsi:type="gastm:IfStatement"> 
     401                <condition xsi:type="sastm:DelphiFunctionCallExpression"> 
     402                  <calledFunction xsi:type="gastm:IdentifierReference"> 
     403                    <name nameString="deleteFile"/> 
     404                  </calledFunction> 
     405                  <actualParams xsi:type="gastm:ActualParameterExpression"/> 
     406                </condition> 
     407                <thenBody xsi:type="gastm:ExpressionStatement"> 
     408                  <expression xsi:type="gastm:BinaryExpression"> 
     409                    <operator xsi:type="gastm:Assign"/> 
     410                    <leftOperand xsi:type="gastm:IdentifierReference"> 
     411                      <name nameString="result"/> 
     412                    </leftOperand> 
     413                    <rightOperand xsi:type="gastm:IntegerLiteral" value="0"/> 
     414                  </expression> 
     415                </thenBody> 
     416                <elseBody xsi:type="gastm:ExpressionStatement"> 
     417                  <expression xsi:type="gastm:BinaryExpression"> 
     418                    <operator xsi:type="gastm:Assign"/> 
     419                    <leftOperand xsi:type="gastm:IdentifierReference"> 
     420                      <name nameString="result"/> 
     421                    </leftOperand> 
     422                    <rightOperand xsi:type="gastm:IntegerLiteral" value="3"/> 
     423                  </expression> 
     424                </elseBody> 
     425              </thenBody> 
     426              <elseBody xsi:type="gastm:ExpressionStatement"> 
     427                <expression xsi:type="gastm:BinaryExpression"> 
     428                  <operator xsi:type="gastm:Assign"/> 
     429                  <leftOperand xsi:type="gastm:IdentifierReference"> 
     430                    <name nameString="result"/> 
     431                  </leftOperand> 
     432                  <rightOperand xsi:type="gastm:IntegerLiteral" value="2"/> 
     433                </expression> 
     434              </elseBody> 
     435            </elseBody> 
     436          </subStatements> 
     437          <subStatements xsi:type="gastm:IfStatement"> 
     438            <condition xsi:type="gastm:BinaryExpression"> 
     439              <leftOperand xsi:type="gastm:IdentifierReference"> 
     440                <name nameString="result"/> 
     441              </leftOperand> 
     442              <rightOperand xsi:type="gastm:IntegerLiteral" value="3"/> 
     443            </condition> 
     444            <thenBody xsi:type="gastm:IfStatement"> 
     445              <thenBody xsi:type="gastm:ExpressionStatement"> 
     446                <expression xsi:type="gastm:BinaryExpression"> 
     447                  <operator xsi:type="gastm:Assign"/> 
     448                  <leftOperand xsi:type="gastm:IdentifierReference"> 
     449                    <name nameString="result"/> 
     450                  </leftOperand> 
     451                  <rightOperand xsi:type="gastm:IntegerLiteral" value="4"/> 
     452                </expression> 
     453              </thenBody> 
     454            </thenBody> 
     455          </subStatements> 
     456        </body> 
    276457      </fragments> 
    277458      <fragments xsi:type="gastm:FunctionDefinition"> 
    278459        <identifierName nameString="TArchivo.BorraArchivo"/> 
    279460        <body xsi:type="sastm:DelphiBlockStatement"> 
     461          <subStatements xsi:type="gastm:IfStatement"> 
     462            <condition xsi:type="gastm:BinaryExpression"> 
     463              <leftOperand xsi:type="gastm:IdentifierReference"> 
     464                <name nameString="cds"/> 
     465              </leftOperand> 
     466            </condition> 
     467            <thenBody xsi:type="gastm:IfStatement"> 
     468              <thenBody xsi:type="gastm:IfStatement"> 
     469                <condition xsi:type="gastm:BinaryExpression"> 
     470                  <leftOperand xsi:type="gastm:QualifiedOverData"> 
     471                    <name nameString="cds"/> 
     472                    <member> 
     473                      <name nameString="State"/> 
     474                    </member> 
     475                  </leftOperand> 
     476                  <rightOperand xsi:type="gastm:IdentifierReference"> 
     477                    <name nameString="dsBrowse"/> 
     478                  </rightOperand> 
     479                </condition> 
     480                <thenBody xsi:type="gastm:TryStatement"> 
     481                  <guardedStatement xsi:type="gastm:IfStatement"> 
     482                    <thenBody xsi:type="gastm:IfStatement"> 
     483                      <condition xsi:type="gastm:BinaryExpression"> 
     484                        <leftOperand xsi:type="sastm:DelphiFunctionCallExpression"> 
     485                          <calledFunction xsi:type="gastm:QualifiedOverData"> 
     486                            <name nameString="cds"/> 
     487                            <member> 
     488                              <name nameString="ApplyUpdates"/> 
     489                            </member> 
     490                          </calledFunction> 
     491                          <actualParams xsi:type="gastm:ActualParameterExpression"> 
     492                            <value xsi:type="gastm:IntegerLiteral" value="0"/> 
     493                          </actualParams> 
     494                        </leftOperand> 
     495                        <rightOperand xsi:type="gastm:IntegerLiteral" value="0"/> 
     496                      </condition> 
     497                      <thenBody xsi:type="gastm:ExpressionStatement"> 
     498                        <expression xsi:type="gastm:BinaryExpression"> 
     499                          <operator xsi:type="gastm:Assign"/> 
     500                          <leftOperand xsi:type="gastm:IdentifierReference"> 
     501                            <name nameString="result"/> 
     502                          </leftOperand> 
     503                          <rightOperand xsi:type="gastm:IntegerLiteral" value="0"/> 
     504                        </expression> 
     505                      </thenBody> 
     506                      <elseBody xsi:type="gastm:ExpressionStatement"> 
     507                        <expression xsi:type="gastm:BinaryExpression"> 
     508                          <operator xsi:type="gastm:Assign"/> 
     509                          <leftOperand xsi:type="gastm:IdentifierReference"> 
     510                            <name nameString="result"/> 
     511                          </leftOperand> 
     512                          <rightOperand xsi:type="gastm:IntegerLiteral" value="5"/> 
     513                        </expression> 
     514                      </elseBody> 
     515                    </thenBody> 
     516                    <elseBody xsi:type="gastm:ExpressionStatement"> 
     517                      <expression xsi:type="gastm:BinaryExpression"> 
     518                        <operator xsi:type="gastm:Assign"/> 
     519                        <leftOperand xsi:type="gastm:IdentifierReference"> 
     520                          <name nameString="result"/> 
     521                        </leftOperand> 
     522                        <rightOperand xsi:type="gastm:IdentifierReference" refersTo="//@files.0/@implementation/@fragments.9/@body.0/@declarations.0"> 
     523                          <name nameString="res"/> 
     524                        </rightOperand> 
     525                      </expression> 
     526                    </elseBody> 
     527                  </guardedStatement> 
     528                </thenBody> 
     529                <elseBody xsi:type="gastm:ExpressionStatement"> 
     530                  <expression xsi:type="gastm:BinaryExpression"> 
     531                    <operator xsi:type="gastm:Assign"/> 
     532                    <leftOperand xsi:type="gastm:IdentifierReference"> 
     533                      <name nameString="result"/> 
     534                    </leftOperand> 
     535                    <rightOperand xsi:type="gastm:IntegerLiteral" value="9"/> 
     536                  </expression> 
     537                </elseBody> 
     538              </thenBody> 
     539              <elseBody xsi:type="gastm:ExpressionStatement"> 
     540                <expression xsi:type="gastm:BinaryExpression"> 
     541                  <operator xsi:type="gastm:Assign"/> 
     542                  <leftOperand xsi:type="gastm:IdentifierReference"> 
     543                    <name nameString="result"/> 
     544                  </leftOperand> 
     545                  <rightOperand xsi:type="gastm:IntegerLiteral" value="8"/> 
     546                </expression> 
     547              </elseBody> 
     548            </thenBody> 
     549            <elseBody xsi:type="gastm:ExpressionStatement"> 
     550              <expression xsi:type="gastm:BinaryExpression"> 
     551                <operator xsi:type="gastm:Assign"/> 
     552                <leftOperand xsi:type="gastm:IdentifierReference"> 
     553                  <name nameString="result"/> 
     554                </leftOperand> 
     555                <rightOperand xsi:type="gastm:IntegerLiteral" value="7"/> 
     556              </expression> 
     557            </elseBody> 
     558          </subStatements> 
    280559          <declarations xsi:type="gastm:VariableDefinition" isMutable="true"> 
    281560            <identifierName nameString="res"/> 
     
    309588            </expression> 
    310589          </subStatements> 
     590          <subStatements xsi:type="gastm:IfStatement"> 
     591            <condition xsi:type="gastm:BinaryExpression"> 
     592              <leftOperand xsi:type="gastm:IdentifierReference"> 
     593                <name nameString="result"/> 
     594              </leftOperand> 
     595              <rightOperand xsi:type="gastm:IntegerLiteral" value="0"/> 
     596            </condition> 
     597            <elseBody xsi:type="gastm:IfStatement"> 
     598              <condition xsi:type="gastm:BinaryExpression"> 
     599                <leftOperand xsi:type="gastm:IdentifierReference"> 
     600                  <name nameString="result"/> 
     601                </leftOperand> 
     602                <rightOperand xsi:type="gastm:IntegerLiteral" value="5"/> 
     603              </condition> 
     604              <thenBody xsi:type="gastm:ExpressionStatement"> 
     605                <expression xsi:type="gastm:FunctionCallExpression"> 
     606                  <calledFunction xsi:type="gastm:QualifiedOverData"> 
     607                    <name nameString="TMensa"/> 
     608                    <member refersTo="//@files.0/@implementation/@fragments.1/@body.0/@declarations.0"> 
     609                      <name nameString="Info"/> 
     610                    </member> 
     611                  </calledFunction> 
     612                  <actualParams xsi:type="gastm:ActualParameterExpression"> 
     613                    <value xsi:type="gastm:StringLiteral" value="'Se ha borrado el archivo en disco duro pero no el registro en base de datos'"/> 
     614                  </actualParams> 
     615                </expression> 
     616              </thenBody> 
     617              <elseBody xsi:type="gastm:IfStatement"> 
     618                <condition xsi:type="gastm:BinaryExpression"> 
     619                  <leftOperand xsi:type="gastm:IdentifierReference"> 
     620                    <name nameString="result"/> 
     621                  </leftOperand> 
     622                  <rightOperand xsi:type="gastm:IntegerLiteral" value="6"/> 
     623                </condition> 
     624                <thenBody xsi:type="gastm:ExpressionStatement"> 
     625                  <expression xsi:type="gastm:FunctionCallExpression"> 
     626                    <calledFunction xsi:type="gastm:QualifiedOverData"> 
     627                      <name nameString="TMensa"/> 
     628                      <member refersTo="//@files.0/@implementation/@fragments.1/@body.0/@declarations.0"> 
     629                        <name nameString="Info"/> 
     630                      </member> 
     631                    </calledFunction> 
     632                    <actualParams xsi:type="gastm:ActualParameterExpression"> 
     633                      <value xsi:type="gastm:StringLiteral" value="'Ha ocurrido un error inesperado'"/> 
     634                    </actualParams> 
     635                  </expression> 
     636                </thenBody> 
     637                <elseBody xsi:type="gastm:IfStatement"> 
     638                  <condition xsi:type="gastm:BinaryExpression"> 
     639                    <leftOperand xsi:type="gastm:IdentifierReference"> 
     640                      <name nameString="result"/> 
     641                    </leftOperand> 
     642                    <rightOperand xsi:type="gastm:IntegerLiteral" value="2"/> 
     643                  </condition> 
     644                  <thenBody xsi:type="gastm:ExpressionStatement"> 
     645                    <expression xsi:type="gastm:FunctionCallExpression"> 
     646                      <calledFunction xsi:type="gastm:QualifiedOverData"> 
     647                        <name nameString="TMensa"/> 
     648                        <member refersTo="//@files.0/@implementation/@fragments.1/@body.0/@declarations.0"> 
     649                          <name nameString="Info"/> 
     650                        </member> 
     651                      </calledFunction> 
     652                      <actualParams xsi:type="gastm:ActualParameterExpression"> 
     653                        <value xsi:type="gastm:StringLiteral" value="'El archivo estÔø&#x3a9; bloqueado, no puede borrarse'"/> 
     654                      </actualParams> 
     655                    </expression> 
     656                  </thenBody> 
     657                  <elseBody xsi:type="gastm:IfStatement"> 
     658                    <condition xsi:type="gastm:BinaryExpression"> 
     659                      <leftOperand xsi:type="gastm:IdentifierReference"> 
     660                        <name nameString="result"/> 
     661                      </leftOperand> 
     662                      <rightOperand xsi:type="gastm:IntegerLiteral" value="3"/> 
     663                    </condition> 
     664                    <thenBody xsi:type="gastm:ExpressionStatement"> 
     665                      <expression xsi:type="gastm:FunctionCallExpression"> 
     666                        <calledFunction xsi:type="gastm:QualifiedOverData"> 
     667                          <name nameString="TMensa"/> 
     668                          <member refersTo="//@files.0/@implementation/@fragments.1/@body.0/@declarations.0"> 
     669                            <name nameString="Info"/> 
     670                          </member> 
     671                        </calledFunction> 
     672                        <actualParams xsi:type="gastm:ActualParameterExpression"> 
     673                          <value xsi:type="gastm:StringLiteral" value="'Ha ocurrido un error inesperado borrando el archivo del disco duro'"/> 
     674                        </actualParams> 
     675                      </expression> 
     676                    </thenBody> 
     677                    <elseBody xsi:type="gastm:IfStatement"> 
     678                      <condition xsi:type="gastm:BinaryExpression"> 
     679                        <leftOperand xsi:type="gastm:IdentifierReference"> 
     680                          <name nameString="result"/> 
     681                        </leftOperand> 
     682                        <rightOperand xsi:type="gastm:IntegerLiteral" value="4"/> 
     683                      </condition> 
     684                      <thenBody xsi:type="gastm:ExpressionStatement"> 
     685                        <expression xsi:type="gastm:FunctionCallExpression"> 
     686                          <calledFunction xsi:type="gastm:QualifiedOverData"> 
     687                            <name nameString="TMensa"/> 
     688                            <member refersTo="//@files.0/@implementation/@fragments.1/@body.0/@declarations.0"> 
     689                              <name nameString="Info"/> 
     690                            </member> 
     691                          </calledFunction> 
     692                          <actualParams xsi:type="gastm:ActualParameterExpression"> 
     693                            <value xsi:type="gastm:StringLiteral" value="'Ha ocurrido un error borrando el archivo este ha sido renombrado con sufijo &quot;borrado&quot;'"/> 
     694                          </actualParams> 
     695                        </expression> 
     696                      </thenBody> 
     697                      <elseBody xsi:type="gastm:IfStatement"> 
     698                        <condition xsi:type="gastm:BinaryExpression"> 
     699                          <leftOperand xsi:type="gastm:IdentifierReference"> 
     700                            <name nameString="result"/> 
     701                          </leftOperand> 
     702                          <rightOperand xsi:type="gastm:IntegerLiteral" value="7"/> 
     703                        </condition> 
     704                        <thenBody xsi:type="gastm:ExpressionStatement"> 
     705                          <expression xsi:type="gastm:FunctionCallExpression"> 
     706                            <calledFunction xsi:type="gastm:QualifiedOverData"> 
     707                              <name nameString="TMensa"/> 
     708                              <member refersTo="//@files.0/@implementation/@fragments.1/@body.0/@declarations.0"> 
     709                                <name nameString="Info"/> 
     710                              </member> 
     711                            </calledFunction> 
     712                            <actualParams xsi:type="gastm:ActualParameterExpression"> 
     713                              <value xsi:type="gastm:StringLiteral" value="'Recibido Dataset nulo'"/> 
     714                            </actualParams> 
     715                          </expression> 
     716                        </thenBody> 
     717                        <elseBody xsi:type="gastm:IfStatement"> 
     718                          <condition xsi:type="gastm:BinaryExpression"> 
     719                            <leftOperand xsi:type="gastm:IdentifierReference"> 
     720                              <name nameString="result"/> 
     721                            </leftOperand> 
     722                            <rightOperand xsi:type="gastm:IntegerLiteral" value="8"/> 
     723                          </condition> 
     724                          <thenBody xsi:type="gastm:ExpressionStatement"> 
     725                            <expression xsi:type="gastm:FunctionCallExpression"> 
     726                              <calledFunction xsi:type="gastm:QualifiedOverData"> 
     727                                <name nameString="TMensa"/> 
     728                                <member refersTo="//@files.0/@implementation/@fragments.1/@body.0/@declarations.0"> 
     729                                  <name nameString="Info"/> 
     730                                </member> 
     731                              </calledFunction> 
     732                              <actualParams xsi:type="gastm:ActualParameterExpression"> 
     733                                <value xsi:type="gastm:StringLiteral" value="'Dataset Vacio'"/> 
     734                              </actualParams> 
     735                            </expression> 
     736                          </thenBody> 
     737                          <elseBody xsi:type="gastm:IfStatement"> 
     738                            <condition xsi:type="gastm:BinaryExpression"> 
     739                              <leftOperand xsi:type="gastm:IdentifierReference"> 
     740                                <name nameString="result"/> 
     741                              </leftOperand> 
     742                              <rightOperand xsi:type="gastm:IntegerLiteral" value="9"/> 
     743                            </condition> 
     744                            <thenBody xsi:type="gastm:ExpressionStatement"> 
     745                              <expression xsi:type="gastm:FunctionCallExpression"> 
     746                                <calledFunction xsi:type="gastm:QualifiedOverData"> 
     747                                  <name nameString="TMensa"/> 
     748                                  <member refersTo="//@files.0/@implementation/@fragments.1/@body.0/@declarations.0"> 
     749                                    <name nameString="Info"/> 
     750                                  </member> 
     751                                </calledFunction> 
     752                                <actualParams xsi:type="gastm:ActualParameterExpression"> 
     753                                  <value xsi:type="gastm:StringLiteral" value="'Dataset en estado no valido'"/> 
     754                                </actualParams> 
     755                              </expression> 
     756                            </thenBody> 
     757                            <elseBody xsi:type="gastm:ExpressionStatement"> 
     758                              <expression xsi:type="gastm:FunctionCallExpression"> 
     759                                <calledFunction xsi:type="gastm:QualifiedOverData"> 
     760                                  <name nameString="TMensa"/> 
     761                                  <member refersTo="//@files.0/@implementation/@fragments.1/@body.0/@declarations.0"> 
     762                                    <name nameString="Info"/> 
     763                                  </member> 
     764                                </calledFunction> 
     765                                <actualParams xsi:type="gastm:ActualParameterExpression"> 
     766                                  <value xsi:type="gastm:StringLiteral" value="'Error no controlado'"/> 
     767                                </actualParams> 
     768                              </expression> 
     769                            </elseBody> 
     770                          </elseBody> 
     771                        </elseBody> 
     772                      </elseBody> 
     773                    </elseBody> 
     774                  </elseBody> 
     775                </elseBody> 
     776              </elseBody> 
     777            </elseBody> 
     778          </subStatements> 
    311779        </body> 
    312780      </fragments> 
Note: See TracChangeset for help on using the changeset viewer.