mirror of
https://git.code.sf.net/p/newrpl/sources
synced 2024-09-29 17:36:57 +02:00
Fixed bug in expression compiler.
This commit is contained in:
parent
60f49fdc83
commit
1d2beb567d
5 changed files with 11 additions and 11 deletions
|
@ -6668,7 +6668,7 @@ void halDeferProcess(void (*function)(void))
|
|||
{
|
||||
int k;
|
||||
for(k=0;k<3;++k) {
|
||||
if(halProcesses[k]==0) halProcesses[k]=function; break;
|
||||
if(halProcesses[k]==0) { halProcesses[k]=function; break; }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -299,8 +299,8 @@ RESOURCES += \
|
|||
|
||||
|
||||
|
||||
# Clang doesn't like double const specifiers, but are needed for firmware: disable the warning
|
||||
clang: QMAKE_CFLAGS += -Wno-duplicate-decl-specifier
|
||||
# gcc and Clang don't like double const specifiers, but are needed for firmware: disable the warning
|
||||
QMAKE_CFLAGS += -Wno-duplicate-decl-specifier
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1330,7 +1330,7 @@ end_of_expression:
|
|||
else
|
||||
if(*(InfixOpTop-6)==(CMD_OVR_POW)) {
|
||||
// ALWAYS PARENTHESIZE THE ARGUMENTS OF POWER
|
||||
if((TI_TYPE(*(InfixOpTop-1))!=TITYPE_FUNCTION)&&(TI_TYPE(*(InfixOpTop-1))!=TITYPE_CUSTOMFUNC))
|
||||
if((TI_TYPE(*(InfixOpTop-1))!=TITYPE_FUNCTION)&&(TI_TYPE(*(InfixOpTop-1))!=TITYPE_CUSTOMFUNC)&&(TI_TYPE(RetNum)!=TITYPE_OPENBRACKET))
|
||||
rplDecompAppendChar('(');
|
||||
|
||||
}
|
||||
|
@ -1342,14 +1342,14 @@ end_of_expression:
|
|||
if(TI_PRECEDENCE(*(InfixOpTop-5))==TI_PRECEDENCE(RetNum)) {
|
||||
// ALWAYS ADD PARENTHESIS, EXCEPT FOR MUL AND ADD
|
||||
if( (*DecompileObject!=(CMD_OVR_MUL)) && (*DecompileObject!=(CMD_OVR_ADD))) {
|
||||
if((TI_TYPE(*(InfixOpTop-5))!=TITYPE_FUNCTION)&&(TI_TYPE(*(InfixOpTop-5))!=TITYPE_CUSTOMFUNC)) // DO NOT ADD PARENTHESIS TO FUNCTION ARGUMENTS!
|
||||
if((TI_TYPE(*(InfixOpTop-5))!=TITYPE_FUNCTION)&&(TI_TYPE(*(InfixOpTop-5))!=TITYPE_CUSTOMFUNC)&&(TI_TYPE(RetNum)!=TITYPE_OPENBRACKET)) // DO NOT ADD PARENTHESIS TO FUNCTION ARGUMENTS! OR BRACKET-TYPE DELIMITERS
|
||||
rplDecompAppendChar('(');
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
if(TI_PRECEDENCE(*(InfixOpTop-5))<TI_PRECEDENCE(RetNum)) {
|
||||
if((TI_TYPE(*(InfixOpTop-5))!=TITYPE_FUNCTION)&&(TI_TYPE(*(InfixOpTop-5))!=TITYPE_CUSTOMFUNC)) // DO NOT ADD PARENTHESIS TO FUNCTION ARGUMENTS!
|
||||
if((TI_TYPE(*(InfixOpTop-5))!=TITYPE_FUNCTION)&&(TI_TYPE(*(InfixOpTop-5))!=TITYPE_CUSTOMFUNC)&&(TI_TYPE(RetNum)!=TITYPE_OPENBRACKET)) // DO NOT ADD PARENTHESIS TO FUNCTION ARGUMENTS! OR BRACKET-TYPE DELIMITERS
|
||||
rplDecompAppendChar('(');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1194,7 +1194,7 @@ WORD rplGetIdentProp(WORDPTR ident)
|
|||
BYTEPTR ptr=(BYTEPTR)(ident+1);
|
||||
BYTEPTR end=(BYTEPTR)rplSkipOb(ident);
|
||||
|
||||
if(IDENTHASATTR(ident)) end-=4;
|
||||
if(IDENTHASATTR(*ident)) end-=4;
|
||||
while(end[-1]==0) --end;
|
||||
|
||||
// FIND THE TRIPLE DOT SEPARATOR
|
||||
|
@ -1213,7 +1213,7 @@ WORDPTR rplMakeIdentNoProps(WORDPTR ident)
|
|||
BYTEPTR ptr=(BYTEPTR)(ident+1);
|
||||
BYTEPTR start=ptr,end=(BYTEPTR)rplSkipOb(ident);
|
||||
|
||||
if(IDENTHASATTR(ident)) end-=4;
|
||||
if(IDENTHASATTR(*ident)) end-=4;
|
||||
while(end[-1]==0) --end;
|
||||
|
||||
// FIND THE TRIPLE DOT SEPARATOR
|
||||
|
@ -1494,7 +1494,7 @@ for(k=0;k<oldnum;++k)
|
|||
}
|
||||
|
||||
|
||||
}
|
||||
} else hasdepend=0;
|
||||
}
|
||||
else {
|
||||
// THIS DEPENDENCY TREE WAS BROKEN,CHECK IF WE SHOULD ADD THE DEPENDENCY
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
#define COMMAND_LIST \
|
||||
ECMD(RULESEPARATOR,":→",MKTOKENINFO(2,TITYPE_BINARYOP_LEFT,2,14)), \
|
||||
ECMD(OPENBRACKET,"(",MKTOKENINFO(1,TITYPE_OPENBRACKET,0,1)), \
|
||||
ECMD(OPENBRACKET,"(",MKTOKENINFO(1,TITYPE_OPENBRACKET,0,31)), \
|
||||
ECMD(CLOSEBRACKET,")",MKTOKENINFO(1,TITYPE_CLOSEBRACKET,0,31)), \
|
||||
ECMD(COMMA,"",MKTOKENINFO(1,TITYPE_COMMA,0,31)), \
|
||||
ECMD(SYMBEVALPRE,"",MKTOKENINFO(0,TITYPE_NOTALLOWED,1,2)), \
|
||||
|
@ -48,7 +48,7 @@
|
|||
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(LISTOPENBRACKET,"{",MKTOKENINFO(1,TITYPE_OPENBRACKET,0,1)), \
|
||||
ECMD(LISTOPENBRACKET,"{",MKTOKENINFO(1,TITYPE_OPENBRACKET,0,31)), \
|
||||
ECMD(LISTCLOSEBRACKET,"}",MKTOKENINFO(1,TITYPE_CLOSEBRACKET,0,31))
|
||||
|
||||
// CMD(TEST,MKTOKENINFO(4,TITYPE_NOTALLOWED,1,2))
|
||||
|
|
Loading…
Reference in a new issue