aa
com.cliffc.aa.HM.HM2 Class Reference
Collaboration diagram for com.cliffc.aa.HM.HM2:
[legend]

Classes

class  Apply
 
class  Con
 
class  HMType
 
class  HMVar
 
class  Ident
 
class  Lambda
 
class  Let
 
class  Oper
 
class  Syntax
 

Static Public Member Functions

static HMType hm (Syntax prog)
 

Static Package Functions

static void reset ()
 

Static Package Attributes

static final HashMap< String, HMTypeENV = new HashMap<>()
 

Detailed Description

Definition at line 67 of file HM2.java.

Member Function Documentation

◆ hm()

static HMType com.cliffc.aa.HM.HM2.hm ( Syntax  prog)
static

Definition at line 70 of file HM2.java.

70  {
71  // Simple types
72  HMVar bool = new HMVar(TypeInt.BOOL);
73  HMVar int64 = new HMVar(TypeInt.INT64);
74  HMVar flt64 = new HMVar(TypeFlt.FLT64);
75  HMVar strp = new HMVar(TypeMemPtr.STRPTR);
76 
77  // Primitives
78  HMVar var1 = new HMVar();
79  HMVar var2 = new HMVar();
80  ENV.put("pair",Oper.fun(var1, Oper.fun(var2, new Oper("pair",var1,var2))));
81 
82  HMVar var3 = new HMVar();
83  ENV.put("if/else",Oper.fun(bool,Oper.fun(var3,Oper.fun(var3,var3))));
84 
85  ENV.put("dec",Oper.fun(int64,int64));
86  ENV.put("*",Oper.fun(int64,Oper.fun(int64,int64)));
87  ENV.put("==0",Oper.fun(int64,bool));
88 
89  // Print a string; int->str
90  ENV.put("str",Oper.fun(int64,strp));
91  // Factor
92  ENV.put("factor",Oper.fun(flt64,new Oper("pair",flt64,flt64)));
93 
94 
95  // Prep for SSA: pre-gather all the (unique) ids
96  prog.get_ids();
97 
98  return prog.hm(new HashSet<>());
99  }

References com.cliffc.aa.type.TypeInt.BOOL, com.cliffc.aa.HM.HM2.ENV, com.cliffc.aa.type.TypeFlt.FLT64, com.cliffc.aa.HM.HM2.Oper.fun(), com.cliffc.aa.HM.HM2.Syntax.get_ids(), com.cliffc.aa.HM.HM2.Syntax.hm(), com.cliffc.aa.type.TypeInt.INT64, and com.cliffc.aa.type.TypeMemPtr.STRPTR.

Referenced by com.cliffc.aa.HM.TestHM2.test00(), com.cliffc.aa.HM.TestHM2.test01(), com.cliffc.aa.HM.TestHM2.test02(), com.cliffc.aa.HM.TestHM2.test03(), com.cliffc.aa.HM.TestHM2.test04(), com.cliffc.aa.HM.TestHM2.test05(), com.cliffc.aa.HM.TestHM2.test06(), com.cliffc.aa.HM.TestHM2.test07(), com.cliffc.aa.HM.TestHM2.test08(), com.cliffc.aa.HM.TestHM2.test09(), com.cliffc.aa.HM.TestHM2.test10(), and com.cliffc.aa.HM.TestHM2.test11().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reset()

static void com.cliffc.aa.HM.HM2.reset ( )
staticpackage

Definition at line 100 of file HM2.java.

100 { HMVar.reset(); }

References com.cliffc.aa.HM.HM2.HMVar.reset().

Referenced by com.cliffc.aa.HM.TestHM2.reset().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ ENV

final HashMap<String,HMType> com.cliffc.aa.HM.HM2.ENV = new HashMap<>()
staticpackage

The documentation for this class was generated from the following file:
com.cliffc.aa.type.TypeInt
Definition: TypeInt.java:9
com.cliffc.aa.HM.HM2.ENV
static final HashMap< String, HMType > ENV
Definition: HM2.java:68
com.cliffc.aa.type.TypeFlt
Definition: TypeFlt.java:9
com.cliffc.aa.type.TypeInt.INT64
static final TypeInt INT64
Definition: TypeInt.java:39
com.cliffc.aa.type.TypeMemPtr.STRPTR
static final TypeMemPtr STRPTR
Definition: TypeMemPtr.java:97
com.cliffc.aa.type.TypeInt.BOOL
static final TypeInt BOOL
Definition: TypeInt.java:43
com.cliffc.aa.type.TypeMemPtr
Definition: TypeMemPtr.java:14
com.cliffc.aa.type.TypeFlt.FLT64
static final TypeFlt FLT64
Definition: TypeFlt.java:38