From 18c5ba758aac024bedc3ac140fcc90cd3f071e85 Mon Sep 17 00:00:00 2001 From: Kevin Lano Date: Mon, 29 Jan 2024 15:58:02 +0000 Subject: [PATCH] Improved COBOL, PASCAL abstraction --- cg/cobol2UML.cstl | 60 ++++++++---- cg/pascal2UML.cstl | 122 ++++++++++++++++++----- cg/tl.cstl | 237 ++++++++++----------------------------------- 3 files changed, 194 insertions(+), 225 deletions(-) diff --git a/cg/cobol2UML.cstl b/cg/cobol2UML.cstl index 7239d33e..563c31d7 100644 --- a/cg/cobol2UML.cstl +++ b/cg/cobol2UML.cstl @@ -2721,10 +2721,15 @@ RETURN _1 RECORD _2 _3 _4 END-RETURN |--> _2 returnInto, _3 atEndPhrase, RETURN _1 RECORD _2 |--> _1_Position := _1_Position + 1;\n _1_Record := _1[_1_Position]; _2 := _1_Record ;\n _2 returnInto RETURN _1 _2 |--> _1_Position := _1_Position + 1;\n _1_Record := _1[_1_Position]; _2 := _1_Record ;\n _2 returnInto +RETURN _1 _2 _3 |--> if _1_Position < _1->size()\n then (_1_Position := _1_Position + 1 ;\n _1_Record := _1[_1_Position] ;\n_3 skip)\n else (_2 skip);\n _2 atEndPhrase, _3 notAtEndPhrase + +RETURN _1 _2 |--> if _1_Position < _1->size()\n then _1_Position := _1_Position + 1 ;\n _1_Record := _1[_1_Position]\n else (_2 skip);\n _2 atEndPhrase + RETURN _1 RECORD |--> _1_Position := _1_Position + 1;\n _1_Record := _1[_1_Position];\n RETURN _1 |--> _1_Position := _1_Position + 1 ;\n _1_Record := _1[_1_Position];\n + returnInto:: INTO _1 |-->_1 @@ -2846,9 +2851,21 @@ _1 |-->_1 sortStatement:: SORT _1 _2 _3 _4 |--> _1 := _3 ;\n _1 := _1->sortedBy( _sortvar | _2) ;\n _4 := _1 ;\n _2 sortOnKeyClause, _3 sortUsing, _4 sortGivingPhrase +SORT _1 _2 _3 _4 _5 |--> _1 := _4 ;\n _1 := _1->sortedBy( _sortvar | Sequence{_2, _3}) ;\n _5 := _1 ;\n _2 sortOnKeyClause, _3 sortOnKeyClause, _4 sortUsing, _5 sortGivingPhrase + +SORT _1 _2 _3 _4 _5 _6 |--> _1 := _5 ;\n _1 := _1->sortedBy( _sortvar | Sequence{_2, _3, _4}) ;\n _6 := _1 ;\n _2 sortOnKeyClause, _3 sortOnKeyClause, _4 sortOnKeyClause, _5 sortUsing, _6 sortGivingPhrase + SORT _1 _2 _3 _4 |--> self._3_Call() ;\n _1 := _1->sortedBy( _sortvar | _2) ;\n _4 := _1 ;\n _2 sortOnKeyClause, _3 sortInputProcedurePhrase, _4 sortGivingPhrase + +SORT _1 _2 _3 _4 _5 |--> self._4_Call() ;\n _1 := _1->sortedBy( _sortvar | Sequence{_2, _3}) ;\n _5 := _1 ;\n _2 sortOnKeyClause, _3 sortOnKeyClause, _4 sortInputProcedurePhrase, _5 sortGivingPhrase + +SORT _1 _2 _3 _4 _5 _6 |--> self._5_Call() ;\n _1 := _1->sortedBy( _sortvar | Sequence{_2, _3, _4}) ;\n _6 := _1 ;\n _2 sortOnKeyClause, _3 sortOnKeyClause, _4 sortOnKeyClause, _5 sortInputProcedurePhrase, _6 sortGivingPhrase +SORT _1 _2 _3 _4 |--> _1 := _3 ;\n _1 := _1->sortedBy( _sortvar | _2) ;\n self._4_Call() ;\n _2 sortOnKeyClause, _3 sortUsing, _4 sortOutputProcedurePhrase + + + sortOnKeyClause:: ON ASCENDING KEY _1 _* |-->_sortvar.subrange(_1`startPosition, _1`endPosition) ON ASCENDING KEY _1 |-->_sortvar.subrange(_1`startPosition, _1`endPosition) @@ -2858,14 +2875,15 @@ ON ASCENDING _1 _* |-->_sortvar.subrange(_1`startPosition, _1`endPosition) ON ASCENDING _1 |-->_sortvar.subrange(_1`startPosition, _1`endPosition) ASCENDING _1 _* |-->_sortvar.subrange(_1`startPosition, _1`endPosition) ASCENDING _1 |-->_sortvar.subrange(_1`startPosition, _1`endPosition) -ON DESCENDING KEY _1 _* |-->-_sortvar -ON DESCENDING KEY _1 |-->-_sortvar -DESCENDING KEY _1 _* |-->-_sortvar -DESCENDING KEY _1 |-->-_sortvar -ON DESCENDING _1 _* |-->-_sortvar -ON DESCENDING _1 |-->-_sortvar -DESCENDING _1 _* |-->-_sortvar -DESCENDING _1 |-->-_sortvar +ON DESCENDING KEY _1 _* |-->-(_sortvar.subrange(_1`startPosition, _1`endPosition)->toReal()) +ON DESCENDING KEY _1 |-->-(_sortvar.subrange(_1`startPosition, _1`endPosition)->toReal()) +DESCENDING KEY _1 _* |-->-(_sortvar.subrange(_1`startPosition, _1`endPosition)->toReal()) +DESCENDING KEY _1 |-->-(_sortvar.subrange(_1`startPosition, _1`endPosition)->toReal()) +ON DESCENDING _1 _* |-->-(_sortvar.subrange(_1`startPosition, _1`endPosition)->toReal()) +ON DESCENDING _1 |-->-(_sortvar.subrange(_1`startPosition, _1`endPosition)->toReal()) +DESCENDING _1 _* |-->-(_sortvar.subrange(_1`startPosition, _1`endPosition)->toReal()) +DESCENDING _1 |-->-(_sortvar.subrange(_1`startPosition, _1`endPosition)->toReal()) + sortCollatingSequencePhrase:: COLLATING SEQUENCE IS _* |--> @@ -2899,10 +2917,10 @@ USING _1 |-->_1 USING _1 _* |-->_1 sortOutputProcedurePhrase:: -OUTPUT PROCEDURE IS _1 _2 |--> -OUTPUT PROCEDURE IS _1 |--> -OUTPUT PROCEDURE _1 _2 |--> -OUTPUT PROCEDURE _1 |--> +OUTPUT PROCEDURE IS _1 _2 |-->_1 +OUTPUT PROCEDURE IS _1 |-->_1 +OUTPUT PROCEDURE _1 _2 |-->_1 +OUTPUT PROCEDURE _1 |-->_1 sortOutputThrough:: THROUGH _1 |--> @@ -3008,7 +3026,7 @@ STOP _1 |--> OclProcess.exit(1); stringStatement:: -STRING _* _1 END-STRING |--> _1 stringIntoPhrase +STRING _* _1 END-STRING |--> _1 := _*`sum ;\n _1 stringIntoPhrase STRING _* _1 |--> _1 := _*`sum ;\n _1 stringIntoPhrase @@ -3202,15 +3220,21 @@ TALLYING _1 |--> _1 := _unstringTally writeStatement:: -WRITE _1 _2 END-WRITE |--> _1`ownerFile_Position := _1`ownerFile_Position + 1 ;\n if _1`ownerFile_Position >= _1`ownerFile->size() then _1`ownerFile := _1`ownerFile->append(_1) else _1`ownerFile[_1`ownerFile_Position] := _1 ;\n _1`ownerFile := _1`ownerFile->concatenate(Integer.subrange(1,_2`advancingAfterIncrement)->collect(" "));\n _1`ownerFile_Position := _1`ownerFile_Position + _2`advancingAfterIncrement ;\n _2 writeAdvancingPhrase +WRITE _1 _2 END-WRITE |--> _1`ownerFile_Position := _1`ownerFile_Position + 1 ;\n if _1`ownerFile_Position >= _1`ownerFile->size() then _1`ownerFile := _1`ownerFile->append(_1) else (_1`ownerFile[_1`ownerFile_Position] := _1) ;\n _1`ownerFile := _1`ownerFile->concatenate(Integer.subrange(1,_2`advancingAfterIncrement)->collect(" "));\n _1`ownerFile_Position := _1`ownerFile_Position + _2`advancingAfterIncrement ;\n _2 writeAdvancingPhrase -WRITE _1 _2 |--> _1`ownerFile_Position := _1`ownerFile_Position + 1 ;\n if _1`ownerFile_Position >= _1`ownerFile->size() then _1`ownerFile := _1`ownerFile->append(_1) else _1`ownerFile[_1`ownerFile_Position] := _1 ;\n _1`ownerFile := _1`ownerFile->concatenate(Integer.subrange(1,_2`advancingAfterIncrement)->collect(" "));\n _1`ownerFile_Position := _1`ownerFile_Position + _2`advancingAfterIncrement ;\n _2 writeAdvancingPhrase +WRITE _1 _2 |--> _1`ownerFile_Position := _1`ownerFile_Position + 1 ;\n if _1`ownerFile_Position >= _1`ownerFile->size() then _1`ownerFile := _1`ownerFile->append(_1) else (_1`ownerFile[_1`ownerFile_Position] := _1) ;\n _1`ownerFile := _1`ownerFile->concatenate(Integer.subrange(1,_2`advancingAfterIncrement)->collect(" "));\n _1`ownerFile_Position := _1`ownerFile_Position + _2`advancingAfterIncrement ;\n _2 writeAdvancingPhrase -WRITE _1 END-WRITE |--> _1`ownerFile_Position := _1`ownerFile_Position + 1 ;\n if _1`ownerFile_Position >= _1`ownerFile->size() then _1`ownerFile := _1`ownerFile->append(_1) else _1`ownerFile[_1`ownerFile_Position] := _1 ;\n +WRITE _1 END-WRITE |--> _1`ownerFile_Position := _1`ownerFile_Position + 1 ;\n if _1`ownerFile_Position >= _1`ownerFile->size() then _1`ownerFile := _1`ownerFile->append(_1) else (_1`ownerFile[_1`ownerFile_Position] := _1) ;\n -WRITE _1 |--> _1`ownerFile_Position := _1`ownerFile_Position + 1 ;\n if _1`ownerFile_Position >= _1`ownerFile->size() then _1`ownerFile := _1`ownerFile->append(_1) else _1`ownerFile[_1`ownerFile_Position] := _1 ;\n self.initialise_1`ownerFile_Index();\n _1`isIndexed true +WRITE _1 |--> _1`ownerFile_Position := _1`ownerFile_Position + 1 ;\n if _1`ownerFile_Position >= _1`ownerFile->size() then _1`ownerFile := _1`ownerFile->append(_1) else (_1`ownerFile[_1`ownerFile_Position] := _1) ;\n self.initialise_1`ownerFile_Index();\n _1`isIndexed true -WRITE _1 |--> _1`ownerFile_Position := _1`ownerFile_Position + 1 ;\n if _1`ownerFile_Position >= _1`ownerFile->size() then _1`ownerFile := _1`ownerFile->append(_1) else _1`ownerFile[_1`ownerFile_Position] := _1 ;\n +WRITE _1 |--> _1`ownerFile_Position := _1`ownerFile_Position + 1 ;\n (if _1`ownerFile_Position >= _1`ownerFile->size() then _1`ownerFile := _1`ownerFile->append(_1) else _1`ownerFile[_1`ownerFile_Position] := _1) ;\n + +WRITE _1 _2 |--> _1`ownerFile_Position := _1`ownerFile_Position + 1 ;\n (if _1`ownerFile_Position >= _1`ownerFile->size()\n then _1`ownerFile := _1`ownerFile->append(_2)\n else _1`ownerFile[_1`ownerFile_Position] := _2) ;\n _2 writeFromPhrase + + +writeFromPhrase:: +FROM _1 |-->_1 writeAdvancingPhrase:: diff --git a/cg/pascal2UML.cstl b/cg/pascal2UML.cstl index fb86402d..f3a1cc60 100644 --- a/cg/pascal2UML.cstl +++ b/cg/pascal2UML.cstl @@ -30,6 +30,11 @@ identifier:: MAXINT |-->(2->pow(31) - 1)->oclAsType(int) MaxInt |-->(2->pow(31) - 1)->oclAsType(int) maxint |-->(2->pow(31) - 1)->oclAsType(int) + +PI |-->MathLib.piValue() +Pi |-->MathLib.piValue() +pi |-->MathLib.piValue() + _1 |-->_1 @@ -159,6 +164,8 @@ _1 DownTo _2 |-->_1`ocltype _1 Downto _2 |-->_1`ocltype _1 downto _2 |-->_1`ocltype +_1 [ _2 ] |-->OclAny + _1 |-->int _1 unsignedInteger _1 |-->double _1 unsignedReal @ _1 |-->Ref @@ -241,6 +248,8 @@ ord ( _1 ) |-->int succ ( _1 ) |-->_1`ocltype pred ( _1 ) |-->_1`ocltype +random ( _1 ) |-->int + _1 ( _2 ) |-->OclAny @@ -269,7 +278,7 @@ typeDefns:: _1 = _2 |--> _2 functionType _1 Function, _1`initValue _2`functInit _1 = _2 |--> _2`isRecordType true _1 Entity _1 = _2 |--> _2`isSetType true _1 Set -_1 = _2 |--> _2`isArrayType true _1 Map +_1 = _2 |--> _2`isArrayType true _1 Map, _1`initValue _2`typInit _1 = _2 |--> _2`isFileType true _1 File _1 = _2 |--> _2`isScalarType true _2`scalarLiterals with _1 @@ -603,12 +612,24 @@ String |-->String Boolean |-->boolean Integer |-->int Real |-->double +ArbFloat |-->double + char |-->String boolean |-->boolean integer |-->int real |-->double string |-->String -word |-->long + +shortInt |-->int +byte |-->int +smallInt |-->int +word |-->int +longInt |-->int +longint |-->int +longWord |-->int +int64 |-->long +qWord |-->long + _1 |-->_1 @@ -661,8 +682,8 @@ _1 : boolean |-->\n attribute _1 : boolean := false; _1 boolean, _1`typ _1 : _2 |-->\n attribute _1 : _2 := Set{}; _2`isSetType true _1 Set, _1`typName _2 _1 : _2 |-->\n attribute _1 : _2 := Set{}; _2 Set _1 Set, _1`typName _2 -_1 : _2 |-->\n attribute _1 : _2 := Map{}; _2 Map _1 Map, _1`typName _2 -_1 : _2 |-->\n attribute _1 : _2 := _2`typInit; _2`isArrayType true _1 Map, _1`typName _2 +_1 : _2 |-->\n attribute _1 : _2 := _2`initValue; _2 Map _1 Map, _1`typName _2 +_1 : _2 |-->\n attribute _1 : _2 := _2`typInit; _2`isArrayType true _1 Map, _1`typName _2, _2`initValue _2`typInit _1 : _2 |-->\n attribute _1 : _2 := _2`functInit; _2`isFunctionType true _1 Function, _1`typName _2 _1 : _2 |-->\n attribute _1 : _2 := _2`initValue; _2 Function _1 Function, _1`typName _2 @@ -762,7 +783,10 @@ _1 : real |-->\n var _1 : double := 0.0; _1 double, _1`typName double _1 : boolean |-->\n var _1 : boolean := false; _1 boolean, _1`typName boolean _1 : _2 |-->\n var _1 : _2 := Set{}; _2 Set _1 Set, _1`typName _2 -_1 : _2 |-->\n var _1 : _2 := Map{}; _2 Map _1 Map, _1`typName _2 + +_1 : _2 |-->\n var _1 : _2 := _2`initValue; _2 Map _1 Map, _1`typName _2 +_1 : _2 |-->\n var _1 : _2 := _2`typInit; _2`isArrayType true _1 Map, _1`typName _2, _2`initValue _2`typInit + _1 : _2 |-->\n var _1 : _2; _2 Function _1 Function, _1`typName _2 _1 : _2 |-->\n var _1 : _2 := _2.new_2(); _2 Entity _1 Entity, _1`typName _2 _1 : _2 |-->\n var _1 : _2; _2`isPointerType true, _2`pointedToType Entity _1 Ref, _1`typName _2, _1`isObjectPointer true, _1`referredType _2`pointedToType @@ -775,17 +799,17 @@ localVarDeclns:: _* |-->_*`localVarDeclar localVarDeclar:: -, |-->; +, |--> _1 |-->\n var _1 : String := ""; _90 String _1 String, _1`typName String _1 |-->\n var _1 : int := 0; _90 int _1 int, _1`typName int _1 |-->\n var _1 : double := 0.0; _90 double _1 double, _1`typName double _1 |-->\n var _1 : boolean := false; _90 boolean _1 boolean, _1`typName boolean -_1 |-->\n var _1 : _90 := Set{} _90 Set _1 Set, _1`typName Set -_1 |-->\n var _1 : _90 := Map{} _90 Map _1 Map, _1`typName Map -_1 |-->\n var _1 : _90 _90 Function _1 Function, _1`typName Function -_1 |-->\n var _1 : _90 := _90.new_90() _90 Entity _1 Entity, _1`typName _90 -_1 |-->\n var _1 : _90 _1 _90, _1`typName _90 +_1 |-->\n var _1 : _90 := Set{}; _90 Set _1 Set, _1`typName Set +_1 |-->\n var _1 : _90 := Map{}; _90 Map _1 Map, _1`typName Map +_1 |-->\n var _1 : _90; _90 Function _1 Function, _1`typName Function +_1 |-->\n var _1 : _90 := _90.new_90(); _90 Entity _1 Entity, _1`typName _90 +_1 |-->\n var _1 : _90; _1 _90, _1`typName _90 @@ -961,6 +985,15 @@ new ( _1 ) |-->\n _1 := _1`typName{1} dispose ( _1 ) |-->\n execute (!_1)->isDeleted(); _1 := null _1`isObjectPointer true dispose ( _1 ) |-->\n _1 := null +inc ( _1 ) |-->\n _1`first := _1`first + _1`last _1 multiple +dec ( _1 ) |-->\n _1`first := _1`first - _1`last _1 multiple + +inc ( _1 ) |-->\n _1 := _1 + 1 +dec ( _1 ) |-->\n _1 := _1 - 1 + +randomize |-->\n var _random : OclRandom := OclRandom.newOclRandom() +randomize ( _1 ) |-->\n var _random : OclRandom := OclRandom.newOclRandom_Seed(_1) + _1 ( _2 ) |-->\n _1(_2) @@ -980,14 +1013,14 @@ _1 |-->\n _1 := input.readLine() writeStatement:: -_1 |-->\n output.print("" + _1`first) -_1 _* |-->\n _1`first.write("" _*`writeArguments) _1`ocltype File -_1 _* |-->\n output.print("" _1`writeArguments_*`writeArguments) +_1 |-->\n output.print("" + _1`writeArguments) +_1 _* |-->\n _1.write("" _*`writeArguments) _1`ocltype File +_1 _* |-->\n output.print("" + _1`writeArguments_*`writeArguments) writelnStatement:: -_1 |-->\n execute ("" + _1)->display() +_1 |-->\n execute ("" + _1`writeArguments)->display() output _* |-->\n execute ("" _*`writeArguments)->display() @@ -1001,11 +1034,11 @@ writeArguments:: _1 _2 _3 |--> StringLib.format("%_2._3f", Sequence{_1}) _1`ocltype double _1 _2 _3 |--> StringLib.format("%_2._3d", Sequence{_1}) _1`ocltype int -_1 _2 _3 |--> StringLib.format("%_2._3s", Sequence{_1}) +_1 _2 _3 |--> StringLib.format("%_2._3s", Sequence{"" + (_1)}) _1 _2 |--> StringLib.format("%_2f", Sequence{_1}) _1`ocltype double _1 _2 |--> StringLib.format("%_2d", Sequence{_1}) _1`ocltype int -_1 _2 |--> StringLib.format("%_2s", Sequence{_1}) +_1 _2 |--> StringLib.format("%_2s", Sequence{"" + (_1)}) _1 |--> _1 @@ -1081,15 +1114,15 @@ _1 |-->_1 whileStatement:: -WHILE _1 DO _2 |-->\n while _1 do _2 -While _1 Do _2 |-->\n while _1 do _2 -while _1 do _2 |-->\n while _1 do _2 +WHILE _1 DO _2 |-->\n while _1 do (_2) +While _1 Do _2 |-->\n while _1 do (_2) +while _1 do _2 |-->\n while _1 do (_2) repeatStatement:: -REPEAT _1 UNTIL _2 |-->\n _1;\n while not(_2) do _1 -Repeat _1 Until _2 |-->\n _1;\n while not(_2) do _1 -repeat _1 until _2 |-->\n _1;\n while not(_2) do _1 +REPEAT _1 UNTIL _2 |-->\n _1;\n while not(_2) do (_1) +Repeat _1 Until _2 |-->\n _1;\n while not(_2) do (_1) +repeat _1 until _2 |-->\n _1;\n while not(_2) do (_1) forStatement:: @@ -1341,6 +1374,7 @@ _1 |-->_1 functionDesignator:: sin ( _1 ) |-->(_1)->sin() cos ( _1 ) |-->(_1)->cos() +tan ( _1 ) |-->(_1)->tan() odd ( _1 ) |-->((_1 mod 2) = 1) @@ -1374,6 +1408,8 @@ pred ( _1 ) |-->_1->pred() eof ( _1 ) |-->_1.getEof() eoln ( _1 ) |-->(_1_buffer->char2byte() = 10) +random ( _1 ) |-->_random.nextInt(_1) + _1 ( _2 ) |-->_1_2`cascadedApply _1 Function _1 ( _2 ) |-->_1_operation(_2) @@ -1463,20 +1499,52 @@ function _1 |-->_1 procedure _1 |-->_1 _1 |-->_1`valueParameterGroup + parameterGroup:: +_1 : _2 |-->_1`varParsList _1 multiple _95 _2 + _1 : _2 |-->_1 : _2 _2 Function _1 Function, _1`typName _2 _1 : _2 |-->_1 : _2 _1 _2, _1`typName _2 _1 |-->_1 valueParameterGroup:: +_1 : _2 |-->_1`valueParsList _1 multiple _95 _2 + _1 : _2 |-->_1 : _2 _2 Function _1 Function, _1`typName _2 _1 : _2 |-->_1_copy : _2 _2 Map _1 Map, _1`typName _2 +_1 : _2 |-->_1_copy : _2 _2 Entity _1 Entity, _1`typName _2 _1 : _2 |-->_1 : _2 _1 _2, _1`typName _2 _1 |-->_1 +valueParsList:: +_* |-->_*`valueParsPar + +valueParsPar:: +, |-->, +_1 |-->_1 : _95 _95 Set _1 Set, _1`typName Set +_1 |-->_1_copy : _95 _95 Map _1 Map, _1`typName Map +_1 |-->_1 : _95 _95 Function _1 Function, _1`typName Function +_1 |-->_1_copy : _95 _95 Entity _1 Entity, _1`typName _95 + +_1 |-->_1 : _95 _1 _95, _1`typName _95 + + +varParsList:: +_* |-->_*`varParsPar + +varParsPar:: +, |-->, +_1 |-->_1 : _95 _95 Set _1 Set, _1`typName Set +_1 |-->_1 : _95 _95 Map _1 Map, _1`typName Map +_1 |-->_1 : _95 _95 Function _1 Function, _1`typName Function +_1 |-->_1 : _95 _95 Entity _1 Entity, _1`typName _95 + +_1 |-->_1 : _95 _1 _95, _1`typName _95 + + parsToFunctionDomain:: ( _1 ) |-->_1`parsToFunctionDomain ( _* ) |-->_*`parsToFunctionDomain @@ -1486,6 +1554,7 @@ procedure _1 |-->_1`parFunctionDomains ; |--> _1 |-->_1`parFunctionDomains + parFunctionDomains:: ; |--> _1 : _2 |-->Function(_2, @@ -1544,11 +1613,18 @@ _1 |-->_1`valParsDecs parsDecs:: ; |-->, + +_1 : _2 |-->_1`varParsList _1 multiple _95 _2 + _1 : _2 |-->_1 : _2 _1 |-->_1 + valParsDecs:: ; |-->, + +_1 : _2 |-->_1`valueParsList _1 multiple _95 _2 + _1 : _2 |-->_1_copy : _2 _2 Map _1 : _2 |-->_1_copy : _2 _2 Entity _1 : _2 |-->_1 : _2 diff --git a/cg/tl.cstl b/cg/tl.cstl index a27feacf..e5542f30 100644 --- a/cg/tl.cstl +++ b/cg/tl.cstl @@ -1,3 +1,19 @@ +unsignedNumber:: +_1 |-->_1 + +expression:: +_1 |-->_1 + +additiveoperator:: +_1 |-->_1 + +elementList:: +_* |-->_* +_1 |-->_1 + +element:: +_1 |-->_1 + @@ -15,209 +31,62 @@ -nestedTfunc71:: -Set |-->newSet -Sequence |-->newList -_* |-->newSet - -seq2ruleset141:: -_* |-->_*`seq2subruleset140 - -OclUnaryExpression:: -_1 _2 ( ) |-->_2`nestedTfunc68 ( _1 ) -_1 _2 |-->_1`func67 _2 - -seq2subruleset140:: -_1 _2 _3 |-->_1 -_0 |-->_0 +identifier:: +_1 |-->_1 -OclOperation:: -operation _2 ( ) : void pre: true post: true activity: _12 |-->this . _2 = function ( ) { _12 } ; -operation _2 ( _* ) : void pre: true post: true activity: _13 |-->this . _2 = function ( _*`seq2ruleset141 ) { _13 } ; -query _2 ( ) : _6 pre: true post: true activity: _12 |-->this . _2 = function ( ) { _12 } ; -query _2 ( _* ) : _7 pre: true post: true activity: _13 |-->this . _2 = function ( _*`seq2ruleset115 ) { _13 } ; +signedFactor:: ++ _2 |-->_2 +- _2 |-->- _2 +_1 |-->_1 -seq3ruleset151:: -; |-->, -literal _2 |-->_2 : _2`nestedTfunc150 -_0 |-->_0 +set_:: +[ _* ] |-->Set { _*`seq2ruleset26 } -OclType:: -void |-->Null -OclAny |-->Object -int |-->Number -double |-->Number -long |-->Number -boolean |-->Boolean -String |-->String -Set ( _3 ) |-->Object -Sequence ( _3 ) |-->Object -_1 |-->Object _1 Class -Function ( _3 , _5 ) |-->Function -Map ( _3 , _5 ) |-->Map -_* |-->Number - -nestedTfunc150:: -_1 |-->'_1' - -nestedSfunc64:: -this |-->self -_1 |-->_1 -_* |-->self +seq2ruleset26:: +_* |-->_*`seq2subruleset25 -seq3subruleset75:: -_* |-->( _*`seq3ruleset74 ) +simpleExpression:: +_1 _2 _3 |-->_1 _2 _3 +_1 |-->_1 -seq3subruleset77:: -_* |-->_*`seq3ruleset76 +unsignedInteger:: +_1 |-->_1 -OclClass:: -class _2 { } |-->function _2 ( ) { } -class _2 { _4 } |-->function _2 ( ) { _4`seq3subruleset147 } +bool_:: +_1 |-->_1 -seq3subruleset147:: -_* |-->_*`seq3ruleset146 +nestedSfunc16:: +nil |-->null +_1 |-->_1 +_* |-->null -OclCollectionExpression:: -Set { _3 } |-->newSet _3`seq3subruleset73 -Sequence { _3 } |-->newList _3`seq3subruleset75 -_1 { } |-->_1`nestedTfunc71 ( ) +variable:: +_1 [ _3 ] |-->_1 ->at ( "" + _3 ) +_1 |-->_1 -seq3ruleset65:: +seq2subruleset25:: _1 |-->_1 _0 |-->_0 -nestedTfunc68:: -->toLowerCase |-->toLowerCase -->toUpperCase |-->toUpperCase -->front |-->front -->tail |-->tail -->first |-->first -->last |-->last -_* |-->toLowerCase - -seq2ruleset115:: -_* |-->_*`seq2subruleset114 - -nestedTfunc69:: -->including |-->including -->union |-->union -->intersection |-->intersection -->excludesAll |-->excludesAll -->excludes |-->excludes -->includesAll |-->includesAll -->indexOf |-->indexOf -->lastIndexOf |-->lastIndexOf -->append |-->append -->prepend |-->prepend -->pow |-->pow -_* |-->including - -seq3subruleset73:: -_* |-->( _*`seq3ruleset72 ) - -seq3ruleset146:: -; |--> -_1 |-->_1 -_0 |-->_0 - -OclBasicExpression:: -null |-->NULL -this |-->self -_1 . _3 ( ) |-->_1 . _3 ( ) -_1 [ _3 ] |-->_1 [ _3 - 1 ] -_1 . _3 ( _5 ) |-->_1 . _3 _5`seq3subruleset66 -_1 . _3 |-->_1 . _3 -_1 |-->_1 _1 Integer -_1 |-->_1 _1 Real -_1 |-->_1 _1 Boolean -_1 |-->_1 _1 String -_1 |-->_1 -_* |-->self - -OclBinaryExpression:: -_1 _2 ( _4 ) |-->_2`nestedTfunc69 ( _1 , _4 ) -_1 <= _3 |-->_1 <= _3 -_1 mod _3 |-->_1 % _3 -_1 or _3 |-->_1 || _3 -_1 & _3 |-->_1 && _3 +term:: +_1 div _3 |-->_1 div _3 +_1 mod _3 |-->_1 mod _3 +_1 and _3 |-->_1 & _3 _1 * _3 |-->_1 * _3 -_1 + _3 |-->_1 + _3 -_1 - _3 |-->_1 - _3 -_1 /= _3 |-->_1 != _3 -_1 / _3 |-->_1 / _3 -_1 div _3 |-->( int ) ( _1 / _3 ) -_1 <>= _3 |-->_1 == _3 -_1 < _3 |-->_1 < _3 -_1 = _3 |-->_1 == _3 -_1 > _3 |-->_1 > _3 -_1 >= _3 |-->_1 >= _3 - -seq3ruleset72:: _1 |-->_1 -_0 |-->_0 -seq3ruleset74:: +factor:: +( _2 ) |-->( _2 ) +not _2 |-->not _2 _1 |-->_1 -_0 |-->_0 -nestedSfunc70:: -int |-->Number -double |-->Number -long |-->Number -boolean |-->Boolean -_* |-->Number - -seq2subruleset114:: -_1 _2 _3 |-->_1 -_0 |-->_0 - -OclConditionalExpression:: -if _2 then _4 else _6 endif |-->( _2 ) ? _4 : _6 - -seq3subruleset66:: -_* |-->( _*`seq3ruleset65 ) +unsignedReal:: +_1 |-->_1 -func67:: -not |-->! +unsignedConstant:: +nil |-->null _1 |-->_1 -_* |-->- - -seq3ruleset76:: -; |--> -_1 := _3 |-->_1 = _3 ; -_0 |-->_0 - -seq3subruleset152:: -_* |-->{ _*`seq3ruleset151 } - -OclAttribute:: -attribute _2 : double |-->this . _2 = 0.0 ; -attribute _2 : String |-->this . _2 = "" ; -attribute _2 : _4 |-->this . _2 = 0 ; - -OclEnumeration:: -enumeration _2 { _4 } |-->const _2 = _4`seq3subruleset152 - -OclStatement:: -var _2 : Map ( OclAny , OclAny ) |-->let _2 = { } ; -var _2 : double |-->let _2 = 0.0 ; -var _2 : boolean |-->let _2 = false ; -var _2 : String |-->let _2 = "" ; -var _2 : Sequence |-->let _2 = [ elementList ] ; -var _2 : Set |-->let _2 = [ elementList ] ; -var _2 : OclAny |-->let _2 = { } ; -( _2 ) |-->{ _2`seq3subruleset77 } -return _2 |-->return _2 ; -call _2 |-->_2 ; -var _2 : _4 |-->let _2 = 0 ; _4 Integer -while _2 do _4 |-->while ( _2 ) { _4 } -_1 := _3 |-->_1 = _3 ; -if _2 then _4 else _6 |-->if ( _2 ) { _4 } else { _6 } -for _2 : _4 do _6 |-->for ( var _2 of _4 ) { _6 } -break |-->break ; -continue |-->continue ; -return |-->return ; +_* |-->null