# HG changeset patch # User Michael Pavone # Date 1405389826 25200 # Node ID d6a4c9e7716e694c9f6be274d430460890518a6e # Parent cba0cb39517a022e1b474a0c5695fd9aca3a0198 Remove remapping of most operators diff -r cba0cb39517a -r d6a4c9e7716e cbackend.js --- a/cbackend.js Mon Jul 14 09:33:41 2014 -0700 +++ b/cbackend.js Mon Jul 14 19:03:46 2014 -0700 @@ -15,9 +15,7 @@ function getOpMethodName(opname) { - var optoMeth = {'+': 'ADD_', '-': 'SUB_', '*': 'MUL_', '/': 'DIV_', '%': 'MOD_', - '=': 'EQ_', '!=': 'NEQ_', '<': 'LT_', '>': 'GT_', '>=': 'GEQ_', '<=': 'LEQ_', - '.': 'CAT_', '&&':'if', '||':'ifnot', '|': 'CONS_'}; + var optoMeth = {'&&':'if', '||':'ifnot'}; if (opname in optoMeth) { return optoMeth[opname]; } else { @@ -611,7 +609,13 @@ } else if(messages[i].name == 'llProperty:withType:' && messages[i].args.length == 2) { me.addProperty(messages[i].args[0].name, null, messages[i].args[1].toCTypeName()); } else if(messages[i].name == 'llMessage:withVars:andCode:' && messages[i].args.length == 3) { - var msgname = messages[i].args[0].name + if (messages[i].args[0] instanceof symbol) { + var msgname = messages[i].args[0].name; + } else if (messages[i].args[0] instanceof strlit) { + var msgname = messages[i].args[0].val; + } else { + throw new Error('First argument to llMessage:withVars:andCode must be a symbol or string'); + } var rawvars = messages[i].args[1].expressions; var vars = {}; for(var v in rawvars) { @@ -674,22 +678,22 @@ var typename = 'obj_' + (unsigned ? 'u' : '') + 'int' + bits; var intObj = new cObject(typename); intObj.addProperty('num', null, (unsigned ? 'u' : '') + 'int' + bits +'_t'); - addBinaryOp(intObj, 'ADD_', '+', typename); - addBinaryOp(intObj, 'SUB_', '-', typename); - addBinaryOp(intObj, 'MUL_', '*', typename); - addBinaryOp(intObj, 'DIV_', '/', typename); - addBinaryOp(intObj, 'MOD_', '%', typename); + addBinaryOp(intObj, '+', '+', typename); + addBinaryOp(intObj, '-', '-', typename); + addBinaryOp(intObj, '*', '*', typename); + addBinaryOp(intObj, '/', '/', typename); + addBinaryOp(intObj, '%', '%', typename); addBinaryOp(intObj, 'or', '|', typename); addBinaryOp(intObj, 'xor', '^', typename); addBinaryOp(intObj, 'and', '&', typename); addBinaryOp(intObj, 'lshift:by', '<<', typename); addBinaryOp(intObj, 'rshift:by', '>>', typename); - addCompOp(intObj, 'LT_', '<', typename); - addCompOp(intObj, 'GT_', '>', typename); - addCompOp(intObj, 'EQ_', '==', typename); - addCompOp(intObj, 'NEQ_', '!=', typename); - addCompOp(intObj, 'GEQ_', '>=', typename); - addCompOp(intObj, 'LEQ_', '<=', typename); + addCompOp(intObj, '<', '<', typename); + addCompOp(intObj, '>', '>', typename); + addCompOp(intObj, '=', '==', typename); + addCompOp(intObj, '!=', '!=', typename); + addCompOp(intObj, '>=', '>=', typename); + addCompOp(intObj, '<=', '<=', typename); intObj.addInclude(''); //-9223372036854775808 //01234567890123456789 diff -r cba0cb39517a -r d6a4c9e7716e compiler.js --- a/compiler.js Mon Jul 14 09:33:41 2014 -0700 +++ b/compiler.js Mon Jul 14 19:03:46 2014 -0700 @@ -383,16 +383,16 @@ } else if (this.name == 'llProperty:withType:') { if (this.args[0] instanceof symbol) { if ((this.args[1] instanceof symbol) || (this.args[1] instanceof funcall)) { - symbols.defineLLProperty(this.args[0].name); + symbols.defineLLProperty(this.args[0] instanceof symbol ? this.args[0].name : this.args[0].val); return; } else { throw new Error("Second argument to llProperty:withType: must be a symbol or funcall"); } } else { - throw new Error("First argument to llProperty:withType: must be a symbol"); + throw new Error("First argument to llProperty:withType: must be a symbol or string"); } } else if (this.name == 'llMessage:withVars:andCode:') { - if (this.args[0] instanceof symbol) { + if (this.args[0] instanceof symbol || this.args[0] instanceof strlit) { if (this.args[1] instanceof lambda) { if (this.args[2] instanceof lambda) { symbols.defineMsg(this.args[0].name, this.args[2]); diff -r cba0cb39517a -r d6a4c9e7716e modules/string.tp --- a/modules/string.tp Mon Jul 14 09:33:41 2014 -0700 +++ b/modules/string.tp Mon Jul 14 19:03:46 2014 -0700 @@ -19,7 +19,7 @@ intret } - llMessage: EQ_ withVars: { + llMessage: "=" withVars: { argb <- (string ptr) } andCode: :argb { if: len = (argb len) && bytes = (argb bytes) && (not: (memcmp: data (argb data) bytes)) { @@ -39,7 +39,7 @@ intret } - llMessage: NEQ_ withVars: { + llMessage: "!=" withVars: { argb <- (string ptr) } andCode: :argb { if: len != (argb len) || bytes != (argb bytes) || (memcmp: data (argb data) bytes) { @@ -56,7 +56,7 @@ self } - llMessage: CAT_ withVars: { + llMessage: "." withVars: { argbo <- (object ptr) argb <- (string ptr) out <- (string ptr)