summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/matching/RightTracerInScala.java
diff options
context:
space:
mode:
authorburaq <buraq@epfl.ch>2003-07-15 10:10:41 +0000
committerburaq <buraq@epfl.ch>2003-07-15 10:10:41 +0000
commit1be5d460df396a10228a5fbe415371dd3430a48d (patch)
tree2d4327ac9e7ba604c14988f1199f7722230b4dfd /sources/scalac/transformer/matching/RightTracerInScala.java
parentc0a66221a6cfe62a4b5c8fec3e0050d8d8c9ada8 (diff)
downloadscala-1be5d460df396a10228a5fbe415371dd3430a48d.tar.gz
scala-1be5d460df396a10228a5fbe415371dd3430a48d.tar.bz2
scala-1be5d460df396a10228a5fbe415371dd3430a48d.zip
code-cleanup, refactoring, corrected multiple u...
code-cleanup, refactoring, corrected multiple use of the same symbol
Diffstat (limited to 'sources/scalac/transformer/matching/RightTracerInScala.java')
-rw-r--r--sources/scalac/transformer/matching/RightTracerInScala.java71
1 files changed, 17 insertions, 54 deletions
diff --git a/sources/scalac/transformer/matching/RightTracerInScala.java b/sources/scalac/transformer/matching/RightTracerInScala.java
index 3ae2854860..1ed0b69864 100644
--- a/sources/scalac/transformer/matching/RightTracerInScala.java
+++ b/sources/scalac/transformer/matching/RightTracerInScala.java
@@ -17,7 +17,7 @@ import scalac.util.Names ;
import ch.epfl.lamp.util.Position;
-public class RightTracerInScala extends Autom2Scala {
+public class RightTracerInScala extends TracerInScala {
//Scope scp;
//Symbol vars[];
@@ -27,6 +27,15 @@ public class RightTracerInScala extends Autom2Scala {
Matcher _m;
+ // Symbol funSym;
+
+ Symbol elemSym;
+ Symbol targetSym;
+
+ HashMap helpMap2 ;
+ Vector helpVarDefs;
+
+
/** translate right tracer to code
* @param dfa determinized left tracer
* @param left nondeterm. left tracer
@@ -43,7 +52,6 @@ public class RightTracerInScala extends Autom2Scala {
super( dfa, elementType, m.owner, cf );
this._m = m;
-
Vector seqVars = new Vector();
for( int j = 0; j < left.nstates; j++ ) {
@@ -60,7 +68,6 @@ public class RightTracerInScala extends Autom2Scala {
this.seqVars = seqVars;
this.allVars = CollectVariableTraverser.collectVars( pat );
- helpMap = new HashMap();
helpMap2 = new HashMap();
helpVarDefs = new Vector();
@@ -78,15 +85,6 @@ public class RightTracerInScala extends Autom2Scala {
initializeSyms();
}
- // Symbol funSym;
-
- Symbol elemSym;
- Symbol targetSym;
-
- HashMap helpMap ;
- HashMap helpMap2 ;
- Vector helpVarDefs;
-
void makeHelpVar( Symbol realVar ) {
makeHelpVar( realVar, false );
}
@@ -121,12 +119,6 @@ public class RightTracerInScala extends Autom2Scala {
}
- Tree refHelpVar( Symbol realVar ) {
- Symbol hv = (Symbol)helpMap.get( realVar );
- assert hv != null : realVar;
- return gen.Ident(Position.NOPOS, hv);
- }
-
Tree prependToHelpVar( Symbol realVar, Tree elem ) {
Tree hv = refHelpVar( realVar );
return gen.Assign( hv, cf.newSeqCons( elem, hv ));
@@ -139,44 +131,29 @@ public class RightTracerInScala extends Autom2Scala {
*/
}
- 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);
-
- }
-
protected void initializeSyms() {
this.funSym = newFunSym( "binder" );
- this.iterSym = new TermSymbol( //Kinds.VAL,
- pos,
+ this.iterSym = new TermSymbol( pos,
cf.fresh.newName("iter"),
funSym,
0)
.setType( cf.SeqTraceType( elementType ));
- this.stateSym = new TermSymbol( //Kinds.VAL,
- pos,
+ this.stateSym = new TermSymbol( pos,
cf.fresh.newName("q"),
funSym,
0 )
.setType( defs.INT_TYPE ) ;
- this.elemSym = new TermSymbol( //Kinds.VAL,
- pos,
+ this.elemSym = new TermSymbol( pos,
cf.fresh.newName("elem"),
funSym,
0)
.setType( elementType ) ;
- this.targetSym = new TermSymbol( //Kinds.VAL,
- pos,
+ this.targetSym = new TermSymbol( pos,
cf.fresh.newName("trgt"),
funSym,
0)
@@ -340,9 +317,6 @@ public class RightTracerInScala extends Autom2Scala {
this.helpMap2.put( key, helpMap.get( key ));
}
- // find this weird ? pattern matcher expects var. symbol for _ pattern FIXME ?!! CANNOT BE TRUE
- //Symbol obfuscvble = new TermSymbol(0, Name.fromString("ga$ga$ga$"), _m.owner, 0).setType( pat.type() );
-
am.construct( m, new CaseDef[] {
(CaseDef) cf.make.CaseDef( pat.pos,
pat,
@@ -350,7 +324,7 @@ public class RightTracerInScala extends Autom2Scala {
handleBody( helpMap2 )),
(CaseDef) cf.make.CaseDef( pat.pos,
cf.make.Ident(pat.pos, Names.WILDCARD)
- //.setSymbol( Symbol.NONE ) FIXED
+ //DON'T .setSymbol( Symbol.NONE ) !!FIXED
.setType( pat.type() ),
Tree.Empty,
gen.mkBooleanLit( pat.pos, false )) },
@@ -405,11 +379,7 @@ public class RightTracerInScala extends Autom2Scala {
for( Iterator it = vars.iterator(); it.hasNext(); ) {
Symbol var = (Symbol) it.next();
- /*Tree field = gen.Select( gen.Ident( pos, accumSym ),
- var.name ).setSymbol( var );
- */
- //Tree field = gen.Ident( pos, var );
- Tree rhs = gen.Ident( pos, elemSym ); //cf._cur( _iter() );
+ Tree rhs = gen.Ident( pos, elemSym );
stms[ j++ ] = prependToHelpVar( var , rhs);
}
@@ -437,7 +407,6 @@ public class RightTracerInScala extends Autom2Scala {
v.add( gen.DefDef( this.funSym, code_body() ) );
v.add( callFun( new Tree[] { trace, cf.Int( 0 ) } ) );
-
/*
for(Iterator it = helpMap.keySet().iterator(); it.hasNext(); ) {
// DEBUG
@@ -464,16 +433,10 @@ public class RightTracerInScala extends Autom2Scala {
}
/** return the accumulator. (same as in LeftTracerInScala)
+ * todo: move tree generation of Unit somewhere else
*/
Tree run_finished( int state ) {
- //return gen.Ident( accumSym.pos, accumSym );
return gen.Block(0, Tree.EMPTY_ARRAY).setType( defs.UNIT_TYPE );
- /* gen.Ident(0, defs.NULL); */
- /*gen.New( pos, defs.SCALA_TYPE, defs.NULL, //UNIT_CLASS,
- Type.EMPTY_ARRAY,
- Tree.EMPTY_ARRAY); */
-
-
}
Tree current() {