
scm.driver Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jasmin Show documentation
Show all versions of jasmin Show documentation
Java Assembler Interface for the Soot framework
package scm;
import java.io.*;
import java.util.*;
import jas.RuntimeConstants;
class driver implements RuntimeConstants
{
static Hashtable syms;
public static void main(String argv[])
throws Exception
{
String infileName, outfileName;
StreamTokenizer inp;
if (argv.length == 0)
inp = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
//inp = new StreamTokenizer(System.in);
else
inp =
new StreamTokenizer(new BufferedReader(new InputStreamReader
(new BufferedInputStream
(new FileInputStream(argv[0])))));
//inp =
// new StreamTokenizer
// (new BufferedInputStream
// (new FileInputStream(argv[0])));
inp.resetSyntax();
inp.wordChars('a', 'z');
inp.wordChars('A', 'Z');
inp.wordChars('!', '!');
inp.wordChars('?', '?');
inp.wordChars('_', '_');
inp.wordChars(128 + 32, 255);
inp.whitespaceChars(0, ' ');
inp.quoteChar('"');
inp.commentChar(';');
inp.parseNumbers();
inp.eolIsSignificant(false);
Env global = new Env();
global.definevar(Symbol.intern("define"), new Define());
global.definevar(Symbol.intern("set!"), new Setvar());
global.definevar(Symbol.intern("lambda"), new Lambda());
global.definevar(Symbol.intern("quote"), new Quote());
global.definevar(Symbol.intern("car"), new Car());
global.definevar(Symbol.intern("cdr"), new Cdr());
global.definevar(Symbol.intern("cons"), new Cons());
global.definevar(Symbol.intern("cond"), new Cond());
global.definevar(Symbol.intern("num?"), new NumP());
global.definevar(Symbol.intern("string?"), new StringP());
global.definevar(Symbol.intern("progn"), new Progn());
global.definevar(Symbol.intern("mapcar"), new Mapcar());
global.definevar(Symbol.intern("+"), new Plus());
global.definevar(Symbol.intern("-"), new Minus());
global.definevar(Symbol.intern("*"), new Mult());
global.definevar(Symbol.intern("/"), new Div());
global.definevar(Symbol.intern("|"), new Or());
global.definevar(Symbol.intern("<"), new LessP());
global.definevar(Symbol.intern(">"), new MoreP());
global.definevar(Symbol.intern("eq?"), new EqP());
// Include jas stuff now.
// load in constants
global.definevar(Symbol.intern("acc-public"),
new Selfrep(ACC_PUBLIC));
global.definevar(Symbol.intern("acc-private"),
new Selfrep(ACC_PRIVATE));
global.definevar(Symbol.intern("acc-protected"),
new Selfrep(ACC_PROTECTED));
global.definevar(Symbol.intern("acc-static"),
new Selfrep(ACC_STATIC));
global.definevar(Symbol.intern("acc-final"),
new Selfrep(ACC_FINAL));
global.definevar(Symbol.intern("acc-synchronized"),
new Selfrep(ACC_SYNCHRONIZED));
global.definevar(Symbol.intern("acc-volatile"),
new Selfrep(ACC_VOLATILE));
global.definevar(Symbol.intern("acc-transient"),
new Selfrep(ACC_TRANSIENT));
global.definevar(Symbol.intern("acc-native"),
new Selfrep(ACC_NATIVE));
global.definevar(Symbol.intern("acc-interface"),
new Selfrep(ACC_INTERFACE));
global.definevar(Symbol.intern("acc-abstract"),
new Selfrep(ACC_ABSTRACT));
global.definevar(Symbol.intern("acc-strictfp"),
new Selfrep(ACC_STRICTFP));
// Pull in auto generated stuff
AutoInit.fillit(global);
// now add in procedures for opcodes
int opc_cnt = opcNames.length;
for (int i=0; i':
ret = Symbol.intern(String.valueOf((char)(inp.ttype)));
break;
default:
throw new SchemeError("Unexpected parse error");
}
return ret;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy