Mercurial > repos > tabletprog
comparison cbackend.js @ 265:d6a4c9e7716e
Remove remapping of most operators
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 14 Jul 2014 19:03:46 -0700 |
parents | 2557ce4e671f |
children | 75dc7161c1ca |
comparison
equal
deleted
inserted
replaced
264:cba0cb39517a | 265:d6a4c9e7716e |
---|---|
13 return methodIds[methodName]; | 13 return methodIds[methodName]; |
14 } | 14 } |
15 | 15 |
16 function getOpMethodName(opname) | 16 function getOpMethodName(opname) |
17 { | 17 { |
18 var optoMeth = {'+': 'ADD_', '-': 'SUB_', '*': 'MUL_', '/': 'DIV_', '%': 'MOD_', | 18 var optoMeth = {'&&':'if', '||':'ifnot'}; |
19 '=': 'EQ_', '!=': 'NEQ_', '<': 'LT_', '>': 'GT_', '>=': 'GEQ_', '<=': 'LEQ_', | |
20 '.': 'CAT_', '&&':'if', '||':'ifnot', '|': 'CONS_'}; | |
21 if (opname in optoMeth) { | 19 if (opname in optoMeth) { |
22 return optoMeth[opname]; | 20 return optoMeth[opname]; |
23 } else { | 21 } else { |
24 return opname; | 22 return opname; |
25 } | 23 } |
609 }); | 607 }); |
610 me.addImport(importsyms, messages[i].args[1]); | 608 me.addImport(importsyms, messages[i].args[1]); |
611 } else if(messages[i].name == 'llProperty:withType:' && messages[i].args.length == 2) { | 609 } else if(messages[i].name == 'llProperty:withType:' && messages[i].args.length == 2) { |
612 me.addProperty(messages[i].args[0].name, null, messages[i].args[1].toCTypeName()); | 610 me.addProperty(messages[i].args[0].name, null, messages[i].args[1].toCTypeName()); |
613 } else if(messages[i].name == 'llMessage:withVars:andCode:' && messages[i].args.length == 3) { | 611 } else if(messages[i].name == 'llMessage:withVars:andCode:' && messages[i].args.length == 3) { |
614 var msgname = messages[i].args[0].name | 612 if (messages[i].args[0] instanceof symbol) { |
613 var msgname = messages[i].args[0].name; | |
614 } else if (messages[i].args[0] instanceof strlit) { | |
615 var msgname = messages[i].args[0].val; | |
616 } else { | |
617 throw new Error('First argument to llMessage:withVars:andCode must be a symbol or string'); | |
618 } | |
615 var rawvars = messages[i].args[1].expressions; | 619 var rawvars = messages[i].args[1].expressions; |
616 var vars = {}; | 620 var vars = {}; |
617 for(var v in rawvars) { | 621 for(var v in rawvars) { |
618 vars[rawvars[v].symbol.name] = rawvars[v].expression.toCTypeName(); | 622 vars[rawvars[v].symbol.name] = rawvars[v].expression.toCTypeName(); |
619 } | 623 } |
672 function makeInt(bits, unsigned) | 676 function makeInt(bits, unsigned) |
673 { | 677 { |
674 var typename = 'obj_' + (unsigned ? 'u' : '') + 'int' + bits; | 678 var typename = 'obj_' + (unsigned ? 'u' : '') + 'int' + bits; |
675 var intObj = new cObject(typename); | 679 var intObj = new cObject(typename); |
676 intObj.addProperty('num', null, (unsigned ? 'u' : '') + 'int' + bits +'_t'); | 680 intObj.addProperty('num', null, (unsigned ? 'u' : '') + 'int' + bits +'_t'); |
677 addBinaryOp(intObj, 'ADD_', '+', typename); | 681 addBinaryOp(intObj, '+', '+', typename); |
678 addBinaryOp(intObj, 'SUB_', '-', typename); | 682 addBinaryOp(intObj, '-', '-', typename); |
679 addBinaryOp(intObj, 'MUL_', '*', typename); | 683 addBinaryOp(intObj, '*', '*', typename); |
680 addBinaryOp(intObj, 'DIV_', '/', typename); | 684 addBinaryOp(intObj, '/', '/', typename); |
681 addBinaryOp(intObj, 'MOD_', '%', typename); | 685 addBinaryOp(intObj, '%', '%', typename); |
682 addBinaryOp(intObj, 'or', '|', typename); | 686 addBinaryOp(intObj, 'or', '|', typename); |
683 addBinaryOp(intObj, 'xor', '^', typename); | 687 addBinaryOp(intObj, 'xor', '^', typename); |
684 addBinaryOp(intObj, 'and', '&', typename); | 688 addBinaryOp(intObj, 'and', '&', typename); |
685 addBinaryOp(intObj, 'lshift:by', '<<', typename); | 689 addBinaryOp(intObj, 'lshift:by', '<<', typename); |
686 addBinaryOp(intObj, 'rshift:by', '>>', typename); | 690 addBinaryOp(intObj, 'rshift:by', '>>', typename); |
687 addCompOp(intObj, 'LT_', '<', typename); | 691 addCompOp(intObj, '<', '<', typename); |
688 addCompOp(intObj, 'GT_', '>', typename); | 692 addCompOp(intObj, '>', '>', typename); |
689 addCompOp(intObj, 'EQ_', '==', typename); | 693 addCompOp(intObj, '=', '==', typename); |
690 addCompOp(intObj, 'NEQ_', '!=', typename); | 694 addCompOp(intObj, '!=', '!=', typename); |
691 addCompOp(intObj, 'GEQ_', '>=', typename); | 695 addCompOp(intObj, '>=', '>=', typename); |
692 addCompOp(intObj, 'LEQ_', '<=', typename); | 696 addCompOp(intObj, '<=', '<=', typename); |
693 intObj.addInclude('<string.h>'); | 697 intObj.addInclude('<string.h>'); |
694 //-9223372036854775808 | 698 //-9223372036854775808 |
695 //01234567890123456789 | 699 //01234567890123456789 |
696 intObj.addMessage('string', { | 700 intObj.addMessage('string', { |
697 vars: {str: 'string *'}, | 701 vars: {str: 'string *'}, |