summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2003-07-15 11:56:17 +0000
committerburaq <buraq@epfl.ch>2003-07-15 11:56:17 +0000
commit8b025da06474598c54300264e472a6461d7b025f (patch)
tree5624dda17026fbf7a39ed21247afa6834d8a07f2 /sources
parent1be5d460df396a10228a5fbe415371dd3430a48d (diff)
downloadscala-8b025da06474598c54300264e472a6461d7b025f.tar.gz
scala-8b025da06474598c54300264e472a6461d7b025f.tar.bz2
scala-8b025da06474598c54300264e472a6461d7b025f.zip
refactoring
Diffstat (limited to 'sources')
-rw-r--r--sources/scalac/transformer/matching/TracerInScala.java55
1 files changed, 55 insertions, 0 deletions
diff --git a/sources/scalac/transformer/matching/TracerInScala.java b/sources/scalac/transformer/matching/TracerInScala.java
new file mode 100644
index 0000000000..069964fb5b
--- /dev/null
+++ b/sources/scalac/transformer/matching/TracerInScala.java
@@ -0,0 +1,55 @@
+package scalac.transformer.matching ;
+
+import scalac.*;
+import scalac.ast.*;
+import scalac.symtab.*;
+import Tree.*;
+import scalac.util.Name;
+import scalac.util.Names;
+
+import scalac.transformer.TransMatch.Matcher ;
+
+import java.util.* ;
+
+import ch.epfl.lamp.util.Position;
+
+
+/** 2do: factor common things of LeftTracerInScala and RightTracerInScala
+ */
+public class TracerInScala extends Autom2Scala {
+
+
+ HashMap helpMap;
+
+ public TracerInScala( DetWordAutom dfa,
+ Type elementType,
+ Symbol ownerSym,
+ CodeFactory cf ) {
+ super( dfa, elementType, ownerSym, cf );
+
+ this.helpMap = new HashMap();
+
+ }
+
+ Tree refHelpVar( Symbol realVar ) {
+ Symbol hv = (Symbol)helpMap.get( realVar );
+ assert hv != null : realVar;
+ return gen.Ident(Position.NOPOS, hv);
+ }
+
+ Tree assignToHelpVar( Symbol realVar, Tree rhs ) {
+ Tree hv = refHelpVar( realVar );
+ return gen.Assign( hv, rhs );
+ }
+
+ Tree bindVar(Symbol realVar) {
+ Tree hv = refHelpVar( realVar );
+ //System.out.println("binding realVar.name "+realVar.name+" type:"+realVar.type()+" to smth");
+ realVar.setOwner( owner );
+ if( realVar.type().isSameAs( elementType ))
+ return gen.ValDef( realVar, cf.SeqList_head( hv ));
+ else
+ return gen.ValDef( realVar, hv);
+
+ }
+}