From e4680aeabc3bd188884a7c94bf797a890563db81 Mon Sep 17 00:00:00 2001 From: claudiol Date: Thu, 10 Jan 2019 13:03:13 -0500 Subject: [PATCH] Relocated :-> operator to the Enter key. Added | operator. --- firmware/hal_keyboard.c | 7 ++++++- newrpl/lib-56-symbolic.c | 34 ++++++++++++++++++++++++++++------ 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/firmware/hal_keyboard.c b/firmware/hal_keyboard.c index 0d8b113..f1f8491 100644 --- a/firmware/hal_keyboard.c +++ b/firmware/hal_keyboard.c @@ -4937,6 +4937,7 @@ DECLARE_SYMBKEYHANDLER(colon,":",0) DECLARE_SYMBKEYHANDLER(infinity,"∞",1) DECLARE_SYMBKEYHANDLER(undinfinity,"∞̅",1) DECLARE_SYMBKEYHANDLER(dot,".",0) +DECLARE_SYMBKEYHANDLER(giventhat,"|",0) @@ -6108,7 +6109,7 @@ const struct keyhandler_t const __keydefaulthandlers[]= { { KM_PRESS|KB_0|SHIFT_LS|SHIFT_ALPHA, CONTEXT_ANY,&infinityKeyHandler }, { KM_PRESS|KB_0|SHIFT_LS|SHIFT_LSHOLD|SHIFT_ALPHA, CONTEXT_ANY,&undinfinityKeyHandler }, { KM_PRESS|KB_0|SHIFT_RS, CONTEXT_ANY,&arrowKeyHandler }, - { KM_PRESS|KB_0|SHIFT_RS|SHIFT_RSHOLD, CONTEXT_ANY,KEYHANDLER_NAME(rulesep) }, + { KM_PRESS|KB_0|SHIFT_RS|SHIFT_RSHOLD, CONTEXT_ANY,&arrowKeyHandler }, { KM_PRESS|KB_0|SHIFT_RS|SHIFT_ALPHA, CONTEXT_ANY,&arrowKeyHandler }, { KM_PRESS|KB_0|SHIFT_RS|SHIFT_ALPHAHOLD, CONTEXT_ANY,&arrowKeyHandler }, { KM_PRESS|KB_SPC|SHIFT_RS, CONTEXT_ANY,&commaKeyHandler }, @@ -6142,6 +6143,10 @@ const struct keyhandler_t const __keydefaulthandlers[]= { { KM_LPRESS|KB_N, CONTEXT_ANY,&eval1KeyHandler }, { KM_PRESS|KB_ENT|SHIFT_RS, CONTEXT_ANY,&tonumKeyHandler }, { KM_PRESS|KB_ENT|SHIFT_RS|SHIFT_RSHOLD, CONTEXT_ANY,&tonumKeyHandler }, + { KM_PRESS|KB_ENT|SHIFT_LS, CONTEXT_ANY,KEYHANDLER_NAME(rulesep) }, + { KM_PRESS|KB_ENT|SHIFT_LS|SHIFT_LSHOLD, CONTEXT_ANY,KEYHANDLER_NAME(giventhat) }, + { KM_PRESS|KB_ENT|SHIFT_ALPHA|SHIFT_LS, CONTEXT_ANY,KEYHANDLER_NAME(rulesep) }, + { KM_PRESS|KB_ENT|SHIFT_ALPHA|SHIFT_LS|SHIFT_LSHOLD, CONTEXT_ANY,KEYHANDLER_NAME(giventhat) }, { KM_PRESS|KB_R, CONTEXT_ANY,&sqrtKeyHandler }, { KM_PRESS|KB_Q, CONTEXT_ANY,&powKeyHandler }, diff --git a/newrpl/lib-56-symbolic.c b/newrpl/lib-56-symbolic.c index e657f3d..a9e081a 100644 --- a/newrpl/lib-56-symbolic.c +++ b/newrpl/lib-56-symbolic.c @@ -29,7 +29,7 @@ // COMMAND NAME TEXT ARE GIVEN SEPARATEDLY #define COMMAND_LIST \ - ECMD(RULESEPARATOR,":→",MKTOKENINFO(2,TITYPE_BINARYOP_LEFT,2,14)), \ + ECMD(RULESEPARATOR,":→",MKTOKENINFO(2,TITYPE_BINARYOP_LEFT,2,16)), \ ECMD(OPENBRACKET,"(",MKTOKENINFO(1,TITYPE_OPENBRACKET,0,31)), \ ECMD(CLOSEBRACKET,")",MKTOKENINFO(1,TITYPE_CLOSEBRACKET,0,31)), \ ECMD(COMMA,"",MKTOKENINFO(1,TITYPE_COMMA,0,31)), \ @@ -47,10 +47,11 @@ CMD(RULEAPPLY,MKTOKENINFO(9,TITYPE_NOTALLOWED,2,2)), \ ECMD(TOFRACTION,"→Q",MKTOKENINFO(2,TITYPE_FUNCTION,1,2)), \ ECMD(SYMBEVAL1CHK,"",MKTOKENINFO(0,TITYPE_NOTALLOWED,1,2)), \ - ECMD(EQUATIONOPERATOR,"=",MKTOKENINFO(1,TITYPE_BINARYOP_LEFT,2,15)), \ + ECMD(EQUATIONOPERATOR,"=",MKTOKENINFO(1,TITYPE_BINARYOP_LEFT,2,14)), \ ECMD(LISTOPENBRACKET,"{",MKTOKENINFO(1,TITYPE_OPENBRACKET,0,31)), \ ECMD(LISTCLOSEBRACKET,"}",MKTOKENINFO(1,TITYPE_CLOSEBRACKET,0,31)), \ - CMD(RULEAPPLY1,MKTOKENINFO(10,TITYPE_NOTALLOWED,2,2)) + CMD(RULEAPPLY1,MKTOKENINFO(10,TITYPE_NOTALLOWED,2,2)), \ + ECMD(GIVENTHAT,"|",MKTOKENINFO(1,TITYPE_BINARYOP_LEFT,2,15)) // CMD(TEST,MKTOKENINFO(4,TITYPE_NOTALLOWED,1,2)) @@ -1136,7 +1137,10 @@ void LIB_HANDLER() } while(prevhash!=hash); - + // REORGANIZE THE EXPRESSION IN A WAY THAT'S OPTIMIZED FOR DISPLAY + WORDPTR newobj=rplSymbCanonicalForm(rplPeekData(1),1); + if(!newobj) return; + rplOverwriteData(1,newobj); return; @@ -1592,7 +1596,10 @@ void LIB_HANDLER() } - firstrule[-1]=rplPopData(); // REPLACE ORIGINAL EXPRESSION WITH RESULT + // REORGANIZE THE EXPRESSION IN A WAY THAT'S OPTIMIZED FOR DISPLAY + WORDPTR newobj=rplSymbCanonicalForm(rplPeekData(1),1); + if(!newobj) { DSTop=savestk; return; } + firstrule[-1]=newobj; // REPLACE ORIGINAL EXPRESSION WITH RESULT firstrule[0]=rplNewBINT(totalreplacements,DECBINT); DSTop=savestk; return; @@ -1682,7 +1689,10 @@ void LIB_HANDLER() // WE APPLIED ALL RULES - firstrule[-1]=rplPopData(); // REPLACE ORIGINAL EXPRESSION WITH RESULT + // REORGANIZE THE EXPRESSION IN A WAY THAT'S OPTIMIZED FOR DISPLAY + WORDPTR newobj=rplSymbCanonicalForm(rplPeekData(1),1); + if(!newobj) { DSTop=savestk; return; } + firstrule[-1]=newobj; // REPLACE ORIGINAL EXPRESSION WITH RESULT firstrule[0]=rplNewBINT(totalreplacements,DECBINT); DSTop=savestk; return; @@ -1831,6 +1841,9 @@ void LIB_HANDLER() return; } + case GIVENTHAT: + //@SHORT_DESC=@HIDE + return; // STANDARIZED OPCODES: // -------------------- @@ -1911,6 +1924,15 @@ void LIB_HANDLER() return; } + if(*tok=='|') { + if((TokenLen==1)&&(CurrentConstruct==MKPROLOG(DOSYMB,0))) { + // ISSUE A BUILDLIST OPERATOR + rplCompileAppend(MKOPCODE(LIBRARY_NUMBER,GIVENTHAT)); + RetNum=OK_CONTINUE; + } + else RetNum=ERR_NOTMINE; + return; + } }