Skip to content

Commit ad491c9

Browse files
committed
- Rewrote traverseExp and traverseExpTopDown to take a function with 2 inputs and outputs instead of using tuples git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@22174 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
1 parent 5e5591c commit ad491c9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+5258
-5806
lines changed

Compiler/BackEnd/BackendDAECreate.mo

Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -443,27 +443,17 @@ protected
443443
HashTableExpToIndex.HashTable ht;
444444
algorithm
445445
ht := HashTableExpToIndex.emptyHashTable();
446-
(outDAE, outTree, (ht, _, _, outTimeEvents)) := DAEUtil.traverseDAE(inDAE, functionTree, transformBuiltinExpressions, (ht, 0, 0, {}));
446+
(outDAE, outTree, (_, (ht, _, _, outTimeEvents))) := DAEUtil.traverseDAE(inDAE, functionTree, Expression.traverseSubexpressionsHelper, (transformBuiltinExpression, (ht, 0, 0, {})));
447447
end processBuiltinExpressions;
448448

449-
protected function transformBuiltinExpressions "author: lochel
450-
Helper for processBuiltinExpressions"
451-
input tuple<DAE.Exp, tuple<HashTableExpToIndex.HashTable, Integer /*iDelay*/, Integer /*iSample*/, list<BackendDAE.TimeEvent>>> itpl;
452-
output tuple<DAE.Exp, tuple<HashTableExpToIndex.HashTable, Integer /*iDelay*/, Integer /*iSample*/, list<BackendDAE.TimeEvent>>> otpl;
453-
protected
454-
DAE.Exp e;
455-
tuple<HashTableExpToIndex.HashTable, Integer, Integer, list<BackendDAE.TimeEvent>> i;
456-
algorithm
457-
(e, i) := itpl;
458-
otpl := Expression.traverseExp(e, transformBuiltinExpression, i);
459-
end transformBuiltinExpressions;
460-
461449
protected function transformBuiltinExpression "author: lochel
462450
Helper for transformBuiltinExpressions"
463-
input tuple<DAE.Exp, tuple<HashTableExpToIndex.HashTable, Integer /*iDelay*/, Integer /*iSample*/, list<BackendDAE.TimeEvent>>> inTuple;
464-
output tuple<DAE.Exp, tuple<HashTableExpToIndex.HashTable, Integer /*iDelay*/, Integer /*iSample*/, list<BackendDAE.TimeEvent>>> outTuple;
451+
input DAE.Exp inExp;
452+
input tuple<HashTableExpToIndex.HashTable, Integer /*iDelay*/, Integer /*iSample*/, list<BackendDAE.TimeEvent>> inTuple;
453+
output DAE.Exp outExp;
454+
output tuple<HashTableExpToIndex.HashTable, Integer /*iDelay*/, Integer /*iSample*/, list<BackendDAE.TimeEvent>> outTuple;
465455
algorithm
466-
outTuple := matchcontinue(inTuple)
456+
(outExp,outTuple) := matchcontinue (inExp,inTuple)
467457
local
468458
DAE.Exp e, start, interval;
469459
list<DAE.Exp> es;
@@ -473,28 +463,28 @@ algorithm
473463
DAE.CallAttributes attr;
474464

475465
// delay [already in ht]
476-
case ((e as DAE.CALL(Absyn.IDENT("delay"), es, attr), (ht, iDelay, iSample, timeEvents))) equation
466+
case (e as DAE.CALL(Absyn.IDENT("delay"), es, attr), (ht, iDelay, iSample, timeEvents)) equation
477467
i = BaseHashTable.get(e, ht);
478-
then ((DAE.CALL(Absyn.IDENT("delay"), DAE.ICONST(i)::es, attr), (ht, iDelay, iSample, timeEvents)));
468+
then (DAE.CALL(Absyn.IDENT("delay"), DAE.ICONST(i)::es, attr), (ht, iDelay, iSample, timeEvents));
479469

480470
// delay [not yet in ht]
481-
case ((e as DAE.CALL(Absyn.IDENT("delay"), es, attr), (ht, iDelay, iSample, timeEvents))) equation
471+
case (e as DAE.CALL(Absyn.IDENT("delay"), es, attr), (ht, iDelay, iSample, timeEvents)) equation
482472
ht = BaseHashTable.add((e, iDelay+1), ht);
483-
then ((DAE.CALL(Absyn.IDENT("delay"), DAE.ICONST(iDelay)::es, attr), (ht, iDelay+1, iSample, timeEvents)));
473+
then (DAE.CALL(Absyn.IDENT("delay"), DAE.ICONST(iDelay)::es, attr), (ht, iDelay+1, iSample, timeEvents));
484474

485475
// sample [already in ht]
486-
case ((e as DAE.CALL(Absyn.IDENT("sample"), es, attr), (ht, iDelay, iSample, timeEvents))) equation
476+
case (e as DAE.CALL(Absyn.IDENT("sample"), es, attr), (ht, iDelay, iSample, timeEvents)) equation
487477
i = BaseHashTable.get(e, ht);
488-
then ((DAE.CALL(Absyn.IDENT("sample"), DAE.ICONST(i)::es, attr), (ht, iDelay, iSample, timeEvents)));
478+
then (DAE.CALL(Absyn.IDENT("sample"), DAE.ICONST(i)::es, attr), (ht, iDelay, iSample, timeEvents));
489479

490480
// sample [not yet in ht]
491-
case ((e as DAE.CALL(Absyn.IDENT("sample"), es as {start, interval}, attr), (ht, iDelay, iSample, timeEvents))) equation
481+
case (e as DAE.CALL(Absyn.IDENT("sample"), es as {start, interval}, attr), (ht, iDelay, iSample, timeEvents)) equation
492482
iSample = iSample+1;
493483
timeEvents = listAppend(timeEvents, {BackendDAE.SAMPLE_TIME_EVENT(iSample, start, interval)});
494484
ht = BaseHashTable.add((e, iSample), ht);
495-
then ((DAE.CALL(Absyn.IDENT("sample"), DAE.ICONST(iSample)::es, attr), (ht, iDelay, iSample, timeEvents)));
485+
then (DAE.CALL(Absyn.IDENT("sample"), DAE.ICONST(iSample)::es, attr), (ht, iDelay, iSample, timeEvents));
496486

497-
else inTuple;
487+
else (inExp,inTuple);
498488
end matchcontinue;
499489
end transformBuiltinExpression;
500490

@@ -2515,24 +2505,23 @@ algorithm
25152505
end handleAliasEquations1;
25162506

25172507
protected function replaceAliasVarTraverser
2518-
"author: Frenkel TUD 2011-03"
2519-
input tuple<BackendDAE.Var, BackendVarTransform.VariableReplacements> inTpl;
2520-
output tuple<BackendDAE.Var, BackendVarTransform.VariableReplacements> outTpl;
2508+
input BackendDAE.Var inVar;
2509+
input BackendVarTransform.VariableReplacements inRepl;
2510+
output BackendDAE.Var outVar;
2511+
output BackendVarTransform.VariableReplacements repl;
25212512
algorithm
2522-
outTpl:=
2523-
matchcontinue (inTpl)
2513+
(outVar,repl) := matchcontinue (inVar,inRepl)
25242514
local
25252515
BackendDAE.Var v, v1;
2526-
BackendVarTransform.VariableReplacements repl;
25272516
DAE.Exp e, e1;
25282517
Boolean b;
2529-
case ((v as BackendDAE.VAR(bindExp=SOME(e)), repl))
2518+
case (v as BackendDAE.VAR(bindExp=SOME(e)), repl)
25302519
equation
25312520
(e1, true) = BackendVarTransform.replaceExp(e, repl, NONE());
25322521
b = Expression.isConst(e1);
25332522
v1 = Debug.bcallret2(not b, BackendVariable.setBindExp, v, SOME(e1), v);
2534-
then ((v1, repl));
2535-
else inTpl;
2523+
then (v1, repl);
2524+
else (inVar,inRepl);
25362525
end matchcontinue;
25372526
end replaceAliasVarTraverser;
25382527

0 commit comments

Comments
 (0)