public static void Setup(Context context) { BombardoLangClass.SetProcedure(context, AllNames.LISP_CAAR, Caar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CADR, Cadr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDAR, Cdar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDDR, Cddr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CAAAR, Caaar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CAADR, Caadr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CADAR, Cadar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CADDR, Caddr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDAAR, Cdaar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDADR, Cdadr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDDAR, Cddar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDDDR, Cdddr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CAAAAR, Caaaar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CAAADR, Caaadr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CAADAR, Caadar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CAADDR, Caaddr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CADAAR, Cadaar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CADADR, Cadadr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CADDAR, Caddar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CADDDR, Cadddr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDAAAR, Cdaaar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDAADR, Cdaadr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDADAR, Cdadar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDADDR, Cdaddr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDDAAR, Cddaar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDDADR, Cddadr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDDDAR, Cdddar, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDDDDR, Cddddr, 1); }
public static void Setup(Context context) { // num is char // (str-create (num num num)) -> num // (str-length string) -> length // (str-get string element) -> num // // (str-concat string1 string2 string3) -> string1string2string3 // (str-substr string start length) -> substring // (str-split string separator) -> ("substring1" "substring2" "substring3") // // (str-starts-with string check) -> true|false // (str-ends-with string check) -> true|false // (str-contains string substring) -> true|false // // (str-replace string subString newSubString) -> string BombardoLangClass.SetProcedure(context, AllNames.TEXT_CREATE, Create, 1); BombardoLangClass.SetProcedure(context, AllNames.TEXT_LENGTH, Length, 1); BombardoLangClass.SetProcedure(context, AllNames.TEXT_GETCHARS, GetChars, 1); BombardoLangClass.SetProcedure(context, AllNames.TEXT_GETCHAR, GetChar, 2); BombardoLangClass.SetProcedure(context, AllNames.TEXT_CONCAT, Concat, 0); BombardoLangClass.SetProcedure(context, AllNames.TEXT_SUBSTR, Substr, 3); BombardoLangClass.SetProcedure(context, AllNames.TEXT_SPLIT, Split, 2); BombardoLangClass.SetProcedure(context, AllNames.TEXT_STARTSWITH, StartsWith, 2); BombardoLangClass.SetProcedure(context, AllNames.TEXT_ENDSWITH, EndsWith, 2); BombardoLangClass.SetProcedure(context, AllNames.TEXT_CONTAINS, Contains, 2); BombardoLangClass.SetProcedure(context, AllNames.TEXT_REPLACE, Replace, 3); }
public static void Setup(Context context) { timeouts = new List <Interval>(); intervals = new List <Interval>(); // (interval-set 1500 (lambda () (print "yo!"))) -> interval // (interval-set `(tag 1500) (lambda () (print "yo!"))) -> interval // (interval-clear interval) -> stops interval // // AllIntervals -> list of intervals // (timeout-set 1500 (lambda () (print "yo!"))) -> timeout // (timeout-set `(tag 1500) (lambda () (print "yo!"))) -> interval // (timeout-clear timeout) -> stops timeout // // AllTimeouts -> list of timeouts BombardoLangClass.SetProcedure(context, AllNames.LISP_GET_TIME, GetTime, 0); BombardoLangClass.SetProcedure(context, AllNames.LISP_INTERVAL_PRED, IntervalPred, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_TIMEOUT_PRED, TimeoutPred, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_INTERVAL_SET, IntervalSet, 2); BombardoLangClass.SetProcedure(context, AllNames.LISP_INTERVAL_CLEAR, IntervalClear, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_INTERVAL_TAG, IntervalTag, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_TIMEOUT_SET, TimeoutSet, 2); BombardoLangClass.SetProcedure(context, AllNames.LISP_TIMEOUT_CLEAR, TimeoutClear, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_TIMEOUT_TAG, IntervalTag, 1); }
private static void ExecuteFile(string path, Context context) { string raw = File.ReadAllText(path); List <Atom> nodes = BombardoLangClass.Parse(raw); foreach (var node in nodes) { Evaluator.Evaluate(node, context); } }
public static void Setup(Context context) { BombardoLangClass.SetProcedure(context, AllNames.LOGIC_EQ, Eq, 2); BombardoLangClass.SetProcedure(context, AllNames.LOGIC_NEQ, Neq, 2); BombardoLangClass.SetProcedure(context, AllNames.LOGIC_AND, And, 2); BombardoLangClass.SetProcedure(context, AllNames.LOGIC_OR, Or, 2); BombardoLangClass.SetProcedure(context, AllNames.LOGIC_XOR, Xor, 2); BombardoLangClass.SetProcedure(context, AllNames.LOGIC_IMP, Imp, 2); BombardoLangClass.SetProcedure(context, AllNames.LOGIC_NOT, Not, 1); }
public static Atom FromString(Atom args, Context context) { Atom str = (Atom)args.value; if (!str.IsString()) { throw new ArgumentException("Argument must be string!"); } List <Atom> atoms = BombardoLangClass.Parse((string)str.value); return(Atom.List(atoms.ToArray())); }
public static void Setup(Context context) { BombardoLangClass.SetProcedure(context, AllNames.LISP_TABLE_CREATE, TableCreate, 0); BombardoLangClass.SetProcedure(context, AllNames.LISP_TABLE_GET, TableGet, 2); BombardoLangClass.SetProcedure(context, AllNames.LISP_TABLE_SET, TableSet, 2); BombardoLangClass.SetProcedure(context, AllNames.LISP_TEBLE_REMOVE, TebleRemove, 2); BombardoLangClass.SetProcedure(context, AllNames.LISP_TABLE_CLEAR, TableClear, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_TABLE_IMPORT, TableImport, 2); BombardoLangClass.SetProcedure(context, AllNames.LISP_TABLE_IMPORT_ALL, TableImportAll, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_TABLE_EACH, TableEach, 2); BombardoLangClass.SetProcedure(context, AllNames.LISP_TABLE_PRED, TablePred, 1); }
public static void Start() { Console.WriteLine("Basic BombardoV1 lang"); Console.WriteLine("07.2018 by Kaleb Sadalmalik"); ShowWelcome(null, null); loop_ = true; BombardoLangClass.Init(false); // Add to basic context Context system = BombardoLangClass.Global; system.Define("#path", new Atom(AtomType.String, System.AppDomain.CurrentDomain.BaseDirectory)); BombardoLangClass.SetProcedure(system, "welcome", ShowWelcome, 0); BombardoLangClass.SetProcedure(system, "w", ShowWelcome, 0); BombardoLangClass.SetProcedure(system, "about", ShowAbout, 0); BombardoLangClass.SetProcedure(system, "exit", Exit, 0); BombardoLangClass.SetProcedure(system, "e", Exit, 0); BombardoLangClass.SetProcedure(system, "halp", Halp, 0); BombardoLangClass.SetProcedure(system, "h", Halp, 0); BombardoLangClass.SetProcedure(system, "load", LoadEval, 1); BombardoLangClass.SetProcedure(system, "l", LoadEval, 1); BombardoLangClass.WrapContext(); Console.CancelKeyPress += ResetConsole; while (loop_) { try { Console.Write(":> "); storage_ += Console.ReadLine(); List <Atom> nodes; if (TryParse(storage_, out nodes)) { storage_ = ""; foreach (var node in nodes) { Atom result = Evaluator.Evaluate(node, BombardoLangClass.Global); Console.WriteLine(result != null ? result.ToString() : AllNames.NULL_SYMBOL); } } } catch (Exception exc) { Console.WriteLine(exc.ToString()); } } }
public static void Setup(Context context) { bombardoLang_ = context; programPath_ = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.ToString(); modules_ = new Dictionary <string, BombardoModule>(); modulesStack_ = new Stack <BombardoModule>(); // (require "myModule.brd") => myModule // (require "myModule.brd" as ultraModule) => ultraModule // (require "myModule.brd" import stuff1 stuff2 stuff3) => stuff1 stuff2 stuff3 BombardoLangClass.SetProcedure(bombardoLang_, AllNames.MODULE_REQUIRE, Require, 1, false); BombardoLangClass.SetProcedure(bombardoLang_, AllNames.MODULE_EXPORT, Export, 1, false); modulesStack_.Push(new BombardoModule(programPath_, context, false)); }
public static void Setup(Context context) { // (concurentQueueCreate) -> queue // (concurentQueueEnqueue queue atom) // (concurentQueueDequeue queue) -> atom // (concurentQueueCount queue) -> count // (concurentQueue? queue) -> true // (concurentQueue? anything-else) -> false BombardoLangClass.SetProcedure(context, AllNames.CONCURENCY_QUEUE_CREATE, CreateThreadSafeQueue, 0); BombardoLangClass.SetProcedure(context, AllNames.CONCURENCY_QUEUE_ENQUEUE, ThreadSafeEnqueue, 1); BombardoLangClass.SetProcedure(context, AllNames.CONCURENCY_QUEUE_DEQUEUE, ThreadSafeDequeue, 1); BombardoLangClass.SetProcedure(context, AllNames.CONCURENCY_QUEUE_COUNT, ThreadSafeCount, 1); BombardoLangClass.SetProcedure(context, AllNames.CONCURENCY_QUEUE_PRED, ThreadSafeCount, 1); }
public static Atom Parse(Atom args, Context context) { Atom text = args?.atom; if (text.type != AtomType.String) { throw new ArgumentException("Argument must be string!"); } try { var atoms = BombardoLangClass.Parse((string)text?.value); return(Atom.List(atoms.ToArray())); } catch { } return(null); }
public static void Setup(Context context) { // (nope anything) -> null // (marker anything) -> null // Created for debugging in visual studio // `anything -> (quote anything) -> anything // (parse "expression") -> expression // (eval expression) -> result of expression // (evalEach (expression expression expression ...)) -> result of last expression // (cond ((condition) expression) ((condition) expression) ...) -> result of success statement, or null // (if condition expression [alternative-expression]) -> result of expression or alternative-expression if condition was false // (while condition (expression expression expression ...)) -> evaluates expressions while condition is true, return null // (until condition (expression expression expression ...)) -> same as (while (not condition) ...) BombardoLangClass.SetProcedure(context, AllNames.LISP_NOPE, Nope, 0, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_MARKER, Marker, 0, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_QUOTE, Quote, 1, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_PARSE, Parse, 1, true); BombardoLangClass.SetProcedure(context, AllNames.LISP_EVAL, Eval, 1, true); BombardoLangClass.SetProcedure(context, AllNames.LISP_EVALEACH, EvalEach, 1, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_COND, Cond, 2, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_IF, If, 2, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_WHILE, While, 1, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_UNTIL, Until, 1, false); // (lambda (...) expression) // (macros (...) (list expression)) // (syntax (#F #F) (...) expression) // (syntax (#T #F) (...) expression) // (syntax (#F #T) (...) (list expression)) // (syntax (#T #T) (...) (list expression)) BombardoLangClass.SetProcedure(context, AllNames.LISP_LAMBDA, Lambda, 2, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_MACROS, Macros, 2, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_SYNTAX, Syntax, 3, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_MACROEXPAND, MacroExpand, 1, false); // (apply function [arguments]) -> result of (function [arguments]) BombardoLangClass.SetProcedure(context, AllNames.LISP_APPLY, Apply, 1, true); BombardoLangClass.SetProcedure(context, AllNames.LISP_ERROR, Error, 1, true); }
private static Atom LoadEval(Atom args, Context context) { if (args == null) { Console.WriteLine("load-eval requires string parameter!!!"); return(Atom.FALSE); } Atom atom = args.atom; if (atom.type != AtomType.String) { Console.WriteLine("load-eval requires string parameter!!!"); return(Atom.FALSE); } string name = atom.value as string; if (string.IsNullOrEmpty(name)) { Console.WriteLine("load-eval requires string parameter!!!"); return(Atom.FALSE); } string path = FSUtils.FindFile(name); string raw = File.ReadAllText(path); var nodes = BombardoLangClass.Parse(raw); foreach (var node in nodes) { try { Evaluator.Evaluate(node, BombardoLangClass.Global); } catch (Exception exc) { Console.WriteLine(exc.ToString()); } } return(null); }
private static Atom Load(Atom args, Context context) { Atom path = (Atom)args?.value; if (path == null || !path.IsString()) { throw new ArgumentException("Path must be string!"); } string file = (string)path.value; if (File.Exists(file)) { string raw = File.ReadAllText(file); List <Atom> nodes = BombardoLangClass.Parse(raw); return(Atom.List(nodes.ToArray())); } return(null); }
public static void Setup(Context context) { BombardoLangClass.SetProcedure(context, AllNames.LISP_PRINT, Print, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_READ, ReadLine, 0); BombardoLangClass.SetProcedure(context, AllNames.LISP_DEFINE, Define, 1, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_SETFIRST, SetFirst, 2, false); BombardoLangClass.SetProcedure(context, AllNames.LISP_TO_STRING, ToString, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_FROM_STRING, FromString, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_SYMBOL_NAME, SymbolName, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_MAKE_SYMBOL, MakeSymbol, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_GET_CONTEXT, GetContext, 0); BombardoLangClass.SetProcedure(context, AllNames.LISP_GET_CONTEXT_PARENT, GetContextParent, 0); context.Define(AllNames.NULL_SYMBOL, null); context.Define(AllNames.EMPTY_SYMBOL, Atom.EMPTY); }
public static void Setup(Context context) { BombardoLangClass.SetProcedure(context, AllNames.LISP_CONS, Cons, 0); BombardoLangClass.SetProcedure(context, AllNames.LISP_CAR, Car, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_CDR, Cdr, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_GET, GetElement, 2); BombardoLangClass.SetProcedure(context, AllNames.LISP_LAST, Last, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_APPEND, Append, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_LIST, List, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_REVERSE, ReverseAtom, 1); BombardoLangClass.SetProcedure(context, AllNames.LISP_SET_CAR, SetCar, 2); BombardoLangClass.SetProcedure(context, AllNames.LISP_SET_CDR, SetCdr, 2); BombardoLangClass.SetProcedure(context, AllNames.LISP_EACH, Each, 2, true); BombardoLangClass.SetProcedure(context, AllNames.LISP_MAP, Map, 2, true); BombardoLangClass.SetProcedure(context, AllNames.LISP_FILTER, Filter, 2, true); BombardoLangClass.SetProcedure(context, AllNames.LISP_CONTAINS, Contains, 2, true); }
public static void Setup(Context context) { // (load "filepath") -> list // (save "filepath" (symbol1 symbol2 symbol3 (expression1) (expression2) (expression3))) BombardoLangClass.SetProcedure(context, AllNames.FS_LOAD, Load, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_SAVE, Save, 2); // (fsExists "filepath") -> true|false // (fsOpen "filepath" [read] [write] [|create|append]) -> handler // (fsFlush handler) // (fsClose handler) // (fsRead handler) -> char // (fsReadline handler) -> string // (fsWrite handler char|string|symbol|number) // (fsReadText "filepath") -> string // (fsReadLines "filepath") -> ( string string string ... ) // (fsWriteText "filepath" string) // (fsWriteLines "filepath" ( string string string ... )) // (fsAppendText "filepath" string) // (fsAppendLines "filepath" ( string string string ... )) BombardoLangClass.SetProcedure(context, AllNames.FS_EXISTS, Exists, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_OPEN, Open, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_FLUSH, Flush, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_CLOSE, Close, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_READ, Read, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_READ_LINE, ReadLine, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_WRITE, Write, 2); BombardoLangClass.SetProcedure(context, AllNames.FS_READ_TEXT, ReadText, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_READ_LINES, ReadLines, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_WRITE_TEXT, WriteText, 2); BombardoLangClass.SetProcedure(context, AllNames.FS_WRITE_LINES, WriteLines, 2); BombardoLangClass.SetProcedure(context, AllNames.FS_APPEND_TEXT, AppendText, 2); BombardoLangClass.SetProcedure(context, AllNames.FS_APPEND_LINES, AppendLines, 2); // (fsFile? "path") -> true | false // (fsDirectory? "path") -> true | false BombardoLangClass.SetProcedure(context, AllNames.FS_FILE_PRED, FilePredicate, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_DIR_PRED, DirectoryPredicate, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_DIR_EMPTY_PRED, DirectoryEmptyPredicate, 1); // (fsReadDirectory "directoryPath") -> ( "file1" "file2" "file3" ... ) // (fsCreateDirectory "directoryPath") -> null // (fsRemoveDirectory "directoryPath") -> null BombardoLangClass.SetProcedure(context, AllNames.FS_READ_DIRECTORY, ReadDirectory, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_CREATE_DIRECTORY, CreateDirectory, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_REMOVE_DIRECTORY, RemoveDirectory, 1); // (fsPathCombine "path1" "path2" "path3") -> "path1/path2/path3" // (fsPathGetFull "directoryPath.ext") -> "extended/directoryPath.ext" // (fsPathGetExtension "directoryPath/file.ext") -> "ext" // (fsPathGetFileName "directoryPath/file.ext") -> "file.ext" // (fsPathGetDirectoryName "directoryPath/file.ext") -> "directoryPath" BombardoLangClass.SetProcedure(context, AllNames.FS_PATH_COMBINE, PathCombile, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_PATH_GET_FULL, PathGetFull, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_PATH_GET_EXTENSION, PathGetExtension, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_PATH_GET_FILE_NAME, PathGetFileName, 1); BombardoLangClass.SetProcedure(context, AllNames.FS_PATH_GET_DIR_NAME, PathGetDirectoryName, 1); }
public static void Setup(Context context) { // Base math BombardoLangClass.SetProcedure(context, AllNames.MATH_SUM, Sum, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_DIS, Dis, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_MUL, Mul, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_DIV, Div, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_MOD, Mod, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_MIN, Min, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_MAX, Max, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_ABS, Abs, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_SIGN, Sign, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CEIL, Ceil, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_FLOOR, Floor, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_TRUNC, Trunc, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_SQRT, Sqrt, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_POW, Pow, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_EXP, Exp, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_LOGN, Logn, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_LOG, Log, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_LOG10, Log10, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_SIN, Sin, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_COS, Cos, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_TAN, Tan, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_ASIN, Asin, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_ACOS, Acos, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_ATAN, Atan, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_ATAN2, Atan2, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_SINH, Sinh, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_COSH, Cosh, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_TANH, Tanh, 1); context.Define(AllNames.MATH_PI, new Atom(AtomType.Number, Math.PI)); context.Define(AllNames.MATH_E, new Atom(AtomType.Number, Math.E)); BombardoLangClass.SetProcedure(context, AllNames.MATH_AND, And, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_OR, Or, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_XOR, Xor, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_LSH, Lsh, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_RSH, Rsh, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_LT, Lt, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_GT, Gt, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_LE, Le, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_GE, Ge, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_NE, Ne, 2); BombardoLangClass.SetProcedure(context, AllNames.MATH_EQ, Eq, 2); // Type predicates BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDBYTE, PredSByte, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDUBYTE, PredUByte, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDSBYTE, PredSByte, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDCHAR, PredChar, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDSSHORT, PredSShort, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDUSHORT, PredUShort, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDSINT, PredSInt, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDUINT, PredUInt, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDSLONG, PredSLong, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDULONG, PredULong, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDFLOAT, PredFloat, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_PREDDOUBLE, PredDouble, 1); // Type cast BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_BYTE, CastSByte, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_UBYTE, CastUByte, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_SBYTE, CastSByte, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_CHAR, CastChar, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_SSHORT, CastSShort, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_USHORT, CastUShort, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_SINT, CastSInt, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_UINT, CastUInt, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_SLONG, CastSLong, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_ULONG, CastULong, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_FLOAT, CastFloat, 1); BombardoLangClass.SetProcedure(context, AllNames.MATH_CAST_DOUBLE, CastDouble, 1); }