aa
REPL.java
Go to the documentation of this file.
1 package com.cliffc.aa;
2 
3 import com.cliffc.aa.type.*;
4 import com.cliffc.aa.util.*;
5 
6 import java.util.Scanner;
7 
11 public abstract class REPL {
12  public static final String prompt="> ";
13  public static String go( ) {
14  String prog = "";
15  init();
16  Scanner stdin = new Scanner(System.in);
17  while( stdin.hasNextLine() )
18  prog = go_one(prog,stdin.nextLine());
19  return prog;
20  }
21 
22  static void init() {
23  System.out.print(prompt);
24  System.out.flush();
25  }
26 
27  static String go_one( String prog, String line ) {
28  String prog2 = prog+line+";"+System.lineSeparator();
29  TypeEnv te = Exec.go(Env.file_scope(Env.top_scope()),"stdin",prog2);
30  if( te._errs == null ) {
31  Type t = te._t;
32  if( t instanceof TypeMemPtr )
33  t = te._tmem.ld((TypeMemPtr)t); // Peek thru pointer
34  SB sb = t.str(new SB(),new VBitSet(),te._tmem,false); // Print what we see, with memory
35  System.out.println( sb.toString() );
36  prog = prog2;
37  } else
38  System.out.print( te._errs.get(0) );
39  System.out.print(prompt);
40  System.out.flush();
41  return prog;
42  }
43 
44 }
com.cliffc.aa.Exec
an implementation of language AA
Definition: Exec.java:6
com.cliffc.aa.type.TypeMem.ld
TypeObj ld(TypeMemPtr ptr)
Definition: TypeMem.java:325
com.cliffc.aa.REPL.go
static String go()
Definition: REPL.java:13
com.cliffc
com.cliffc.aa.Env.top_scope
static Env top_scope()
Definition: Env.java:72
com.cliffc.aa.type.TypeMemPtr.str
SB str(SB sb, VBitSet dups, TypeMem mem, boolean debug)
Definition: TypeMemPtr.java:52
com.cliffc.aa.util
Definition: AbstractEntry.java:1
com.cliffc.aa.type.Type
an implementation of language AA
Definition: Type.java:94
com.cliffc.aa.REPL.prompt
static final String prompt
Definition: REPL.java:12
com.cliffc.aa.TypeEnv._tmem
final TypeMem _tmem
Definition: TypeEnv.java:11
com.cliffc.aa.REPL
an implementation of language AA
Definition: REPL.java:11
com.cliffc.aa.REPL.go_one
static String go_one(String prog, String line)
Definition: REPL.java:27
com.cliffc.aa.TypeEnv._t
final Type _t
Definition: TypeEnv.java:10
com.cliffc.aa.Env.file_scope
static Env file_scope(Env top_scope)
Definition: Env.java:116
com.cliffc.aa.util.VBitSet
Definition: VBitSet.java:5
com.cliffc.aa.util.SB
Tight/tiny StringBuilder wrapper.
Definition: SB.java:8
com.cliffc.aa.TypeEnv
Definition: TypeEnv.java:9
com.cliffc.aa
Definition: AA.java:1
com.cliffc.aa.Exec.go
static TypeEnv go(Env top, String src, String str)
Definition: Exec.java:8
com.cliffc.aa.TypeEnv._errs
final ArrayList< Node.ErrMsg > _errs
Definition: TypeEnv.java:13
com
com.cliffc.aa.Env
Definition: Env.java:12
com.cliffc.aa.REPL.init
static void init()
Definition: REPL.java:22
com.cliffc.aa.util.SB.toString
String toString()
Definition: SB.java:62
com.cliffc.aa.type
Definition: Bits.java:1
com.cliffc.aa.type.TypeMemPtr
Definition: TypeMemPtr.java:14