From 8e235230a4c16a042d2620fa7b58a9b0f4ba1914 Mon Sep 17 00:00:00 2001 From: ukashanoor Date: Mon, 19 Jun 2017 10:42:03 +0530 Subject: after if and for --- macros/ASTManagement/%comment_string.bin | Bin 0 -> 780 bytes macros/ASTManagement/%cste_string.bin | Bin 0 -> 3484 bytes macros/ASTManagement/%equal_string.bin | Bin 0 -> 2152 bytes macros/ASTManagement/%for_string.bin | Bin 0 -> 2124 bytes macros/ASTManagement/%funcall_string.bin | Bin 0 -> 1748 bytes macros/ASTManagement/%ifthenel_string.bin | Bin 0 -> 3784 bytes macros/ASTManagement/%ifthenelse_string.bin | Bin 0 -> 3784 bytes macros/ASTManagement/%operatio_string.bin | Bin 0 -> 1352 bytes macros/ASTManagement/%operation_string.bin | Bin 0 -> 1352 bytes macros/ASTManagement/%program_p.bin | Bin 0 -> 520 bytes macros/ASTManagement/%program_string.bin | Bin 0 -> 3276 bytes macros/ASTManagement/%variable_string.bin | Bin 0 -> 3648 bytes macros/ASTManagement/%while_string.bin | Bin 0 -> 1972 bytes macros/ASTManagement/AST2Ccode.bin | Bin 0 -> 32736 bytes macros/ASTManagement/AST2Ccode.sci | 8 +- macros/ASTManagement/AST_CheckCommonInOutArgs.bin | Bin 0 -> 16824 bytes macros/ASTManagement/AST_CheckLastFunc.bin | Bin 0 -> 9164 bytes macros/ASTManagement/AST_CheckLineLength.bin | Bin 0 -> 3296 bytes macros/ASTManagement/AST_CheckPrecSpecifier.bin | Bin 0 -> 10864 bytes macros/ASTManagement/AST_DisplayStack.bin | Bin 0 -> 4704 bytes macros/ASTManagement/AST_ExtractNameAndScope.bin | Bin 0 -> 13184 bytes macros/ASTManagement/AST_GetASTFile.bin | Bin 0 -> 7216 bytes macros/ASTManagement/AST_GetFuncallPrm.bin | Bin 0 -> 6872 bytes macros/ASTManagement/AST_GetPrecAndLhsArg.bin | Bin 0 -> 12552 bytes macros/ASTManagement/AST_HandleEOL.bin | Bin 0 -> 11704 bytes macros/ASTManagement/AST_HandleEndFor.bin | Bin 0 -> 10452 bytes macros/ASTManagement/AST_HandleEndGenFun.bin | Bin 0 -> 100596 bytes macros/ASTManagement/AST_HandleEndGenFun.sci | 26 ++++- macros/ASTManagement/AST_HandleEndProgram.bin | Bin 0 -> 7968 bytes macros/ASTManagement/AST_HandleEndWhile.bin | Bin 0 -> 8984 bytes macros/ASTManagement/AST_HandleFor.bin | Bin 0 -> 12920 bytes macros/ASTManagement/AST_HandleForStatem.bin | Bin 0 -> 11348 bytes macros/ASTManagement/AST_HandleHeader.bin | Bin 0 -> 39132 bytes macros/ASTManagement/AST_HandleIfElse.bin | Bin 0 -> 12056 bytes macros/ASTManagement/AST_HandleIfElse.sci | 6 +- macros/ASTManagement/AST_HandleWhileExpr.bin | Bin 0 -> 12140 bytes macros/ASTManagement/AST_HandleWhileStatem.bin | Bin 0 -> 15548 bytes macros/ASTManagement/AST_HandleWhileStatem.sci | 60 ++++++------ macros/ASTManagement/AST_ParseEqualStruct.bin | Bin 0 -> 20312 bytes macros/ASTManagement/AST_ParseFuncallStruct.bin | Bin 0 -> 15024 bytes macros/ASTManagement/AST_ParseFuncallStruct.sci | 4 + macros/ASTManagement/AST_ParseIfExprStruct.bin | Bin 0 -> 16644 bytes macros/ASTManagement/AST_ParseIfExprStruct.sci | 44 +++++++-- macros/ASTManagement/AST_ParseOperStruct.bin | Bin 0 -> 16668 bytes macros/ASTManagement/AST_ParseOperStruct.sci | 11 +++ macros/ASTManagement/AST_PopASTStack.bin | Bin 0 -> 3896 bytes macros/ASTManagement/AST_PushASTStack.bin | Bin 0 -> 3300 bytes macros/ASTManagement/AST_ReadASTHeader.bin | Bin 0 -> 11288 bytes macros/ASTManagement/AST_ReadEqualRhsNames.bin | Bin 0 -> 6972 bytes macros/ASTManagement/GenOutArgNames.bin | Bin 0 -> 17208 bytes macros/ASTManagement/GenOutArgNames.sci | 110 ++++++++++++++-------- macros/ASTManagement/Operator2FunName.bin | Bin 0 -> 18584 bytes macros/ASTManagement/SciFile2ASTFile.bin | Bin 0 -> 4192 bytes macros/ASTManagement/_comment_string.bin | Bin 0 -> 780 bytes macros/ASTManagement/_cste_string.bin | Bin 0 -> 3484 bytes macros/ASTManagement/_equal_string.bin | Bin 0 -> 2152 bytes macros/ASTManagement/_for_string.bin | Bin 0 -> 2124 bytes macros/ASTManagement/_funcall_string.bin | Bin 0 -> 1748 bytes macros/ASTManagement/_ifthenel_string.bin | Bin 0 -> 3784 bytes macros/ASTManagement/_ifthenelse_string.bin | Bin 0 -> 3784 bytes macros/ASTManagement/_operatio_string.bin | Bin 0 -> 1352 bytes macros/ASTManagement/_operation_string.bin | Bin 0 -> 1352 bytes macros/ASTManagement/_program_p.bin | Bin 0 -> 520 bytes macros/ASTManagement/_program_string.bin | Bin 0 -> 3276 bytes macros/ASTManagement/_variable_string.bin | Bin 0 -> 3648 bytes macros/ASTManagement/_while_string.bin | Bin 0 -> 1972 bytes macros/ASTManagement/lib | Bin 4861 -> 1768 bytes macros/ASTManagement/objectlist2string.bin | Bin 0 -> 1384 bytes 68 files changed, 190 insertions(+), 79 deletions(-) create mode 100644 macros/ASTManagement/%comment_string.bin create mode 100644 macros/ASTManagement/%cste_string.bin create mode 100644 macros/ASTManagement/%equal_string.bin create mode 100644 macros/ASTManagement/%for_string.bin create mode 100644 macros/ASTManagement/%funcall_string.bin create mode 100644 macros/ASTManagement/%ifthenel_string.bin create mode 100644 macros/ASTManagement/%ifthenelse_string.bin create mode 100644 macros/ASTManagement/%operatio_string.bin create mode 100644 macros/ASTManagement/%operation_string.bin create mode 100644 macros/ASTManagement/%program_p.bin create mode 100644 macros/ASTManagement/%program_string.bin create mode 100644 macros/ASTManagement/%variable_string.bin create mode 100644 macros/ASTManagement/%while_string.bin create mode 100644 macros/ASTManagement/AST2Ccode.bin create mode 100644 macros/ASTManagement/AST_CheckCommonInOutArgs.bin create mode 100644 macros/ASTManagement/AST_CheckLastFunc.bin create mode 100644 macros/ASTManagement/AST_CheckLineLength.bin create mode 100644 macros/ASTManagement/AST_CheckPrecSpecifier.bin create mode 100644 macros/ASTManagement/AST_DisplayStack.bin create mode 100644 macros/ASTManagement/AST_ExtractNameAndScope.bin create mode 100644 macros/ASTManagement/AST_GetASTFile.bin create mode 100644 macros/ASTManagement/AST_GetFuncallPrm.bin create mode 100644 macros/ASTManagement/AST_GetPrecAndLhsArg.bin create mode 100644 macros/ASTManagement/AST_HandleEOL.bin create mode 100644 macros/ASTManagement/AST_HandleEndFor.bin create mode 100644 macros/ASTManagement/AST_HandleEndGenFun.bin create mode 100644 macros/ASTManagement/AST_HandleEndProgram.bin create mode 100644 macros/ASTManagement/AST_HandleEndWhile.bin create mode 100644 macros/ASTManagement/AST_HandleFor.bin create mode 100644 macros/ASTManagement/AST_HandleForStatem.bin create mode 100644 macros/ASTManagement/AST_HandleHeader.bin create mode 100644 macros/ASTManagement/AST_HandleIfElse.bin create mode 100644 macros/ASTManagement/AST_HandleWhileExpr.bin create mode 100644 macros/ASTManagement/AST_HandleWhileStatem.bin create mode 100644 macros/ASTManagement/AST_ParseEqualStruct.bin create mode 100644 macros/ASTManagement/AST_ParseFuncallStruct.bin create mode 100644 macros/ASTManagement/AST_ParseIfExprStruct.bin create mode 100644 macros/ASTManagement/AST_ParseOperStruct.bin create mode 100644 macros/ASTManagement/AST_PopASTStack.bin create mode 100644 macros/ASTManagement/AST_PushASTStack.bin create mode 100644 macros/ASTManagement/AST_ReadASTHeader.bin create mode 100644 macros/ASTManagement/AST_ReadEqualRhsNames.bin create mode 100644 macros/ASTManagement/GenOutArgNames.bin create mode 100644 macros/ASTManagement/Operator2FunName.bin create mode 100644 macros/ASTManagement/SciFile2ASTFile.bin create mode 100644 macros/ASTManagement/_comment_string.bin create mode 100644 macros/ASTManagement/_cste_string.bin create mode 100644 macros/ASTManagement/_equal_string.bin create mode 100644 macros/ASTManagement/_for_string.bin create mode 100644 macros/ASTManagement/_funcall_string.bin create mode 100644 macros/ASTManagement/_ifthenel_string.bin create mode 100644 macros/ASTManagement/_ifthenelse_string.bin create mode 100644 macros/ASTManagement/_operatio_string.bin create mode 100644 macros/ASTManagement/_operation_string.bin create mode 100644 macros/ASTManagement/_program_p.bin create mode 100644 macros/ASTManagement/_program_string.bin create mode 100644 macros/ASTManagement/_variable_string.bin create mode 100644 macros/ASTManagement/_while_string.bin create mode 100644 macros/ASTManagement/objectlist2string.bin (limited to 'macros/ASTManagement') diff --git a/macros/ASTManagement/%comment_string.bin b/macros/ASTManagement/%comment_string.bin new file mode 100644 index 00000000..fb894945 Binary files /dev/null and b/macros/ASTManagement/%comment_string.bin differ diff --git a/macros/ASTManagement/%cste_string.bin b/macros/ASTManagement/%cste_string.bin new file mode 100644 index 00000000..ba643c47 Binary files /dev/null and b/macros/ASTManagement/%cste_string.bin differ diff --git a/macros/ASTManagement/%equal_string.bin b/macros/ASTManagement/%equal_string.bin new file mode 100644 index 00000000..7f88fee6 Binary files /dev/null and b/macros/ASTManagement/%equal_string.bin differ diff --git a/macros/ASTManagement/%for_string.bin b/macros/ASTManagement/%for_string.bin new file mode 100644 index 00000000..c3fda16b Binary files /dev/null and b/macros/ASTManagement/%for_string.bin differ diff --git a/macros/ASTManagement/%funcall_string.bin b/macros/ASTManagement/%funcall_string.bin new file mode 100644 index 00000000..8354586d Binary files /dev/null and b/macros/ASTManagement/%funcall_string.bin differ diff --git a/macros/ASTManagement/%ifthenel_string.bin b/macros/ASTManagement/%ifthenel_string.bin new file mode 100644 index 00000000..1c6fa73d Binary files /dev/null and b/macros/ASTManagement/%ifthenel_string.bin differ diff --git a/macros/ASTManagement/%ifthenelse_string.bin b/macros/ASTManagement/%ifthenelse_string.bin new file mode 100644 index 00000000..456ffadc Binary files /dev/null and b/macros/ASTManagement/%ifthenelse_string.bin differ diff --git a/macros/ASTManagement/%operatio_string.bin b/macros/ASTManagement/%operatio_string.bin new file mode 100644 index 00000000..40abf6b2 Binary files /dev/null and b/macros/ASTManagement/%operatio_string.bin differ diff --git a/macros/ASTManagement/%operation_string.bin b/macros/ASTManagement/%operation_string.bin new file mode 100644 index 00000000..dfbeec96 Binary files /dev/null and b/macros/ASTManagement/%operation_string.bin differ diff --git a/macros/ASTManagement/%program_p.bin b/macros/ASTManagement/%program_p.bin new file mode 100644 index 00000000..216a38b2 Binary files /dev/null and b/macros/ASTManagement/%program_p.bin differ diff --git a/macros/ASTManagement/%program_string.bin b/macros/ASTManagement/%program_string.bin new file mode 100644 index 00000000..3a8fc95b Binary files /dev/null and b/macros/ASTManagement/%program_string.bin differ diff --git a/macros/ASTManagement/%variable_string.bin b/macros/ASTManagement/%variable_string.bin new file mode 100644 index 00000000..f81fd6e0 Binary files /dev/null and b/macros/ASTManagement/%variable_string.bin differ diff --git a/macros/ASTManagement/%while_string.bin b/macros/ASTManagement/%while_string.bin new file mode 100644 index 00000000..142189c6 Binary files /dev/null and b/macros/ASTManagement/%while_string.bin differ diff --git a/macros/ASTManagement/AST2Ccode.bin b/macros/ASTManagement/AST2Ccode.bin new file mode 100644 index 00000000..9daefb83 Binary files /dev/null and b/macros/ASTManagement/AST2Ccode.bin differ diff --git a/macros/ASTManagement/AST2Ccode.sci b/macros/ASTManagement/AST2Ccode.sci index 8076d7e2..73183f79 100644 --- a/macros/ASTManagement/AST2Ccode.sci +++ b/macros/ASTManagement/AST2Ccode.sci @@ -151,17 +151,21 @@ while ~meof(fidAST) AST_PushASTStack(treeline); case 'Lhs :' then SharedInfo.Equal.Lhs = 1; // 1 means that we are inside the Lhs block of the Equal + //if SharedInfo.Equal.NOutArg > 0 [EqualInArgName,EqualInArgScope,EqualNInArg] = AST_ReadEqualRhsNames(FileInfo,SharedInfo); - + SharedInfo.Equal.NInArg = EqualNInArg; + //end + // lengthNumber = length('Number_'); // if (part(EqualInArgScope,1:lengthNumber) == 'Number_') // SharedInfo.SkipNextEqual = 1 // end - SharedInfo.Equal.NInArg = EqualNInArg; + for tmpcnt = 1:SharedInfo.Equal.NInArg SharedInfo.Equal.InArg(tmpcnt).Name = EqualInArgName(tmpcnt); SharedInfo.Equal.InArg(tmpcnt).Scope = EqualInArgScope(tmpcnt); end + //end AST_PushASTStack(treeline); // ---------------- diff --git a/macros/ASTManagement/AST_CheckCommonInOutArgs.bin b/macros/ASTManagement/AST_CheckCommonInOutArgs.bin new file mode 100644 index 00000000..5c190ba3 Binary files /dev/null and b/macros/ASTManagement/AST_CheckCommonInOutArgs.bin differ diff --git a/macros/ASTManagement/AST_CheckLastFunc.bin b/macros/ASTManagement/AST_CheckLastFunc.bin new file mode 100644 index 00000000..9cac2273 Binary files /dev/null and b/macros/ASTManagement/AST_CheckLastFunc.bin differ diff --git a/macros/ASTManagement/AST_CheckLineLength.bin b/macros/ASTManagement/AST_CheckLineLength.bin new file mode 100644 index 00000000..db486797 Binary files /dev/null and b/macros/ASTManagement/AST_CheckLineLength.bin differ diff --git a/macros/ASTManagement/AST_CheckPrecSpecifier.bin b/macros/ASTManagement/AST_CheckPrecSpecifier.bin new file mode 100644 index 00000000..8e50397f Binary files /dev/null and b/macros/ASTManagement/AST_CheckPrecSpecifier.bin differ diff --git a/macros/ASTManagement/AST_DisplayStack.bin b/macros/ASTManagement/AST_DisplayStack.bin new file mode 100644 index 00000000..90cbcc74 Binary files /dev/null and b/macros/ASTManagement/AST_DisplayStack.bin differ diff --git a/macros/ASTManagement/AST_ExtractNameAndScope.bin b/macros/ASTManagement/AST_ExtractNameAndScope.bin new file mode 100644 index 00000000..1944d88b Binary files /dev/null and b/macros/ASTManagement/AST_ExtractNameAndScope.bin differ diff --git a/macros/ASTManagement/AST_GetASTFile.bin b/macros/ASTManagement/AST_GetASTFile.bin new file mode 100644 index 00000000..261430e5 Binary files /dev/null and b/macros/ASTManagement/AST_GetASTFile.bin differ diff --git a/macros/ASTManagement/AST_GetFuncallPrm.bin b/macros/ASTManagement/AST_GetFuncallPrm.bin new file mode 100644 index 00000000..37dbe771 Binary files /dev/null and b/macros/ASTManagement/AST_GetFuncallPrm.bin differ diff --git a/macros/ASTManagement/AST_GetPrecAndLhsArg.bin b/macros/ASTManagement/AST_GetPrecAndLhsArg.bin new file mode 100644 index 00000000..71e44cb1 Binary files /dev/null and b/macros/ASTManagement/AST_GetPrecAndLhsArg.bin differ diff --git a/macros/ASTManagement/AST_HandleEOL.bin b/macros/ASTManagement/AST_HandleEOL.bin new file mode 100644 index 00000000..3b6b3bd1 Binary files /dev/null and b/macros/ASTManagement/AST_HandleEOL.bin differ diff --git a/macros/ASTManagement/AST_HandleEndFor.bin b/macros/ASTManagement/AST_HandleEndFor.bin new file mode 100644 index 00000000..a6031b43 Binary files /dev/null and b/macros/ASTManagement/AST_HandleEndFor.bin differ diff --git a/macros/ASTManagement/AST_HandleEndGenFun.bin b/macros/ASTManagement/AST_HandleEndGenFun.bin new file mode 100644 index 00000000..6aab0b75 Binary files /dev/null and b/macros/ASTManagement/AST_HandleEndGenFun.bin differ diff --git a/macros/ASTManagement/AST_HandleEndGenFun.sci b/macros/ASTManagement/AST_HandleEndGenFun.sci index 5ff7181f..4de5d893 100644 --- a/macros/ASTManagement/AST_HandleEndGenFun.sci +++ b/macros/ASTManagement/AST_HandleEndGenFun.sci @@ -73,6 +73,14 @@ global STACKDEDUG // #RNU_RES_E [ASTFunName,InArg,NInArg,OutArg,NOutArg] = AST_GetFuncallPrm(FileInfo,SharedInfo,ASTFunType); NOutArg_mod = NOutArg + if ASTFunName == 'OpLogAnd' + AST_PushASTStack('&&'); + return ; + end + if ASTFunName == 'OpLogOr' + AST_PushASTStack('||'); + return; + end if(mtlb_strcmp(part(ASTFunName,1:2),'CV') == %T) SharedInfo.OpenCVUsed = %T; end @@ -119,6 +127,9 @@ NOutArg_mod = NOutArg // --- Read the function annotations. --- // -------------------------------------- // #RNU_RES_E + if ASTFunName == '%k' + ASTFunName='modk'; + end if (ASTFunName == 'OpEqual') FunTypeAnnot = ''; @@ -132,6 +143,7 @@ NOutArg_mod = NOutArg // --- Search for Equal Lhs and precision specifier to be applied to the current function. --- // ------------------------------------------------------------------------------------------- // #RNU_RES_E + PrintStringInfo(' no of out arguments' + string(NOutArg),ReportFileName,'file','y'); [LhsArg,NLhsArg,FunPrecSpecifier,SharedInfo] = AST_GetPrecAndLhsArg(OutArg,NOutArg,ASTFunName,FunTypeAnnot,FunSizeAnnot,ASTFunType,FileInfo,SharedInfo); //NUT: questa funzione contiene troppi parametri e mi sembra disordinata. @@ -329,8 +341,13 @@ NOutArg_mod = NOutArg OutArg(1).Name = string(OutArg(1).Value); elseif ((ASTFunName == 'double') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number')) OutArg(1).Name = string(OutArg(1).Value); + //elseif ASTFunName == 'disp' else [OutArg,SharedInfo] = GenOutArgNames(ASTFunName,InArg,NInArg,OutArg,NOutArg,LhsArg,NLhsArg,FileInfo,SharedInfo); + if ( ASTFunName == 'OpLogGt' | ASTFunName == 'OpLogLt' | ASTFunName == 'OpLogLe' | ASTFunName == 'OpLogGe' | ASTFunName == 'OpLogNe' | ASTFunName == 'OpLogEq') + PrintStringInfo(' returning back due logical function',ReportFileName,'file','y'); + return; + end end if ((ASTFunName == 'uint8') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number')) @@ -374,6 +391,8 @@ NOutArg_mod = NOutArg // Scope already set above. elseif (ASTFunName == 'double' & NInArg == 1 & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number')) // Scope already set above. + //elseif ASTFunName == 'disp' + //do nothing else OutArg = ST_AnalyzeScope(OutArg,NOutArg,FileInfo,SharedInfo); end @@ -392,6 +411,8 @@ NOutArg_mod = NOutArg //#RNUREM_ME A number is not inserted in the symbol table. elseif ((ASTFunName == 'double') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number')) //#RNUREM_ME A number is not inserted in the symbol table. + //elseif ASTFunName == 'disp' + //do nothing else ST_InsOutArg(OutArg,NOutArg,FileInfo,SharedInfo,'all'); end @@ -424,8 +445,9 @@ NOutArg_mod = NOutArg // -------------------------------------------- //#RNU_RES_E //disp(OutArg,InArg,ASTFunName) + CFunName = C_GenerateFunName(ASTFunName,InArg,NInArg,OutArg,NOutArg_mod); - + //#RNU_RES_B PrintStringInfo(' C Function Name: '+CFunName,ReportFileName,'file','y'); if(IsArduinoFunction(ASTFunName)) @@ -496,6 +518,8 @@ NOutArg_mod = NOutArg SharedInfo.SkipNextFun > 0 | ... ((sum(mtlb_strcmp(ASTFunName,SharedInfo.Annotations.DataPrec)) > 0) & (SharedInfo.SkipNextPrec == 1))) // Do nothing + //elseif ASTFunName == 'disp' + // Do nothing else AST_CheckCommonInOutArgs(InArg,NInArg,OutArg,NOutArg,ReportFileName); end diff --git a/macros/ASTManagement/AST_HandleEndProgram.bin b/macros/ASTManagement/AST_HandleEndProgram.bin new file mode 100644 index 00000000..5e02fdcd Binary files /dev/null and b/macros/ASTManagement/AST_HandleEndProgram.bin differ diff --git a/macros/ASTManagement/AST_HandleEndWhile.bin b/macros/ASTManagement/AST_HandleEndWhile.bin new file mode 100644 index 00000000..bafccbc2 Binary files /dev/null and b/macros/ASTManagement/AST_HandleEndWhile.bin differ diff --git a/macros/ASTManagement/AST_HandleFor.bin b/macros/ASTManagement/AST_HandleFor.bin new file mode 100644 index 00000000..27d44a12 Binary files /dev/null and b/macros/ASTManagement/AST_HandleFor.bin differ diff --git a/macros/ASTManagement/AST_HandleForStatem.bin b/macros/ASTManagement/AST_HandleForStatem.bin new file mode 100644 index 00000000..4839b049 Binary files /dev/null and b/macros/ASTManagement/AST_HandleForStatem.bin differ diff --git a/macros/ASTManagement/AST_HandleHeader.bin b/macros/ASTManagement/AST_HandleHeader.bin new file mode 100644 index 00000000..87ef763a Binary files /dev/null and b/macros/ASTManagement/AST_HandleHeader.bin differ diff --git a/macros/ASTManagement/AST_HandleIfElse.bin b/macros/ASTManagement/AST_HandleIfElse.bin new file mode 100644 index 00000000..d30e47b4 Binary files /dev/null and b/macros/ASTManagement/AST_HandleIfElse.bin differ diff --git a/macros/ASTManagement/AST_HandleIfElse.sci b/macros/ASTManagement/AST_HandleIfElse.sci index 5373adf6..2b549ed6 100644 --- a/macros/ASTManagement/AST_HandleIfElse.sci +++ b/macros/ASTManagement/AST_HandleIfElse.sci @@ -74,11 +74,13 @@ global STACKDEDUG // --------------------------------------------------- //#RNU_RES_E if (ASTIfExpType~='else') - [IfCondArg,NIfCondArg] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType); + [IfCondArg,NIfCondArg,Op,NOp] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType); else // "else" type doesn't contain any condition to test. IfCondArg = ''; NIfCondArg = 0; + Op = ''; + NOp = 0; end //#RNU_RES_B @@ -87,6 +89,6 @@ end // ----------------------------- // --- Generate the C code for if/elseif Expression. --- //#RNU_RES_E -SharedInfo = C_IfExpression(IfCondArg,NIfCondArg,ASTIfExpType,FileInfo,SharedInfo); +SharedInfo = C_IfExpression(IfCondArg,NIfCondArg,Op,NOp,ASTIfExpType,FileInfo,SharedInfo); endfunction diff --git a/macros/ASTManagement/AST_HandleWhileExpr.bin b/macros/ASTManagement/AST_HandleWhileExpr.bin new file mode 100644 index 00000000..5f3da2de Binary files /dev/null and b/macros/ASTManagement/AST_HandleWhileExpr.bin differ diff --git a/macros/ASTManagement/AST_HandleWhileStatem.bin b/macros/ASTManagement/AST_HandleWhileStatem.bin new file mode 100644 index 00000000..4f7704ea Binary files /dev/null and b/macros/ASTManagement/AST_HandleWhileStatem.bin differ diff --git a/macros/ASTManagement/AST_HandleWhileStatem.sci b/macros/ASTManagement/AST_HandleWhileStatem.sci index 79fb516d..d8c2f73c 100644 --- a/macros/ASTManagement/AST_HandleWhileStatem.sci +++ b/macros/ASTManagement/AST_HandleWhileStatem.sci @@ -36,6 +36,8 @@ global SCI2CSTACK global StackPosition; global STACKDEDUG +IfCondArg = []; +NIfCondArg = 0; // ------------------------------ // --- Check input arguments. --- @@ -70,36 +72,40 @@ PrintStringInfo(' Redirecting C code to: '+FileInfo.Funct(nxtscifunnumber).CPa // --- Generate C code. --- // ------------------------ //#RNU_RES_E -if(SharedInfo.WhileExpr.CondVar == '') - //#RNU_RES_B - // It means that we are handling something like while(a) or while(1) - // The while condition variable is generated by the HandleEndGenFun. - //#RNU_RES_E - - // --- Pop the name of the condition variable or number. --- - Pop1 = AST_PopASTStack(); - - [ArgName,ArgScope] = AST_ExtractNameAndScope(Pop1); - if (length(ArgName) == 0) - PrintStringInfo(' ',ReportFileName,'both','y'); - PrintStringInfo('SCI2CERROR: Expected while(variable) or while(number).','','stdout','y'); - PrintStringInfo('SCI2CERROR: Expected a variable or number in the AST while expression.','','stdout','y'); - PrintStringInfo('SCI2CERROR: Report this error to http://forge.scilab.org/index.php/p/scilab2c/issues/.','','stdout','y'); - PrintStringInfo(' ',ReportFileName,'both','y'); - error(9999, 'Expected a conditional variable in the while expression'); +flagendpop = 0; +IfExprField = AST_PopASTStack(); + +NOp=0; +Op=[]; +while (flagendpop == 0) + if (IfExprField~='') + if (IfExprField=='WhileExpression:') + flagendpop = 1; + // Pop Again the If tag from the AST. + IfExprField = AST_PopASTStack(); + elseif (IfExprField=='Operands:') + flagendpop = 0; + g = AST_PopASTStack(); + else + if (IfExprField=='&&' | IfExprField=='||') + NOp = NOp + 1; + Op(NOp) = IfExprField; + //PrintStringInfo('operators are '+Op(NOp),ReportFileName,'file','y'); + else + NIfCondArg = NIfCondArg + 1; + IfCondArg(NIfCondArg) = IfExprField; + end + //[IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField); + //[IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField); + end end + IfExprField = AST_PopASTStack(); + PrintStringInfo('operators are '+IfExprField,ReportFileName,'file','y'); +end - SharedInfo.WhileExpr.CondVar = ArgName; - //#RNU_RES_B - // --- Repush strings into the AST stack. --- - //#RNU_RES_E - - AST_PushASTStack(Pop1); +IfCondArg = SCI2Cflipud(IfCondArg); -elseif (SharedInfo.WhileExpr.DimCondVar > 0) - error(9999, 'Cannot manage while with matrix conditions'); -end -SharedInfo = C_WhileExpression(FileInfo,SharedInfo); +SharedInfo = C_WhileExpression(IfCondArg,NIfCondArg,Op,NOp,FileInfo,SharedInfo); // -------------------------- // --- Update SharedInfo. --- diff --git a/macros/ASTManagement/AST_ParseEqualStruct.bin b/macros/ASTManagement/AST_ParseEqualStruct.bin new file mode 100644 index 00000000..459c62e8 Binary files /dev/null and b/macros/ASTManagement/AST_ParseEqualStruct.bin differ diff --git a/macros/ASTManagement/AST_ParseFuncallStruct.bin b/macros/ASTManagement/AST_ParseFuncallStruct.bin new file mode 100644 index 00000000..1cbeb5c0 Binary files /dev/null and b/macros/ASTManagement/AST_ParseFuncallStruct.bin differ diff --git a/macros/ASTManagement/AST_ParseFuncallStruct.sci b/macros/ASTManagement/AST_ParseFuncallStruct.sci index 647a70d7..3c322dd5 100644 --- a/macros/ASTManagement/AST_ParseFuncallStruct.sci +++ b/macros/ASTManagement/AST_ParseFuncallStruct.sci @@ -87,6 +87,10 @@ NOutArg = eval(stripblanks(part(buffstring,10:length(buffstring)))); buffstring = AST_PopASTStack(); FunctionName = stripblanks(part(buffstring,12:length(buffstring))); +//if (FunctionName == 'disp') + // NOutArg = 0; +//end + // ------------------------------------- // --- Generate the InArg structure. --- // ------------------------------------- diff --git a/macros/ASTManagement/AST_ParseIfExprStruct.bin b/macros/ASTManagement/AST_ParseIfExprStruct.bin new file mode 100644 index 00000000..19ea5fe9 Binary files /dev/null and b/macros/ASTManagement/AST_ParseIfExprStruct.bin differ diff --git a/macros/ASTManagement/AST_ParseIfExprStruct.sci b/macros/ASTManagement/AST_ParseIfExprStruct.sci index a7da0128..3ed1b5b6 100644 --- a/macros/ASTManagement/AST_ParseIfExprStruct.sci +++ b/macros/ASTManagement/AST_ParseIfExprStruct.sci @@ -1,4 +1,4 @@ -function [IfCondArg,NIfCondArg] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType) +function [IfCondArg,NIfCondArg,Op,NOp] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType) // function [IfCondArg,NIfCondArg] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType) // ----------------------------------------------------------------- //#RNU_RES_B @@ -63,13 +63,26 @@ global STACKDEDUG // ------------------------------------ // --- Read if condition variables. --- // ------------------------------------ +//OutArgOld=[]; +//OutArgNew=[]; + +//for i = 1:3 + // OutArgOld(i)=AST_PopASTStack(); + //PrintStringInfo(' '+OutArgOld(i),ReportFileName,'file','y'); +//end +//x = AST_PopASTStack(); + +//OutArgNew = SCI2Cflipud(OutArgOld); + flagendpop = 0; IfExprField = AST_PopASTStack(); +PrintStringInfo(' '+IfExprField+' '+ASTIfExpType,ReportFileName,'file','y'); if (ASTIfExpType=='if') if (IfExprField=='Expression:') flagendpop = 1; // Pop Again the If tag from the AST. IfExprField = AST_PopASTStack(); + PrintStringInfo(' '+IfExprField,ReportFileName,'file','y'); end elseif (ASTIfExpType=='elseif') if (IfExprField=='Else If Expression') @@ -78,7 +91,8 @@ elseif (ASTIfExpType=='elseif') else error(9999, 'Unknown ASTIfExpType ""'+ASTIfExpType+'"".'); end - +NOp=0; +Op=[]; while (flagendpop == 0) if (IfExprField~='') if (ASTIfExpType=='if') @@ -86,23 +100,41 @@ while (flagendpop == 0) flagendpop = 1; // Pop Again the If tag from the AST. IfExprField = AST_PopASTStack(); + elseif (IfExprField=='Operands:') + flagendpop = 0; + g = AST_PopASTStack(); else + if (IfExprField=='&&' | IfExprField=='||') + NOp = NOp + 1; + Op(NOp) = IfExprField; + //PrintStringInfo('operators are '+Op(NOp),ReportFileName,'file','y'); + else NIfCondArg = NIfCondArg + 1; - [IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField); + IfCondArg(NIfCondArg) = IfExprField; + end + //[IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField); end elseif (ASTIfExpType=='elseif') if (IfExprField=='Else If Expression') flagendpop = 1; else - NIfCondArg = NIfCondArg + 1; - IfCondArg(NIfCondArg) = IfExprField; - [IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField); + if (IfExprField=='&&') + NOp = NOp + 1; + Op(NOp) = IfExprField; + else + NIfCondArg = NIfCondArg + 1; + IfCondArg(NIfCondArg) = IfExprField; + end + //[IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField); end end end IfExprField = AST_PopASTStack(); + PrintStringInfo('operators are '+IfExprField,ReportFileName,'file','y'); end +IfCondArg = SCI2Cflipud(IfCondArg); + //#RNU_RES_B // ------------------------------------------- // --- Print some info in the report file. --- diff --git a/macros/ASTManagement/AST_ParseOperStruct.bin b/macros/ASTManagement/AST_ParseOperStruct.bin new file mode 100644 index 00000000..e189cbc9 Binary files /dev/null and b/macros/ASTManagement/AST_ParseOperStruct.bin differ diff --git a/macros/ASTManagement/AST_ParseOperStruct.sci b/macros/ASTManagement/AST_ParseOperStruct.sci index a77317bd..903f0958 100644 --- a/macros/ASTManagement/AST_ParseOperStruct.sci +++ b/macros/ASTManagement/AST_ParseOperStruct.sci @@ -61,6 +61,17 @@ LabelFunctName = 'Operator: '; FunctionName = stripblanks(part(buffstring,length(LabelFunctName)+1:length(buffstring))); // Generate the proper function name. FunctionName = Operator2FunName(FunctionName); +PrintStringInfo(' '+FunctionName,ReportFileName,'file','y'); + +if (FunctionName == 'OpLogAnd' | FunctionName=='OpLogOr') + NInArg = 0; + NOutArg = 0; + InArg=[]; + //RhsField = AST_PopASTStack(); + //PrintStringInfo('hello'+RhsField,ReportFileName,'file','y'); + //RhsField = AST_PopASTStack(); + return ; +end // ------------------------------ // --- Read input parameters. --- diff --git a/macros/ASTManagement/AST_PopASTStack.bin b/macros/ASTManagement/AST_PopASTStack.bin new file mode 100644 index 00000000..f9b85d34 Binary files /dev/null and b/macros/ASTManagement/AST_PopASTStack.bin differ diff --git a/macros/ASTManagement/AST_PushASTStack.bin b/macros/ASTManagement/AST_PushASTStack.bin new file mode 100644 index 00000000..8fcd563c Binary files /dev/null and b/macros/ASTManagement/AST_PushASTStack.bin differ diff --git a/macros/ASTManagement/AST_ReadASTHeader.bin b/macros/ASTManagement/AST_ReadASTHeader.bin new file mode 100644 index 00000000..614231c4 Binary files /dev/null and b/macros/ASTManagement/AST_ReadASTHeader.bin differ diff --git a/macros/ASTManagement/AST_ReadEqualRhsNames.bin b/macros/ASTManagement/AST_ReadEqualRhsNames.bin new file mode 100644 index 00000000..a131c498 Binary files /dev/null and b/macros/ASTManagement/AST_ReadEqualRhsNames.bin differ diff --git a/macros/ASTManagement/GenOutArgNames.bin b/macros/ASTManagement/GenOutArgNames.bin new file mode 100644 index 00000000..2ebce86c Binary files /dev/null and b/macros/ASTManagement/GenOutArgNames.bin differ diff --git a/macros/ASTManagement/GenOutArgNames.sci b/macros/ASTManagement/GenOutArgNames.sci index 0e683835..7b62c794 100644 --- a/macros/ASTManagement/GenOutArgNames.sci +++ b/macros/ASTManagement/GenOutArgNames.sci @@ -32,6 +32,12 @@ SCI2CNInArgCheck(argn(2),9,9); nxtscifunname = SharedInfo.NextSCIFunName; nxtscifunnumber = SharedInfo.NextSCIFunNumber; ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName; + + +global SCI2CSTACK +global StackPosition; +global STACKDEDUG + // #RNU_RES_B PrintStringInfo(' Generating Out Arg names.',ReportFileName,'file','y'); // #RNU_RES_E @@ -43,47 +49,69 @@ OutArg = OldOutArg; // --------------------------------------------------------------------------------------- // At this step only the name of the output arguments can be generated. --- //#RNU_RES_E -if (NLhsArg > 0) - //#RNU_RES_B - // Use the equal Lhs names. - PrintStringInfo('Using Equal Lhs names.',ReportFileName,'file','y'); - //#RNU_RES_E - if (NLhsArg ~= NOutArg) - error(9999, 'NLhsArg='+string(NLhsArg)+' must be equal to NOutArg='+string(NOutArg)+'.'); - end - for counteroutputargs = 1:NOutArg - OutArg(counteroutputargs).Name=LhsArg(counteroutputargs).Name; - OutArg(counteroutputargs).Scope=LhsArg(counteroutputargs).Scope; - end +if (FunctionName ~= 'OpLogGt' & FunctionName ~= 'OpLogLt' & FunctionName ~= 'OpLogGe' & FunctionName ~= 'OpLogLe' & FunctionName ~= 'OpLogNe' & FunctionName ~= 'OpLogEq') + if (NLhsArg > 0) + //#RNU_RES_B + // Use the equal Lhs names. + PrintStringInfo('Using Equal Lhs names.',ReportFileName,'file','y'); + //#RNU_RES_E + if (NLhsArg ~= NOutArg) + error(9999, 'NLhsArg='+string(NLhsArg)+' must be equal to NOutArg='+string(NOutArg)+'.'); + end + for counteroutputargs = 1:NOutArg + OutArg(counteroutputargs).Name=LhsArg(counteroutputargs).Name; + OutArg(counteroutputargs).Scope=LhsArg(counteroutputargs).Scope; + end + else + //#RNU_RES_B + // Generate temporary variables. + PrintStringInfo('Generating temporary variables.',ReportFileName,'file','y'); + //#RNU_RES_E + if ((sum(mtlb_strcmp(FunctionName,SharedInfo.Annotations.DataPrec)) > 0) & ... + (SharedInfo.SkipNextPrec == 1)) + //#RNU_RES_B + PrintStringInfo(' Skipping code generating because already generated in the previous function.',ReportFileName,'file','y'); + //#RNU_RES_E + for counteroutputargs = 1:NOutArg + OutArg(counteroutputargs).Name = InArg(counteroutputargs).Name; + end + elseif (mtlb_strcmp(FunctionName,'OpEqual')) + // do nothing. + //NUT: verifica questa parte di codice. e' sicuro che se ho equal gli oldoutarg contengono gia' il nome? + else + for counteroutputargs = 1:NOutArg + if ((SharedInfo.ASTReader.EnableTempVarsReuse == 1) & ... + (length(SharedInfo.ASTReader.ReusableTempVars) > 0)) + TmpOutArgName = strcat([SharedInfo.ASTReader.TempVarsName,string(SharedInfo.ASTReader.ReusableTempVars(1))]); + SharedInfo.ASTReader.ReusableTempVars = SharedInfo.ASTReader.ReusableTempVars(2:$); + else + SharedInfo.ASTReader.UsedTempVars = SharedInfo.ASTReader.UsedTempVars + 1; + TmpOutArgName = strcat([SharedInfo.ASTReader.TempVarsName,string(SharedInfo.ASTReader.UsedTempVars)]); + end + OutArg(counteroutputargs).Name=TmpOutArgName; + end + end + end else - //#RNU_RES_B - // Generate temporary variables. - PrintStringInfo('Generating temporary variables.',ReportFileName,'file','y'); - //#RNU_RES_E - if ((sum(mtlb_strcmp(FunctionName,SharedInfo.Annotations.DataPrec)) > 0) & ... - (SharedInfo.SkipNextPrec == 1)) - //#RNU_RES_B - PrintStringInfo(' Skipping code generating because already generated in the previous function.',ReportFileName,'file','y'); - //#RNU_RES_E - for counteroutputargs = 1:NOutArg - OutArg(counteroutputargs).Name = InArg(counteroutputargs).Name; - end - elseif (mtlb_strcmp(FunctionName,'OpEqual')) - // do nothing. - //NUT: verifica questa parte di codice. e' sicuro che se ho equal gli oldoutarg contengono gia' il nome? - else - for counteroutputargs = 1:NOutArg - if ((SharedInfo.ASTReader.EnableTempVarsReuse == 1) & ... - (length(SharedInfo.ASTReader.ReusableTempVars) > 0)) - TmpOutArgName = strcat([SharedInfo.ASTReader.TempVarsName,string(SharedInfo.ASTReader.ReusableTempVars(1))]); - SharedInfo.ASTReader.ReusableTempVars = SharedInfo.ASTReader.ReusableTempVars(2:$); - else - SharedInfo.ASTReader.UsedTempVars = SharedInfo.ASTReader.UsedTempVars + 1; - TmpOutArgName = strcat([SharedInfo.ASTReader.TempVarsName,string(SharedInfo.ASTReader.UsedTempVars)]); - end - OutArg(counteroutputargs).Name=TmpOutArgName; - end - end + for counterinputargs = 1:NInArg + tmppushstack=InArg(counterinputargs).Name; + PrintStringInfo(' Pushing in the AST stack: ""'+tmppushstack+'"".',ReportFileName,'file','y'); + AST_PushASTStack(tmppushstack); + if FunctionName=='OpLogGt' + AST_PushASTStack('>'); + elseif FunctionName=='OpLogGe' + AST_PushASTStack('>='); + elseif FunctionName=='OpLogLt' + AST_PushASTStack('<'); + elseif FunctionName=='OpLogLe' + AST_PushASTStack('<='); + elseif FunctionName=='OpLogEq' + AST_PushASTStack('=='); + elseif FunctionName=='OpLogNe' + AST_PushASTStack('!='); + end + end + s = AST_PopASTStack(); + PrintStringInfo(' Pushing in the AST stack: ""'+s+'"".',ReportFileName,'file','y'); end - endfunction diff --git a/macros/ASTManagement/Operator2FunName.bin b/macros/ASTManagement/Operator2FunName.bin new file mode 100644 index 00000000..884c99bc Binary files /dev/null and b/macros/ASTManagement/Operator2FunName.bin differ diff --git a/macros/ASTManagement/SciFile2ASTFile.bin b/macros/ASTManagement/SciFile2ASTFile.bin new file mode 100644 index 00000000..be8bc0d5 Binary files /dev/null and b/macros/ASTManagement/SciFile2ASTFile.bin differ diff --git a/macros/ASTManagement/_comment_string.bin b/macros/ASTManagement/_comment_string.bin new file mode 100644 index 00000000..fb894945 Binary files /dev/null and b/macros/ASTManagement/_comment_string.bin differ diff --git a/macros/ASTManagement/_cste_string.bin b/macros/ASTManagement/_cste_string.bin new file mode 100644 index 00000000..ba643c47 Binary files /dev/null and b/macros/ASTManagement/_cste_string.bin differ diff --git a/macros/ASTManagement/_equal_string.bin b/macros/ASTManagement/_equal_string.bin new file mode 100644 index 00000000..7f88fee6 Binary files /dev/null and b/macros/ASTManagement/_equal_string.bin differ diff --git a/macros/ASTManagement/_for_string.bin b/macros/ASTManagement/_for_string.bin new file mode 100644 index 00000000..c3fda16b Binary files /dev/null and b/macros/ASTManagement/_for_string.bin differ diff --git a/macros/ASTManagement/_funcall_string.bin b/macros/ASTManagement/_funcall_string.bin new file mode 100644 index 00000000..8354586d Binary files /dev/null and b/macros/ASTManagement/_funcall_string.bin differ diff --git a/macros/ASTManagement/_ifthenel_string.bin b/macros/ASTManagement/_ifthenel_string.bin new file mode 100644 index 00000000..1c6fa73d Binary files /dev/null and b/macros/ASTManagement/_ifthenel_string.bin differ diff --git a/macros/ASTManagement/_ifthenelse_string.bin b/macros/ASTManagement/_ifthenelse_string.bin new file mode 100644 index 00000000..456ffadc Binary files /dev/null and b/macros/ASTManagement/_ifthenelse_string.bin differ diff --git a/macros/ASTManagement/_operatio_string.bin b/macros/ASTManagement/_operatio_string.bin new file mode 100644 index 00000000..40abf6b2 Binary files /dev/null and b/macros/ASTManagement/_operatio_string.bin differ diff --git a/macros/ASTManagement/_operation_string.bin b/macros/ASTManagement/_operation_string.bin new file mode 100644 index 00000000..dfbeec96 Binary files /dev/null and b/macros/ASTManagement/_operation_string.bin differ diff --git a/macros/ASTManagement/_program_p.bin b/macros/ASTManagement/_program_p.bin new file mode 100644 index 00000000..216a38b2 Binary files /dev/null and b/macros/ASTManagement/_program_p.bin differ diff --git a/macros/ASTManagement/_program_string.bin b/macros/ASTManagement/_program_string.bin new file mode 100644 index 00000000..3a8fc95b Binary files /dev/null and b/macros/ASTManagement/_program_string.bin differ diff --git a/macros/ASTManagement/_variable_string.bin b/macros/ASTManagement/_variable_string.bin new file mode 100644 index 00000000..f81fd6e0 Binary files /dev/null and b/macros/ASTManagement/_variable_string.bin differ diff --git a/macros/ASTManagement/_while_string.bin b/macros/ASTManagement/_while_string.bin new file mode 100644 index 00000000..142189c6 Binary files /dev/null and b/macros/ASTManagement/_while_string.bin differ diff --git a/macros/ASTManagement/lib b/macros/ASTManagement/lib index 67ea09be..42ffc2a7 100644 Binary files a/macros/ASTManagement/lib and b/macros/ASTManagement/lib differ diff --git a/macros/ASTManagement/objectlist2string.bin b/macros/ASTManagement/objectlist2string.bin new file mode 100644 index 00000000..96159f22 Binary files /dev/null and b/macros/ASTManagement/objectlist2string.bin differ -- cgit