void addMathCommands( Interpreter &interp) { interp.addBuiltin( "=", eqCommand); interp.addBuiltin( "<", ltCommand); interp.addBuiltin( ">", gtCommand); interp.addBuiltin( "+", plusCommand); interp.addBuiltin( "-", subtrCommand); }
void addHashCommands( Interpreter &interp) { interp.addBuiltin( "make-hash", makehashCommand); interp.addBuiltin( "hash-put", hashsetCommand); interp.addBuiltin( "hash-get", hashgetCommand); interp.addBuiltin( "hash-clear", hashclearCommand); interp.addBuiltin( "hash-size", hashsizeCommand); interp.addBuiltin( "hash-remove", hashremoveCommand); interp.addBuiltin( "hash-exists", hashexistsCommand); interp.addBuiltin( "hash-keys", hashkeysCommand); interp.addBuiltin( "hash-values", hashvalsCommand); }
void addCoreCommands( Interpreter &interp) { // special forms interp.addSpecial( "and", new AndCommand()); interp.addSpecial( "cond", new CondCommand()); interp.addSpecial( "define", new DefineCommand()); interp.addSpecial( "if", new IfCommand()); interp.addSpecial( "lambda", new LambdaCommand()); interp.addSpecial( "let", new LetCommand()); interp.addSpecial( "let*", new LetStarCommand()); interp.addSpecial( "or", new OrCommand()); interp.addSpecial( "quote", new QuoteCommand()); interp.addSpecial( "time", new TimeCommand()); // some basic functions interp.addBuiltin( "begin", beginCommand); interp.addBuiltin( "car", carCommand); interp.addBuiltin( "cdr", cdrCommand); interp.addBuiltin( "cons", consCommand); interp.addBuiltin( "display", displayCommand); interp.addBuiltin( "eq?", new BinaryPredicateAdapter( eq)); interp.addBuiltin( "eqv?", new BinaryPredicateAdapter( eqv)); interp.addBuiltin( "exit", exitCommand); interp.addBuiltin( "gc", gcCommand); interp.addBuiltin( "load", loadCommand); interp.addBuiltin( "memstat", memstatCommand); interp.addBuiltin( "not", notCommand); interp.addBuiltin( "version", versionCommand); // type predicates interp.addBuiltin( "boolean?", new TypePredicate( Handle::ntBOOLEAN)); interp.addBuiltin( "char?", new TypePredicate( Handle::ntCHARACTER)); interp.addBuiltin( "double?", new TypePredicate( Handle::ntDOUBLE)); interp.addBuiltin( "integer?", new TypePredicate( Handle::ntINTEGER)); interp.addBuiltin( "pair?", new TypePredicate( Handle::ntCONS)); interp.addBuiltin( "string?", new TypePredicate( Handle::ntSTRING)); interp.addBuiltin( "symbol?", new TypePredicate( Handle::ntSYMBOL)); interp.addBuiltin( "hashtable?", new TypePredicate( Handle::ntHASHTABLE)); interp.addBuiltin( "keyword?", new TypePredicate( Handle::ntKEYWORD)); interp.addBuiltin( "set?", new TypePredicate( Handle::ntSET)); }