Read This! | Picolisp | Picolisp Machine | Pil Sources | Pil Tutorials | Linux | BASH | C-Programmming | Javascipt | Python | Scheme | Operating Systems | AssemblyLanguage | Computer Security | Firewalls | Exploitation | Social Engineering | Metasploit | Emacs | vim | Pharo Smalltalk | Databases | Networking | Machine Learning | Git | Machine Learning | Algorithms | Open Data Science
tab.c
/* 07jan17abu * (c) Software Lab. Alexander Burger */ #include "pico.h" typedef struct symInit {fun code; char *name;} symInit; static symInit Symbols[] = { {doAbs, "abs"}, {doAccept, "accept"}, {doAdd, "+"}, {doAdr, "adr"}, {doAlarm, "alarm"}, {doAll, "all"}, {doAnd, "and"}, {doAny, "any"}, {doAppend, "append"}, {doApply, "apply"}, {doArg, "arg"}, {doArgs, "args"}, {doArgv, "argv"}, {doArrow, "->"}, {doAs, "as"}, {doAsoq, "asoq"}, {doAssoc, "assoc"}, {doAt, "at"}, {doAtom, "atom"}, {doBind, "bind"}, {doBitAnd, "&"}, {doBitOr, "|"}, {doBitQ, "bit?"}, {doBitXor, "x|"}, {doBool, "bool"}, {doBox, "box"}, {doBoxQ, "box?"}, {doBreak, "!"}, {doBy, "by"}, {doBye, "bye"}, {doBytes, "bytes"}, {doCaaaar, "caaaar"}, {doCaaadr, "caaadr"}, {doCaaar, "caaar"}, {doCaadar, "caadar"}, {doCaaddr, "caaddr"}, {doCaadr, "caadr"}, {doCaar, "caar"}, {doCadaar, "cadaar"}, {doCadadr, "cadadr"}, {doCadar, "cadar"}, {doCaddar, "caddar"}, {doCadddr, "cadddr"}, {doCaddr, "caddr"}, {doCadr, "cadr"}, {doCall, "call"}, {doCar, "car"}, {doCase, "case"}, {doCasq, "casq"}, {doCatch, "catch"}, {doCdaaar, "cdaaar"}, {doCdaadr, "cdaadr"}, {doCdaar, "cdaar"}, {doCdadar, "cdadar"}, {doCdaddr, "cdaddr"}, {doCdadr, "cdadr"}, {doCd, "cd"}, {doCdar, "cdar"}, {doCddaar, "cddaar"}, {doCddadr, "cddadr"}, {doCddar, "cddar"}, {doCdddar, "cdddar"}, {doCddddr, "cddddr"}, {doCdddr, "cdddr"}, {doCddr, "cddr"}, {doCdr, "cdr"}, {doChar, "char"}, {doChain, "chain"}, {doChop, "chop"}, {doCirc, "circ"}, {doCircQ, "circ?"}, {doClip, "clip"}, {doClose, "close"}, {doCmd, "cmd"}, {doCnt, "cnt"}, {doCol, ":"}, {doCommit, "commit"}, {doCon, "con"}, {doConc, "conc"}, {doCond, "cond"}, {doConnect, "connect"}, {doCons, "cons"}, {doCopy, "copy"}, {doCtl, "ctl"}, {doCtty, "ctty"}, {doCut, "cut"}, {doDate, "date"}, {doDbck, "dbck"}, {doDe, "de"}, {doDec, "dec"}, {doDef, "def"}, {doDefault, "default"}, {doDel, "del"}, {doDelete, "delete"}, {doDelq, "delq"}, {doDetach, "detach"}, {doDiff, "diff"}, {doDir, "dir"}, {doDiv, "/"}, {doDm, "dm"}, {doDo, "do"}, {doE, "e"}, {doEcho, "echo"}, {doEnv, "env"}, {doEof, "eof"}, {doEol, "eol"}, {doEq, "=="}, {doEq0, "=0"}, {doEq1, "=1"}, {doEqT, "=T"}, {doEqual, "="}, {doErr, "err"}, {doEval, "eval"}, {doExec, "exec"}, {doExt, "ext"}, {doExtern, "extern"}, {doExtQ, "ext?"}, {doExtra, "extra"}, {doExtract, "extract"}, {doFifo, "fifo"}, {doFile, "file"}, {doFill, "fill"}, {doFilter, "filter"}, {doFin, "fin"}, {doFinally, "finally"}, {doFind, "find"}, {doFish, "fish"}, {doFlgQ, "flg?"}, {doFlip, "flip"}, {doFlush, "flush"}, {doFold, "fold"}, {doFor, "for"}, {doFork, "fork"}, {doFormat, "format"}, {doFree, "free"}, {doFrom, "from"}, {doFull, "full"}, {doFully, "fully"}, {doFunQ, "fun?"}, {doGc, "gc"}, {doGe, ">="}, {doGe0, "ge0"}, {doGet, "get"}, {doGetd, "getd"}, {doGetl, "getl"}, {doGlue, "glue"}, {doGroup, "group"}, {doGt, ">"}, {doGt0, "gt0"}, {doHash, "hash"}, {doHead, "head"}, {doHeap, "heap"}, {doHear, "hear"}, {doHide, "===="}, {doHost, "host"}, {doId, "id"}, {doIdx, "idx"}, {doIf, "if"}, {doIf2, "if2"}, {doIfn, "ifn"}, {doIn, "in"}, {doInc, "inc"}, {doIndex, "index"}, {doInfo, "info"}, {doInsert, "insert"}, {doIntern, "intern"}, {doIpid, "ipid"}, {doIsa, "isa"}, {doJob, "job"}, {doJournal, "journal"}, {doKey, "key"}, {doKids, "kids"}, {doKill, "kill"}, {doLast, "last"}, {doLe, "<="}, {doLe0, "le0"}, {doLength, "length"}, {doLet, "let"}, {doLetQ, "let?"}, {doLieu, "lieu"}, {doLine, "line"}, {doLines, "lines"}, {doLink, "link"}, {doList, "list"}, {doListen, "listen"}, {doLit, "lit"}, {doLstQ, "lst?"}, {doLoad, "load"}, {doLock, "lock"}, {doLoop, "loop"}, {doLowQ, "low?"}, {doLowc, "lowc"}, {doLt, "<"}, {doLt0, "lt0"}, {doLup, "lup"}, {doMade, "made"}, {doMake, "make"}, {doMap, "map"}, {doMapc, "mapc"}, {doMapcan, "mapcan"}, {doMapcar, "mapcar"}, {doMapcon, "mapcon"}, {doMaplist, "maplist"}, {doMaps, "maps"}, {doMark, "mark"}, {doMatch, "match"}, {doMax, "max"}, {doMaxi, "maxi"}, {doMember, "member"}, {doMemq, "memq"}, {doMeta, "meta"}, {doMethod, "method"}, {doMin, "min"}, {doMini, "mini"}, {doMix, "mix"}, {doMmeq, "mmeq"}, {doMul, "*"}, {doMulDiv, "*/"}, {doName, "name"}, {doNand, "nand"}, {doNEq, "n=="}, {doNEq0, "n0"}, {doNEqT, "nT"}, {doNEqual, "<>"}, {doNeed, "need"}, {doNew, "new"}, {doNext, "next"}, {doNil, "nil"}, {doNond, "nond"}, {doNor, "nor"}, {doNot, "not"}, {doNth, "nth"}, {doNumQ, "num?"}, {doOff, "off"}, {doOffset, "offset"}, {doOn, "on"}, {doOne, "one"}, {doOnOff, "onOff"}, {doOpen, "open"}, {doOpid, "opid"}, {doOpt, "opt"}, {doOr, "or"}, {doOut, "out"}, {doPack, "pack"}, {doPair, "pair"}, {doPass, "pass"}, {doPath, "path"}, {doPatQ, "pat?"}, {doPeek, "peek"}, {doPick, "pick"}, {doPipe, "pipe"}, {doPlace, "place"}, {doPoll, "poll"}, {doPool, "pool"}, {doPop, "pop"}, {doPopq, "++"}, {doPort, "port"}, {doPr, "pr"}, {doPreQ, "pre?"}, {doPrin, "prin"}, {doPrinl, "prinl"}, {doPrint, "print"}, {doPrintln, "println"}, {doPrintsp, "printsp"}, {doPrior, "prior"}, {doProg, "prog"}, {doProg1, "prog1"}, {doProg2, "prog2"}, {doProp, "prop"}, {doPropCol, "::"}, {doProtect, "protect"}, {doProve, "prove"}, {doPush, "push"}, {doPush1, "push1"}, {doPush1q, "push1q"}, {doPut, "put"}, {doPutl, "putl"}, {doPwd, "pwd"}, {doQueue, "queue"}, {doQuit, "quit"}, {doRand, "rand"}, {doRange, "range"}, {doRank, "rank"}, {doRassoc, "rassoc"}, {doRaw, "raw"}, {doRd, "rd"}, {doRead, "read"}, {doRemove, "remove"}, {doRem, "%"}, {doReplace, "replace"}, {doRest, "rest"}, {doReverse, "reverse"}, {doRewind, "rewind"}, {doRollback, "rollback"}, {doRot, "rot"}, {doRun, "run"}, {doSect, "sect"}, {doSeed, "seed"}, {doSeek, "seek"}, {doSemicol, ";"}, {doSend, "send"}, {doSeq, "seq"}, {doSet, "set"}, {doSetCol, "=:"}, {doSetq, "setq"}, {doShift, ">>"}, {doSigio, "sigio"}, {doSize, "size"}, {doSkip, "skip"}, {doSort, "sort"}, {doSpace, "space"}, {doSplit, "split"}, {doSpQ, "sp?"}, {doSqrt, "sqrt"}, {doState, "state"}, {doStem, "stem"}, {doStr, "str"}, {doStrip, "strip"}, {doStrQ, "str?"}, {doSub, "-"}, {doSubQ, "sub?"}, {doSum, "sum"}, {doSuper, "super"}, {doSwap, "swap"}, {doSym, "sym"}, {doSymQ, "sym?"}, {doSync, "sync"}, {doSys, "sys"}, {doT, "t"}, {doTail, "tail"}, {doTell, "tell"}, {doText, "text"}, {doThrow, "throw"}, {doTick, "tick"}, {doTill, "till"}, {doTime, "time"}, {doTouch, "touch"}, {doTrace, "$"}, {doTrim, "trim"}, {doTry, "try"}, {doType, "type"}, {doTzo, "tzo"}, {doUdp, "udp"}, {doUnify, "unify"}, {doUnless, "unless"}, {doUntil, "until"}, {doUp, "up"}, {doUppQ, "upp?"}, {doUppc, "uppc"}, {doUse, "use"}, {doUsec, "usec"}, {doVal, "val"}, {doVersion, "version"}, {doWait, "wait"}, {doWhen, "when"}, {doWhile, "while"}, {doWipe, "wipe"}, {doWith, "with"}, {doWr, "wr"}, {doXchg, "xchg"}, {doXor, "xor"}, {doYoke, "yoke"}, {doZap, "zap"}, {doZero, "zero"}, }; static any initSym(any v, char *s) { any x, *h; h = Intern + ihash(x = mkName(s)); x = consSym(v,x); *h = cons(x,*h); return x; } void initSymbols(void) { int i; Nil = symPtr(Avail), Avail = Avail->car->car; // Allocate 2 cells for NIL val(Nil) = tail(Nil) = val(Nil+1) = tail(Nil+1) = Nil; Zero = box(0); One = box(2); for (i = 0; i < IHASH; ++i) Intern[i] = Transient[i] = Nil; for (i = 0; i < EHASH; ++i) Extern[i] = Nil; initSym(mkStr(_OS), "*OS"); DB = initSym(Nil, "*DB"); Meth = initSym(box(num(doMeth)), "meth"); Quote = initSym(box(num(doQuote)), "quote"); T = initSym(Nil, "T"), val(T) = T; // Last protected symbol mkExt(val(DB) = DbVal = consStr(DbTail = box('1'))); Extern['1'] = cons(DbVal, Nil); Solo = initSym(Zero, "*Solo"); PPid = initSym(Nil, "*PPid"); Pid = initSym(boxCnt(getpid()), "*Pid"); At = initSym(Nil, "@"); At2 = initSym(Nil, "@@"); At3 = initSym(Nil, "@@@"); This = initSym(Nil, "This"); Prompt = initSym(Nil, "*Prompt"); Dbg = initSym(Nil, "*Dbg"); Zap = initSym(Nil, "*Zap"); Ext = initSym(Nil, "*Ext"); Scl = initSym(Zero, "*Scl"); Class = initSym(Nil, "*Class"); Run = initSym(Nil, "*Run"); Hup = initSym(Nil, "*Hup"); Sig1 = initSym(Nil, "*Sig1"); Sig2 = initSym(Nil, "*Sig2"); Up = initSym(Nil, "^"); Err = initSym(Nil, "*Err"); Msg = initSym(Nil, "*Msg"); Uni = initSym(Nil, "*Uni"); Led = initSym(Nil, "*Led"); Tsm = initSym(Nil, "*Tsm"); Adr = initSym(Nil, "*Adr"); Fork = initSym(Nil, "*Fork"); Bye = initSym(Nil, "*Bye"); // Last unremovable symbol for (i = 0; i < (int)(sizeof(Symbols)/sizeof(symInit)); ++i) initSym(box(num(Symbols[i].code)), Symbols[i].name); }
29jun17 | admin |