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

Classes

class  Add
 
class  Apply
 
class  Con
 
class  Dec
 
class  EQ
 
class  EQ0
 
class  Factor
 
class  Field
 
class  Ident
 
class  If
 
class  IsEmpty
 
class  Lambda
 
class  Let
 
class  Mul
 
class  NotNil
 
class  Pair
 
class  Pair1
 
class  PrimSyn
 
class  Root
 
class  Str
 
class  Struct
 
class  Syntax
 
class  T2
 
class  Triple
 
class  VStack
 
class  Worklist
 

Public Member Functions

String toString ()
 

Static Public Member Functions

static Root hm (String sprog)
 

Static Package Functions

 [static initializer]
 
static Root parse (String s)
 
static void reset ()
 
static Syntax term ()
 

Static Package Attributes

static final boolean DEBUG_LEAKS =false
 
static final boolean DO_GCP = true
 
static final boolean DO_HM = true
 
static final HashMap< String, PrimSynPRIMSYNS = new HashMap<>()
 

Static Private Member Functions

static Syntax fterm ()
 
static String id ()
 
static boolean isAlpha0 (byte c)
 
static boolean isAlpha1 (byte c)
 
static boolean isDigit (byte c)
 
static boolean isWS (byte c)
 
static Syntax number ()
 
static void require (char c)
 
static< T > T require (char c, T t)
 
static void require (String s)
 
static byte skipWS ()
 
static Syntax string ()
 

Static Private Attributes

static byte[] BUF
 
static final SB ID = new SB()
 
static int X
 

Detailed Description

Definition at line 84 of file HM.java.

Member Function Documentation

◆ [static initializer]()

com.cliffc.aa.HM.HM.[static initializer]
staticpackage

◆ fterm()

static Syntax com.cliffc.aa.HM.HM.fterm ( )
staticprivate

Definition at line 231 of file HM.java.

231  {
232  Syntax term=term();
233  while( true ) {
234  if( term==null || skipWS()!='.' ) return term;
235  X++;
236  term = new Field(id(),term);
237  }
238  }

References com.cliffc.aa.HM.HM.skipWS(), com.cliffc.aa.HM.HM.term(), and com.cliffc.aa.HM.HM.X.

Referenced by com.cliffc.aa.HM.HM.parse(), and com.cliffc.aa.HM.HM.term().

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

◆ hm()

static Root com.cliffc.aa.HM.HM.hm ( String  sprog)
static

Definition at line 94 of file HM.java.

94  {
95  Worklist work = new Worklist();
96  PrimSyn.WORK=work;
97 
98  for( PrimSyn prim : new PrimSyn[]{new If(), new Pair1(), new Pair(), new EQ(), new EQ0(), new Mul(), new Add(), new Dec(), new Str(), new Triple(), new Factor(), new IsEmpty(), new NotNil()} )
99  PRIMSYNS.put(prim.name(),prim);
100 
101  // Parse
102  Root prog = parse( sprog );
103 
104  // Prep for SSA: pre-gather all the (unique) ids
105  int cnt_syns = prog.prep_tree(null,null,work);
106  int init_T2s = T2.CNT;
107 
108  while( work.len()>0 ) { // While work
109  int oldcnt = T2.CNT; // Used for cost-check when no-progress
110  assert work._cnt<2000;
111  Syntax syn = work.pop(); // Get work
112  if( DO_HM ) {
113  T2 old = syn._hmt; // Old value for progress assert
114  if( syn.hm(work) ) {
115  assert !syn.debug_find().unify(old.find(),null);// monotonic: unifying with the result is no-progress
116  syn.add_hm_work(work); // Push affected neighbors on worklist
117  } else {
118  assert !DEBUG_LEAKS || oldcnt==T2.CNT; // No-progress consumes no-new-T2s
119  }
120  }
121  if( DO_GCP ) {
122  Type old = syn._flow;
123  Type t = syn.val(work);
124  if( t!=old ) { // Progress
125  assert old.isa(t); // Monotonic falling
126  syn._flow = t; // Update type
127  if( syn._par!=null ) { // Generally, parent needs revisit
128  work.push(syn._par); // Assume parent needs revisit
129  syn._par.add_val_work(syn,work); // Push affected neighbors on worklist
130  }
131  }
132  }
133 
134  // VERY EXPENSIVE ASSERT: O(n^2). Every Syntax that makes progress is on the worklist
135  assert prog.more_work(work);
136  }
137  assert prog.more_work(work);
138 
139  System.out.println("Initial T2s: "+init_T2s+", Prog size: "+cnt_syns+", worklist iters: "+work._cnt+", T2s: "+T2.CNT);
140  return prog;
141  }

References com.cliffc.aa.HM.HM.Worklist._cnt, com.cliffc.aa.HM.HM.Syntax._flow, com.cliffc.aa.HM.HM.Syntax._hmt, com.cliffc.aa.HM.HM.Syntax._par, com.cliffc.aa.HM.HM.Syntax.add_hm_work(), com.cliffc.aa.HM.HM.Syntax.add_val_work(), com.cliffc.aa.HM.HM.T2.CNT, com.cliffc.aa.HM.HM.Syntax.debug_find(), com.cliffc.aa.HM.HM.DEBUG_LEAKS, com.cliffc.aa.HM.HM.DO_GCP, com.cliffc.aa.HM.HM.DO_HM, com.cliffc.aa.HM.HM.T2.find(), com.cliffc.aa.HM.HM.Syntax.hm(), com.cliffc.aa.type.Type< T extends Type< T >.isa(), com.cliffc.aa.HM.HM.Worklist.len(), com.cliffc.aa.HM.HM.Apply.more_work(), com.cliffc.aa.HM.HM.parse(), com.cliffc.aa.HM.HM.Worklist.pop(), com.cliffc.aa.HM.HM.Apply.prep_tree(), com.cliffc.aa.HM.HM.PRIMSYNS, com.cliffc.aa.HM.HM.Worklist.push(), com.cliffc.aa.HM.HM.T2.unify(), com.cliffc.aa.HM.HM.Syntax.val(), and com.cliffc.aa.HM.HM.PrimSyn.WORK.

Referenced by com.cliffc.aa.HM.TestHM.run(), com.cliffc.aa.HM.TestHM.test05(), com.cliffc.aa.HM.TestHM.test06(), com.cliffc.aa.HM.TestHM.test14(), com.cliffc.aa.HM.TestHM.test18(), com.cliffc.aa.HM.TestHM.test20(), com.cliffc.aa.HM.TestHM.test32(), com.cliffc.aa.HM.TestHM.test33(), com.cliffc.aa.HM.TestHM.test34(), com.cliffc.aa.HM.TestHM.test36(), com.cliffc.aa.HM.TestHM.test39(), com.cliffc.aa.HM.TestHM.test40(), com.cliffc.aa.HM.TestHM.test41(), com.cliffc.aa.HM.TestHM.test42(), com.cliffc.aa.HM.TestHM.test43(), com.cliffc.aa.HM.TestHM.test44(), com.cliffc.aa.HM.TestHM.test45(), com.cliffc.aa.HM.TestHM.test49(), com.cliffc.aa.HM.TestHM.test50(), com.cliffc.aa.HM.TestHM.test51(), com.cliffc.aa.HM.TestHM.test52(), com.cliffc.aa.HM.TestHM.test55(), com.cliffc.aa.HM.TestHM.test56(), and com.cliffc.aa.HM.TestHM.test57().

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

◆ id()

static String com.cliffc.aa.HM.HM.id ( )
staticprivate

Definition at line 240 of file HM.java.

240  {
241  ID.clear();
242  while( X<BUF.length && isAlpha1(BUF[X]) )
243  ID.p((char)BUF[X++]);
244  String s = ID.toString().intern();
245  if( s.length()==0 ) throw unimpl("Missing id");
246  return s;
247  }

References com.cliffc.aa.HM.HM.BUF, com.cliffc.aa.util.SB.clear(), com.cliffc.aa.HM.HM.ID, com.cliffc.aa.HM.HM.isAlpha1(), com.cliffc.aa.util.SB.p(), com.cliffc.aa.util.SB.toString(), and com.cliffc.aa.HM.HM.X.

Referenced by com.cliffc.aa.HM.HM.T2.add_fld(), com.cliffc.aa.HM.HM.Field.Field(), and com.cliffc.aa.HM.HM.term().

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

◆ isAlpha0()

static boolean com.cliffc.aa.HM.HM.isAlpha0 ( byte  c)
staticprivate

Definition at line 274 of file HM.java.

274 { return ('a'<=c && c <= 'z') || ('A'<=c && c <= 'Z') || (c=='_') || (c=='*') || (c=='?') || (c=='+'); }

Referenced by com.cliffc.aa.HM.HM.isAlpha1(), com.cliffc.aa.HM.HM.number(), and com.cliffc.aa.HM.HM.term().

Here is the caller graph for this function:

◆ isAlpha1()

static boolean com.cliffc.aa.HM.HM.isAlpha1 ( byte  c)
staticprivate

Definition at line 275 of file HM.java.

275 { return isAlpha0(c) || ('0'<=c && c <= '9') || (c=='/'); }

References com.cliffc.aa.HM.HM.isAlpha0().

Referenced by com.cliffc.aa.HM.HM.id().

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

◆ isDigit()

static boolean com.cliffc.aa.HM.HM.isDigit ( byte  c)
staticprivate

Definition at line 273 of file HM.java.

273 { return '0' <= c && c <= '9'; }

Referenced by com.cliffc.aa.HM.HM.T2.is_tuple(), com.cliffc.aa.HM.HM.number(), and com.cliffc.aa.HM.HM.term().

Here is the caller graph for this function:

◆ isWS()

static boolean com.cliffc.aa.HM.HM.isWS ( byte  c)
staticprivate

Definition at line 272 of file HM.java.

272 { return c == ' ' || c == '\t' || c == '\n' || c == '\r'; }

Referenced by com.cliffc.aa.HM.HM.skipWS().

Here is the caller graph for this function:

◆ number()

static Syntax com.cliffc.aa.HM.HM.number ( )
staticprivate

Definition at line 248 of file HM.java.

248  {
249  if( BUF[X]=='0' ) { X++; return new Con(Type.XNIL); }
250  int sum=0;
251  while( X<BUF.length && isDigit(BUF[X]) )
252  sum = sum*10+BUF[X++]-'0';
253  if( X>= BUF.length || BUF[X]!='.' )
254  return new Con(TypeInt.con(sum));
255  // Ambiguous '.' in: 2.3 vs 2.x (field load from a number)
256  if( X+1<BUF.length && isAlpha0(BUF[X+1]) )
257  return new Con(TypeInt.con(sum));
258  X++;
259  float f = (float)sum;
260  f = f + (BUF[X++]-'0')/10.0f;
261  return new Con(TypeFlt.con(f));
262  }

References com.cliffc.aa.HM.HM.BUF, com.cliffc.aa.type.TypeFlt.con(), com.cliffc.aa.type.TypeInt.con(), com.cliffc.aa.HM.HM.isAlpha0(), com.cliffc.aa.HM.HM.isDigit(), com.cliffc.aa.HM.HM.X, and com.cliffc.aa.type.Type< T extends Type< T >.XNIL.

Referenced by com.cliffc.aa.HM.HM.term().

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

◆ parse()

static Root com.cliffc.aa.HM.HM.parse ( String  s)
staticpackage

Definition at line 158 of file HM.java.

158  {
159  X = 0;
160  BUF = s.getBytes();
161  Syntax prog = fterm();
162  if( skipWS() != -1 ) throw unimpl("Junk at end of program: "+new String(BUF,X,BUF.length-X));
163  // Inject IF at root
164  return new Root(prog);
165  }

References com.cliffc.aa.HM.HM.BUF, com.cliffc.aa.HM.HM.fterm(), com.cliffc.aa.HM.HM.skipWS(), and com.cliffc.aa.HM.HM.X.

Referenced by com.cliffc.aa.HM.HM.hm().

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

◆ require() [1/3]

static void com.cliffc.aa.HM.HM.require ( char  c)
staticprivate

Definition at line 276 of file HM.java.

276 { if( skipWS()!=c ) throw unimpl("Missing '"+c+"'"); X++; }

References com.cliffc.aa.HM.HM.skipWS(), and com.cliffc.aa.HM.HM.X.

Referenced by com.cliffc.aa.HM.HM.string(), and com.cliffc.aa.HM.HM.term().

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

◆ require() [2/3]

static <T> T com.cliffc.aa.HM.HM.require ( char  c,
t 
)
staticprivate

Definition at line 277 of file HM.java.

277 { require(c); return t; }

References com.cliffc.aa.HM.HM.require().

Referenced by com.cliffc.aa.HM.HM.require().

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

◆ require() [3/3]

static void com.cliffc.aa.HM.HM.require ( String  s)
staticprivate

Definition at line 278 of file HM.java.

278  {
279  skipWS();
280  for( int i=0; i<s.length(); i++ )
281  if( X+i >= BUF.length || BUF[X+i]!=s.charAt(i) )
282  throw unimpl("Missing '"+s+"'");
283  X+=s.length();
284  }

References com.cliffc.aa.HM.HM.BUF, com.cliffc.aa.HM.HM.skipWS(), and com.cliffc.aa.HM.HM.X.

Here is the call graph for this function:

◆ reset()

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

Definition at line 143 of file HM.java.

143  {
146  PRIMSYNS.clear();
147  Pair1.PAIR1S.clear();
148  Lambda.FUNS.clear();
149  T2.reset();
150  PrimSyn.reset();
151  }

References com.cliffc.aa.HM.HM.Lambda.FUNS, com.cliffc.aa.HM.HM.Pair1.PAIR1S, com.cliffc.aa.HM.HM.PRIMSYNS, com.cliffc.aa.HM.HM.PrimSyn.reset(), com.cliffc.aa.HM.HM.T2.reset(), com.cliffc.aa.type.BitsFun.reset_to_init0(), and com.cliffc.aa.type.BitsAlias.reset_to_init0().

Referenced by com.cliffc.aa.HM.TestHM.reset(), com.cliffc.aa.HM.TestHM6.reset(), and com.cliffc.aa.HM.TestHM9.reset().

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

◆ skipWS()

static byte com.cliffc.aa.HM.HM.skipWS ( )
staticprivate

Definition at line 268 of file HM.java.

268  {
269  while( X<BUF.length && isWS(BUF[X]) ) X++;
270  return X==BUF.length ? -1 : BUF[X];
271  }

References com.cliffc.aa.HM.HM.BUF, com.cliffc.aa.HM.HM.isWS(), and com.cliffc.aa.HM.HM.X.

Referenced by com.cliffc.aa.HM.HM.fterm(), com.cliffc.aa.HM.HM.parse(), com.cliffc.aa.HM.HM.require(), and com.cliffc.aa.HM.HM.term().

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

◆ string()

static Syntax com.cliffc.aa.HM.HM.string ( )
staticprivate

Definition at line 263 of file HM.java.

263  {
264  int start = ++X;
265  while( X<BUF.length && BUF[X]!='"' ) X++;
266  return require('"', new Con(TypeMemPtr.make(BitsAlias.STRBITS,TypeStr.con(new String(BUF,start,X-start).intern()))));
267  }

References com.cliffc.aa.HM.HM.BUF, com.cliffc.aa.type.TypeStr.con(), com.cliffc.aa.type.TypeMemPtr.make(), com.cliffc.aa.HM.HM.require(), com.cliffc.aa.type.BitsAlias.STRBITS, and com.cliffc.aa.HM.HM.X.

Referenced by com.cliffc.aa.HM.HM.term().

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

◆ term()

static Syntax com.cliffc.aa.HM.HM.term ( )
staticpackage

Definition at line 166 of file HM.java.

166  {
167  if( skipWS()==-1 ) return null;
168  if( isDigit(BUF[X]) ) return number();
169  if( BUF[X]=='"' ) return string();
170 
171  if( BUF[X]=='(' ) { // Parse an Apply
172  X++; // Skip paren
173  Syntax fun = fterm();
174  Ary<Syntax> args = new Ary<>(new Syntax[1],0);
175  while( skipWS()!= ')' && X<BUF.length ) args.push(fterm());
176  require(')');
177  // Guarding if-nil test inserts an upcast. This is a syntatic transform only.
178  if( fun instanceof If &&
179  args.at(0) instanceof Ident ) {
180  Ident id = (Ident)args.at(0);
181  args.set(1,new Apply(new Lambda(args.at(1), id._name),
182  new Apply(new NotNil(),new Ident(id._name))));
183  }
184  return new Apply(fun,args.asAry());
185  }
186 
187  if( BUF[X]=='{' ) { // Lambda of 1 or 2 args
188  X++; // Skip paren
189  Ary<String> args = new Ary<>(new String[1],0);
190  while( skipWS()!='-' ) args.push(id());
191  require("->");
192  Syntax body = fterm();
193  require('}');
194  return new Lambda(body,args.asAry());
195  }
196  // Let or Id
197  if( isAlpha0(BUF[X]) ) {
198  String id = id();
199  if( skipWS()!='=' ) {
200  PrimSyn prim = PRIMSYNS.get(id); // No shadowing primitives or this lookup returns the prim instead of the shadow
201  return prim==null ? new Ident(id) : prim.make(); // Make a prim copy with fresh HM variables
202  }
203  // Let expression; "id = term(); term..."
204  X++; // Skip '='
205  Syntax def = fterm();
206  require(';');
207  return new Let(id,def,fterm());
208  }
209 
210  // Structure
211  if( BUF[X]=='@' ) {
212  X++;
213  require('{');
214  Ary<String> ids = new Ary<>(String.class);
215  Ary<Syntax> flds = new Ary<>(Syntax.class);
216  while( skipWS()!='}' && X < BUF.length ) {
217  String id = require('=',id());
218  Syntax fld = fterm();
219  if( fld==null ) throw unimpl("Missing term for field "+id);
220  ids .push( id);
221  flds.push(fld);
222  if( skipWS()==',' ) X++;
223  }
224  require('}');
225  return new Struct(ids.asAry(),flds.asAry());
226  }
227 
228  throw unimpl("Unknown syntax");
229  }

References com.cliffc.aa.util.Ary< E >.asAry(), com.cliffc.aa.util.Ary< E >.at(), com.cliffc.aa.HM.HM.BUF, com.cliffc.aa.HM.HM.fterm(), com.cliffc.aa.HM.HM.id(), com.cliffc.aa.HM.HM.isAlpha0(), com.cliffc.aa.HM.HM.isDigit(), com.cliffc.aa.HM.HM.PrimSyn.make(), com.cliffc.aa.HM.HM.number(), com.cliffc.aa.HM.HM.PRIMSYNS, com.cliffc.aa.util.Ary< E >.push(), com.cliffc.aa.HM.HM.require(), com.cliffc.aa.util.Ary< E >.set(), com.cliffc.aa.HM.HM.skipWS(), com.cliffc.aa.HM.HM.string(), and com.cliffc.aa.HM.HM.X.

Referenced by com.cliffc.aa.HM.HM.fterm().

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

◆ toString()

String com.cliffc.aa.HM.HM.toString ( )

Definition at line 157 of file HM.java.

157 { return new String(BUF,X,BUF.length-X); }

References com.cliffc.aa.HM.HM.BUF, and com.cliffc.aa.HM.HM.X.

Member Data Documentation

◆ BUF

◆ DEBUG_LEAKS

final boolean com.cliffc.aa.HM.HM.DEBUG_LEAKS =false
staticpackage

Definition at line 88 of file HM.java.

Referenced by com.cliffc.aa.HM.HM.T2.fresh_unify(), and com.cliffc.aa.HM.HM.hm().

◆ DO_GCP

final boolean com.cliffc.aa.HM.HM.DO_GCP = true
staticpackage

Definition at line 92 of file HM.java.

Referenced by com.cliffc.aa.HM.HM.hm(), com.cliffc.aa.HM.HM.If.hm(), com.cliffc.aa.HM.HM.Syntax.more_work_impl(), com.cliffc.aa.HM.HM.Syntax.p0(), com.cliffc.aa.HM.HM.Lambda.p1(), com.cliffc.aa.HM.TestHM.run(), com.cliffc.aa.HM.TestHM9.run(), com.cliffc.aa.HM.TestHM.test05(), com.cliffc.aa.HM.TestHM9.test05(), com.cliffc.aa.HM.TestHM.test06(), com.cliffc.aa.HM.TestHM9.test06(), com.cliffc.aa.HM.TestHM.test14(), com.cliffc.aa.HM.TestHM9.test14(), com.cliffc.aa.HM.TestHM.test18(), com.cliffc.aa.HM.TestHM9.test18(), com.cliffc.aa.HM.TestHM.test20(), com.cliffc.aa.HM.TestHM9.test20(), com.cliffc.aa.HM.TestHM9.test32(), com.cliffc.aa.HM.TestHM.test32(), com.cliffc.aa.HM.TestHM9.test33(), com.cliffc.aa.HM.TestHM.test33(), com.cliffc.aa.HM.TestHM9.test34(), com.cliffc.aa.HM.TestHM.test34(), com.cliffc.aa.HM.TestHM9.test36(), com.cliffc.aa.HM.TestHM.test36(), com.cliffc.aa.HM.TestHM.test39(), com.cliffc.aa.HM.TestHM9.test39(), com.cliffc.aa.HM.TestHM.test40(), com.cliffc.aa.HM.TestHM9.test40(), com.cliffc.aa.HM.TestHM.test41(), com.cliffc.aa.HM.TestHM9.test41(), com.cliffc.aa.HM.TestHM.test42(), com.cliffc.aa.HM.TestHM9.test42(), com.cliffc.aa.HM.TestHM.test43(), com.cliffc.aa.HM.TestHM9.test43(), com.cliffc.aa.HM.TestHM.test44(), com.cliffc.aa.HM.TestHM9.test44(), com.cliffc.aa.HM.TestHM.test45(), com.cliffc.aa.HM.TestHM9.test45(), com.cliffc.aa.HM.TestHM.test49(), com.cliffc.aa.HM.TestHM9.test49(), com.cliffc.aa.HM.TestHM.test50(), com.cliffc.aa.HM.TestHM9.test50(), com.cliffc.aa.HM.TestHM.test51(), com.cliffc.aa.HM.TestHM.test52(), com.cliffc.aa.HM.TestHM.test55(), com.cliffc.aa.HM.TestHM.test56(), and com.cliffc.aa.HM.TestHM.test57().

◆ DO_HM

final boolean com.cliffc.aa.HM.HM.DO_HM = true
staticpackage

Definition at line 91 of file HM.java.

Referenced by com.cliffc.aa.HM.HM.hm(), com.cliffc.aa.HM.HM.Syntax.more_work_impl(), com.cliffc.aa.HM.HM.Syntax.p0(), com.cliffc.aa.HM.HM.Lambda.p1(), com.cliffc.aa.HM.TestHM.run(), com.cliffc.aa.HM.TestHM9.run(), com.cliffc.aa.HM.TestHM.test05(), com.cliffc.aa.HM.TestHM9.test05(), com.cliffc.aa.HM.TestHM.test06(), com.cliffc.aa.HM.TestHM9.test06(), com.cliffc.aa.HM.TestHM.test14(), com.cliffc.aa.HM.TestHM9.test14(), com.cliffc.aa.HM.TestHM.test18(), com.cliffc.aa.HM.TestHM9.test18(), com.cliffc.aa.HM.TestHM.test20(), com.cliffc.aa.HM.TestHM9.test20(), com.cliffc.aa.HM.TestHM9.test32(), com.cliffc.aa.HM.TestHM.test32(), com.cliffc.aa.HM.TestHM9.test33(), com.cliffc.aa.HM.TestHM.test33(), com.cliffc.aa.HM.TestHM9.test34(), com.cliffc.aa.HM.TestHM.test34(), com.cliffc.aa.HM.TestHM9.test36(), com.cliffc.aa.HM.TestHM.test36(), com.cliffc.aa.HM.TestHM.test39(), com.cliffc.aa.HM.TestHM9.test39(), com.cliffc.aa.HM.TestHM.test40(), com.cliffc.aa.HM.TestHM9.test40(), com.cliffc.aa.HM.TestHM.test41(), com.cliffc.aa.HM.TestHM9.test41(), com.cliffc.aa.HM.TestHM.test42(), com.cliffc.aa.HM.TestHM9.test42(), com.cliffc.aa.HM.TestHM.test43(), com.cliffc.aa.HM.TestHM9.test43(), com.cliffc.aa.HM.TestHM.test44(), com.cliffc.aa.HM.TestHM9.test44(), com.cliffc.aa.HM.TestHM.test45(), com.cliffc.aa.HM.TestHM9.test45(), com.cliffc.aa.HM.TestHM.test49(), com.cliffc.aa.HM.TestHM9.test49(), com.cliffc.aa.HM.TestHM.test50(), com.cliffc.aa.HM.TestHM9.test50(), com.cliffc.aa.HM.TestHM.test51(), com.cliffc.aa.HM.TestHM.test52(), com.cliffc.aa.HM.TestHM.test55(), com.cliffc.aa.HM.TestHM.test56(), com.cliffc.aa.HM.TestHM.test57(), and com.cliffc.aa.HM.HM.Apply.val().

◆ ID

final SB com.cliffc.aa.HM.HM.ID = new SB()
staticprivate

Definition at line 239 of file HM.java.

Referenced by com.cliffc.aa.HM.HM.id().

◆ PRIMSYNS

final HashMap<String,PrimSyn> com.cliffc.aa.HM.HM.PRIMSYNS = new HashMap<>()
staticpackage

◆ X


The documentation for this class was generated from the following file:
com.cliffc.aa.util.Ary.at
E at(int i)
Definition: Ary.java:25
com.cliffc.aa.HM.HM.isDigit
static boolean isDigit(byte c)
Definition: HM.java:273
com.cliffc.aa.HM.HM.parse
static Root parse(String s)
Definition: HM.java:158
com.cliffc.aa.util.Ary.push
E push(E e)
Add element in amortized constant time.
Definition: Ary.java:58
com.cliffc.aa.HM.HM.BUF
static byte[] BUF
Definition: HM.java:156
com.cliffc.aa.type.Type.isa
boolean isa(Type t)
Definition: Type.java:623
com.cliffc.aa.type.TypeInt
Definition: TypeInt.java:9
com.cliffc.aa.type.Type
an implementation of language AA
Definition: Type.java:94
com.cliffc.aa.util.SB.clear
SB clear()
Definition: SB.java:61
com.cliffc.aa.type.TypeFlt
Definition: TypeFlt.java:9
com.cliffc.aa.util.Ary
Definition: Ary.java:11
com.cliffc.aa.type.BitsAlias
Definition: BitsAlias.java:8
com.cliffc.aa.HM.HM.isAlpha0
static boolean isAlpha0(byte c)
Definition: HM.java:274
com.cliffc.aa.type.TypeInt.con
static TypeInt con(long con)
Definition: TypeInt.java:37
com.cliffc.aa.HM.HM.DO_HM
static final boolean DO_HM
Definition: HM.java:91
com.cliffc.aa.HM.HM.isAlpha1
static boolean isAlpha1(byte c)
Definition: HM.java:275
com.cliffc.aa.HM.HM.ID
static final SB ID
Definition: HM.java:239
com.cliffc.aa.util.Ary.asAry
E[] asAry()
Definition: Ary.java:172
com.cliffc.aa.type.TypeFlt.con
static Type con(double con)
Definition: TypeFlt.java:36
com.cliffc.aa.HM.HM.number
static Syntax number()
Definition: HM.java:248
com.cliffc.aa.HM.HM.skipWS
static byte skipWS()
Definition: HM.java:268
com.cliffc.aa.HM.HM.isWS
static boolean isWS(byte c)
Definition: HM.java:272
com.cliffc.aa.type.TypeStr.con
static TypeStr con(String con)
Definition: TypeStr.java:42
com.cliffc.aa.HM.HM.require
static void require(char c)
Definition: HM.java:276
com.cliffc.aa.HM.HM.id
static String id()
Definition: HM.java:240
com.cliffc.aa.type.TypeStr
Definition: TypeStr.java:14
com.cliffc.aa.type.BitsFun
Definition: BitsFun.java:7
com.cliffc.aa.HM.HM.DEBUG_LEAKS
static final boolean DEBUG_LEAKS
Definition: HM.java:88
com.cliffc.aa.HM.HM.PRIMSYNS
static final HashMap< String, PrimSyn > PRIMSYNS
Definition: HM.java:86
com.cliffc.aa.HM.HM.term
static Syntax term()
Definition: HM.java:166
com.cliffc.aa.type.BitsAlias.STRBITS
static BitsAlias STRBITS
Definition: BitsAlias.java:27
com.cliffc.aa.util.SB.p
SB p(String s)
Definition: SB.java:13
com.cliffc.aa.type.BitsFun.reset_to_init0
static void reset_to_init0()
Definition: BitsFun.java:29
com.cliffc.aa.HM.HM.DO_GCP
static final boolean DO_GCP
Definition: HM.java:92
com.cliffc.aa.type.Type.XNIL
static final Type XNIL
Definition: Type.java:333
com.cliffc.aa.util.Ary.set
E set(int i, E e)
Set existing element.
Definition: Ary.java:133
com.cliffc.aa.HM.HM.fterm
static Syntax fterm()
Definition: HM.java:231
com.cliffc.aa.HM.HM.string
static Syntax string()
Definition: HM.java:263
com.cliffc.aa.util.SB.toString
String toString()
Definition: SB.java:62
com.cliffc.aa.type.TypeMemPtr
Definition: TypeMemPtr.java:14
com.cliffc.aa.type.BitsAlias.reset_to_init0
static void reset_to_init0()
Definition: BitsAlias.java:64
com.cliffc.aa.HM.HM.X
static int X
Definition: HM.java:155
com.cliffc.aa.type.TypeMemPtr.make
static TypeMemPtr make(BitsAlias aliases, TypeObj obj)
Definition: TypeMemPtr.java:66