blob: c8a64ec7887ff2a50c8e8b58477cacd1fac7b1ff (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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.FIRSTPOS, 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);
}
}
|