diff options
author | buraq <buraq@epfl.ch> | 2003-07-15 11:56:17 +0000 |
---|---|---|
committer | buraq <buraq@epfl.ch> | 2003-07-15 11:56:17 +0000 |
commit | 8b025da06474598c54300264e472a6461d7b025f (patch) | |
tree | 5624dda17026fbf7a39ed21247afa6834d8a07f2 /sources | |
parent | 1be5d460df396a10228a5fbe415371dd3430a48d (diff) | |
download | scala-8b025da06474598c54300264e472a6461d7b025f.tar.gz scala-8b025da06474598c54300264e472a6461d7b025f.tar.bz2 scala-8b025da06474598c54300264e472a6461d7b025f.zip |
refactoring
Diffstat (limited to 'sources')
-rw-r--r-- | sources/scalac/transformer/matching/TracerInScala.java | 55 |
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); + + } +} |