summaryrefslogtreecommitdiff
path: root/macros/ASTManagement
diff options
context:
space:
mode:
Diffstat (limited to 'macros/ASTManagement')
-rw-r--r--macros/ASTManagement/%comment_string.binbin0 -> 780 bytes
-rw-r--r--macros/ASTManagement/%cste_string.binbin0 -> 3484 bytes
-rw-r--r--macros/ASTManagement/%equal_string.binbin0 -> 2152 bytes
-rw-r--r--macros/ASTManagement/%for_string.binbin0 -> 2124 bytes
-rw-r--r--macros/ASTManagement/%funcall_string.binbin0 -> 1748 bytes
-rw-r--r--macros/ASTManagement/%ifthenel_string.binbin0 -> 3784 bytes
-rw-r--r--macros/ASTManagement/%ifthenelse_string.binbin0 -> 3784 bytes
-rw-r--r--macros/ASTManagement/%operatio_string.binbin0 -> 1352 bytes
-rw-r--r--macros/ASTManagement/%operation_string.binbin0 -> 1352 bytes
-rw-r--r--macros/ASTManagement/%program_p.binbin0 -> 520 bytes
-rw-r--r--macros/ASTManagement/%program_string.binbin0 -> 3276 bytes
-rw-r--r--macros/ASTManagement/%variable_string.binbin0 -> 3648 bytes
-rw-r--r--macros/ASTManagement/%while_string.binbin0 -> 1972 bytes
-rw-r--r--macros/ASTManagement/AST2Ccode.binbin0 -> 32736 bytes
-rw-r--r--macros/ASTManagement/AST2Ccode.sci8
-rw-r--r--macros/ASTManagement/AST_CheckCommonInOutArgs.binbin0 -> 16824 bytes
-rw-r--r--macros/ASTManagement/AST_CheckLastFunc.binbin0 -> 9164 bytes
-rw-r--r--macros/ASTManagement/AST_CheckLineLength.binbin0 -> 3296 bytes
-rw-r--r--macros/ASTManagement/AST_CheckPrecSpecifier.binbin0 -> 10864 bytes
-rw-r--r--macros/ASTManagement/AST_DisplayStack.binbin0 -> 4704 bytes
-rw-r--r--macros/ASTManagement/AST_ExtractNameAndScope.binbin0 -> 13184 bytes
-rw-r--r--macros/ASTManagement/AST_GetASTFile.binbin0 -> 7216 bytes
-rw-r--r--macros/ASTManagement/AST_GetFuncallPrm.binbin0 -> 6872 bytes
-rw-r--r--macros/ASTManagement/AST_GetPrecAndLhsArg.binbin0 -> 12552 bytes
-rw-r--r--macros/ASTManagement/AST_HandleEOL.binbin0 -> 11704 bytes
-rw-r--r--macros/ASTManagement/AST_HandleEndFor.binbin0 -> 10452 bytes
-rw-r--r--macros/ASTManagement/AST_HandleEndGenFun.binbin0 -> 100596 bytes
-rw-r--r--macros/ASTManagement/AST_HandleEndGenFun.sci26
-rw-r--r--macros/ASTManagement/AST_HandleEndProgram.binbin0 -> 7968 bytes
-rw-r--r--macros/ASTManagement/AST_HandleEndWhile.binbin0 -> 8984 bytes
-rw-r--r--macros/ASTManagement/AST_HandleFor.binbin0 -> 12920 bytes
-rw-r--r--macros/ASTManagement/AST_HandleForStatem.binbin0 -> 11348 bytes
-rw-r--r--macros/ASTManagement/AST_HandleHeader.binbin0 -> 39132 bytes
-rw-r--r--macros/ASTManagement/AST_HandleIfElse.binbin0 -> 12056 bytes
-rw-r--r--macros/ASTManagement/AST_HandleIfElse.sci6
-rw-r--r--macros/ASTManagement/AST_HandleWhileExpr.binbin0 -> 12140 bytes
-rw-r--r--macros/ASTManagement/AST_HandleWhileStatem.binbin0 -> 15548 bytes
-rw-r--r--macros/ASTManagement/AST_HandleWhileStatem.sci60
-rw-r--r--macros/ASTManagement/AST_ParseEqualStruct.binbin0 -> 20312 bytes
-rw-r--r--macros/ASTManagement/AST_ParseFuncallStruct.binbin0 -> 15024 bytes
-rw-r--r--macros/ASTManagement/AST_ParseFuncallStruct.sci4
-rw-r--r--macros/ASTManagement/AST_ParseIfExprStruct.binbin0 -> 16644 bytes
-rw-r--r--macros/ASTManagement/AST_ParseIfExprStruct.sci44
-rw-r--r--macros/ASTManagement/AST_ParseOperStruct.binbin0 -> 16668 bytes
-rw-r--r--macros/ASTManagement/AST_ParseOperStruct.sci11
-rw-r--r--macros/ASTManagement/AST_PopASTStack.binbin0 -> 3896 bytes
-rw-r--r--macros/ASTManagement/AST_PushASTStack.binbin0 -> 3300 bytes
-rw-r--r--macros/ASTManagement/AST_ReadASTHeader.binbin0 -> 11288 bytes
-rw-r--r--macros/ASTManagement/AST_ReadEqualRhsNames.binbin0 -> 6972 bytes
-rw-r--r--macros/ASTManagement/GenOutArgNames.binbin0 -> 17208 bytes
-rw-r--r--macros/ASTManagement/GenOutArgNames.sci110
-rw-r--r--macros/ASTManagement/Operator2FunName.binbin0 -> 18584 bytes
-rw-r--r--macros/ASTManagement/SciFile2ASTFile.binbin0 -> 4192 bytes
-rw-r--r--macros/ASTManagement/_comment_string.binbin0 -> 780 bytes
-rw-r--r--macros/ASTManagement/_cste_string.binbin0 -> 3484 bytes
-rw-r--r--macros/ASTManagement/_equal_string.binbin0 -> 2152 bytes
-rw-r--r--macros/ASTManagement/_for_string.binbin0 -> 2124 bytes
-rw-r--r--macros/ASTManagement/_funcall_string.binbin0 -> 1748 bytes
-rw-r--r--macros/ASTManagement/_ifthenel_string.binbin0 -> 3784 bytes
-rw-r--r--macros/ASTManagement/_ifthenelse_string.binbin0 -> 3784 bytes
-rw-r--r--macros/ASTManagement/_operatio_string.binbin0 -> 1352 bytes
-rw-r--r--macros/ASTManagement/_operation_string.binbin0 -> 1352 bytes
-rw-r--r--macros/ASTManagement/_program_p.binbin0 -> 520 bytes
-rw-r--r--macros/ASTManagement/_program_string.binbin0 -> 3276 bytes
-rw-r--r--macros/ASTManagement/_variable_string.binbin0 -> 3648 bytes
-rw-r--r--macros/ASTManagement/_while_string.binbin0 -> 1972 bytes
-rw-r--r--macros/ASTManagement/libbin4861 -> 1768 bytes
-rw-r--r--macros/ASTManagement/objectlist2string.binbin0 -> 1384 bytes
68 files changed, 190 insertions, 79 deletions
diff --git a/macros/ASTManagement/%comment_string.bin b/macros/ASTManagement/%comment_string.bin
new file mode 100644
index 0000000..fb89494
--- /dev/null
+++ b/macros/ASTManagement/%comment_string.bin
Binary files differ
diff --git a/macros/ASTManagement/%cste_string.bin b/macros/ASTManagement/%cste_string.bin
new file mode 100644
index 0000000..ba643c4
--- /dev/null
+++ b/macros/ASTManagement/%cste_string.bin
Binary files differ
diff --git a/macros/ASTManagement/%equal_string.bin b/macros/ASTManagement/%equal_string.bin
new file mode 100644
index 0000000..7f88fee
--- /dev/null
+++ b/macros/ASTManagement/%equal_string.bin
Binary files differ
diff --git a/macros/ASTManagement/%for_string.bin b/macros/ASTManagement/%for_string.bin
new file mode 100644
index 0000000..c3fda16
--- /dev/null
+++ b/macros/ASTManagement/%for_string.bin
Binary files differ
diff --git a/macros/ASTManagement/%funcall_string.bin b/macros/ASTManagement/%funcall_string.bin
new file mode 100644
index 0000000..8354586
--- /dev/null
+++ b/macros/ASTManagement/%funcall_string.bin
Binary files differ
diff --git a/macros/ASTManagement/%ifthenel_string.bin b/macros/ASTManagement/%ifthenel_string.bin
new file mode 100644
index 0000000..1c6fa73
--- /dev/null
+++ b/macros/ASTManagement/%ifthenel_string.bin
Binary files differ
diff --git a/macros/ASTManagement/%ifthenelse_string.bin b/macros/ASTManagement/%ifthenelse_string.bin
new file mode 100644
index 0000000..456ffad
--- /dev/null
+++ b/macros/ASTManagement/%ifthenelse_string.bin
Binary files differ
diff --git a/macros/ASTManagement/%operatio_string.bin b/macros/ASTManagement/%operatio_string.bin
new file mode 100644
index 0000000..40abf6b
--- /dev/null
+++ b/macros/ASTManagement/%operatio_string.bin
Binary files differ
diff --git a/macros/ASTManagement/%operation_string.bin b/macros/ASTManagement/%operation_string.bin
new file mode 100644
index 0000000..dfbeec9
--- /dev/null
+++ b/macros/ASTManagement/%operation_string.bin
Binary files differ
diff --git a/macros/ASTManagement/%program_p.bin b/macros/ASTManagement/%program_p.bin
new file mode 100644
index 0000000..216a38b
--- /dev/null
+++ b/macros/ASTManagement/%program_p.bin
Binary files differ
diff --git a/macros/ASTManagement/%program_string.bin b/macros/ASTManagement/%program_string.bin
new file mode 100644
index 0000000..3a8fc95
--- /dev/null
+++ b/macros/ASTManagement/%program_string.bin
Binary files differ
diff --git a/macros/ASTManagement/%variable_string.bin b/macros/ASTManagement/%variable_string.bin
new file mode 100644
index 0000000..f81fd6e
--- /dev/null
+++ b/macros/ASTManagement/%variable_string.bin
Binary files differ
diff --git a/macros/ASTManagement/%while_string.bin b/macros/ASTManagement/%while_string.bin
new file mode 100644
index 0000000..142189c
--- /dev/null
+++ b/macros/ASTManagement/%while_string.bin
Binary files differ
diff --git a/macros/ASTManagement/AST2Ccode.bin b/macros/ASTManagement/AST2Ccode.bin
new file mode 100644
index 0000000..9daefb8
--- /dev/null
+++ b/macros/ASTManagement/AST2Ccode.bin
Binary files differ
diff --git a/macros/ASTManagement/AST2Ccode.sci b/macros/ASTManagement/AST2Ccode.sci
index 8076d7e..73183f7 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 0000000..5c190ba
--- /dev/null
+++ b/macros/ASTManagement/AST_CheckCommonInOutArgs.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_CheckLastFunc.bin b/macros/ASTManagement/AST_CheckLastFunc.bin
new file mode 100644
index 0000000..9cac227
--- /dev/null
+++ b/macros/ASTManagement/AST_CheckLastFunc.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_CheckLineLength.bin b/macros/ASTManagement/AST_CheckLineLength.bin
new file mode 100644
index 0000000..db48679
--- /dev/null
+++ b/macros/ASTManagement/AST_CheckLineLength.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_CheckPrecSpecifier.bin b/macros/ASTManagement/AST_CheckPrecSpecifier.bin
new file mode 100644
index 0000000..8e50397
--- /dev/null
+++ b/macros/ASTManagement/AST_CheckPrecSpecifier.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_DisplayStack.bin b/macros/ASTManagement/AST_DisplayStack.bin
new file mode 100644
index 0000000..90cbcc7
--- /dev/null
+++ b/macros/ASTManagement/AST_DisplayStack.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_ExtractNameAndScope.bin b/macros/ASTManagement/AST_ExtractNameAndScope.bin
new file mode 100644
index 0000000..1944d88
--- /dev/null
+++ b/macros/ASTManagement/AST_ExtractNameAndScope.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_GetASTFile.bin b/macros/ASTManagement/AST_GetASTFile.bin
new file mode 100644
index 0000000..261430e
--- /dev/null
+++ b/macros/ASTManagement/AST_GetASTFile.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_GetFuncallPrm.bin b/macros/ASTManagement/AST_GetFuncallPrm.bin
new file mode 100644
index 0000000..37dbe77
--- /dev/null
+++ b/macros/ASTManagement/AST_GetFuncallPrm.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_GetPrecAndLhsArg.bin b/macros/ASTManagement/AST_GetPrecAndLhsArg.bin
new file mode 100644
index 0000000..71e44cb
--- /dev/null
+++ b/macros/ASTManagement/AST_GetPrecAndLhsArg.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleEOL.bin b/macros/ASTManagement/AST_HandleEOL.bin
new file mode 100644
index 0000000..3b6b3bd
--- /dev/null
+++ b/macros/ASTManagement/AST_HandleEOL.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleEndFor.bin b/macros/ASTManagement/AST_HandleEndFor.bin
new file mode 100644
index 0000000..a6031b4
--- /dev/null
+++ b/macros/ASTManagement/AST_HandleEndFor.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleEndGenFun.bin b/macros/ASTManagement/AST_HandleEndGenFun.bin
new file mode 100644
index 0000000..6aab0b7
--- /dev/null
+++ b/macros/ASTManagement/AST_HandleEndGenFun.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleEndGenFun.sci b/macros/ASTManagement/AST_HandleEndGenFun.sci
index 5ff7181..4de5d89 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 0000000..5e02fdc
--- /dev/null
+++ b/macros/ASTManagement/AST_HandleEndProgram.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleEndWhile.bin b/macros/ASTManagement/AST_HandleEndWhile.bin
new file mode 100644
index 0000000..bafccbc
--- /dev/null
+++ b/macros/ASTManagement/AST_HandleEndWhile.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleFor.bin b/macros/ASTManagement/AST_HandleFor.bin
new file mode 100644
index 0000000..27d44a1
--- /dev/null
+++ b/macros/ASTManagement/AST_HandleFor.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleForStatem.bin b/macros/ASTManagement/AST_HandleForStatem.bin
new file mode 100644
index 0000000..4839b04
--- /dev/null
+++ b/macros/ASTManagement/AST_HandleForStatem.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleHeader.bin b/macros/ASTManagement/AST_HandleHeader.bin
new file mode 100644
index 0000000..87ef763
--- /dev/null
+++ b/macros/ASTManagement/AST_HandleHeader.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleIfElse.bin b/macros/ASTManagement/AST_HandleIfElse.bin
new file mode 100644
index 0000000..d30e47b
--- /dev/null
+++ b/macros/ASTManagement/AST_HandleIfElse.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleIfElse.sci b/macros/ASTManagement/AST_HandleIfElse.sci
index 5373adf..2b549ed 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 0000000..5f3da2d
--- /dev/null
+++ b/macros/ASTManagement/AST_HandleWhileExpr.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleWhileStatem.bin b/macros/ASTManagement/AST_HandleWhileStatem.bin
new file mode 100644
index 0000000..4f7704e
--- /dev/null
+++ b/macros/ASTManagement/AST_HandleWhileStatem.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_HandleWhileStatem.sci b/macros/ASTManagement/AST_HandleWhileStatem.sci
index 79fb516..d8c2f73 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~='<EOL>')
+ 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 0000000..459c62e
--- /dev/null
+++ b/macros/ASTManagement/AST_ParseEqualStruct.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_ParseFuncallStruct.bin b/macros/ASTManagement/AST_ParseFuncallStruct.bin
new file mode 100644
index 0000000..1cbeb5c
--- /dev/null
+++ b/macros/ASTManagement/AST_ParseFuncallStruct.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_ParseFuncallStruct.sci b/macros/ASTManagement/AST_ParseFuncallStruct.sci
index 647a70d..3c322dd 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 0000000..19ea5fe
--- /dev/null
+++ b/macros/ASTManagement/AST_ParseIfExprStruct.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_ParseIfExprStruct.sci b/macros/ASTManagement/AST_ParseIfExprStruct.sci
index a7da012..3ed1b5b 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~='<EOL>')
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 0000000..e189cbc
--- /dev/null
+++ b/macros/ASTManagement/AST_ParseOperStruct.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_ParseOperStruct.sci b/macros/ASTManagement/AST_ParseOperStruct.sci
index a77317b..903f095 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 0000000..f9b85d3
--- /dev/null
+++ b/macros/ASTManagement/AST_PopASTStack.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_PushASTStack.bin b/macros/ASTManagement/AST_PushASTStack.bin
new file mode 100644
index 0000000..8fcd563
--- /dev/null
+++ b/macros/ASTManagement/AST_PushASTStack.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_ReadASTHeader.bin b/macros/ASTManagement/AST_ReadASTHeader.bin
new file mode 100644
index 0000000..614231c
--- /dev/null
+++ b/macros/ASTManagement/AST_ReadASTHeader.bin
Binary files differ
diff --git a/macros/ASTManagement/AST_ReadEqualRhsNames.bin b/macros/ASTManagement/AST_ReadEqualRhsNames.bin
new file mode 100644
index 0000000..a131c49
--- /dev/null
+++ b/macros/ASTManagement/AST_ReadEqualRhsNames.bin
Binary files differ
diff --git a/macros/ASTManagement/GenOutArgNames.bin b/macros/ASTManagement/GenOutArgNames.bin
new file mode 100644
index 0000000..2ebce86
--- /dev/null
+++ b/macros/ASTManagement/GenOutArgNames.bin
Binary files differ
diff --git a/macros/ASTManagement/GenOutArgNames.sci b/macros/ASTManagement/GenOutArgNames.sci
index 0e68383..7b62c79 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 0000000..884c99b
--- /dev/null
+++ b/macros/ASTManagement/Operator2FunName.bin
Binary files differ
diff --git a/macros/ASTManagement/SciFile2ASTFile.bin b/macros/ASTManagement/SciFile2ASTFile.bin
new file mode 100644
index 0000000..be8bc0d
--- /dev/null
+++ b/macros/ASTManagement/SciFile2ASTFile.bin
Binary files differ
diff --git a/macros/ASTManagement/_comment_string.bin b/macros/ASTManagement/_comment_string.bin
new file mode 100644
index 0000000..fb89494
--- /dev/null
+++ b/macros/ASTManagement/_comment_string.bin
Binary files differ
diff --git a/macros/ASTManagement/_cste_string.bin b/macros/ASTManagement/_cste_string.bin
new file mode 100644
index 0000000..ba643c4
--- /dev/null
+++ b/macros/ASTManagement/_cste_string.bin
Binary files differ
diff --git a/macros/ASTManagement/_equal_string.bin b/macros/ASTManagement/_equal_string.bin
new file mode 100644
index 0000000..7f88fee
--- /dev/null
+++ b/macros/ASTManagement/_equal_string.bin
Binary files differ
diff --git a/macros/ASTManagement/_for_string.bin b/macros/ASTManagement/_for_string.bin
new file mode 100644
index 0000000..c3fda16
--- /dev/null
+++ b/macros/ASTManagement/_for_string.bin
Binary files differ
diff --git a/macros/ASTManagement/_funcall_string.bin b/macros/ASTManagement/_funcall_string.bin
new file mode 100644
index 0000000..8354586
--- /dev/null
+++ b/macros/ASTManagement/_funcall_string.bin
Binary files differ
diff --git a/macros/ASTManagement/_ifthenel_string.bin b/macros/ASTManagement/_ifthenel_string.bin
new file mode 100644
index 0000000..1c6fa73
--- /dev/null
+++ b/macros/ASTManagement/_ifthenel_string.bin
Binary files differ
diff --git a/macros/ASTManagement/_ifthenelse_string.bin b/macros/ASTManagement/_ifthenelse_string.bin
new file mode 100644
index 0000000..456ffad
--- /dev/null
+++ b/macros/ASTManagement/_ifthenelse_string.bin
Binary files differ
diff --git a/macros/ASTManagement/_operatio_string.bin b/macros/ASTManagement/_operatio_string.bin
new file mode 100644
index 0000000..40abf6b
--- /dev/null
+++ b/macros/ASTManagement/_operatio_string.bin
Binary files differ
diff --git a/macros/ASTManagement/_operation_string.bin b/macros/ASTManagement/_operation_string.bin
new file mode 100644
index 0000000..dfbeec9
--- /dev/null
+++ b/macros/ASTManagement/_operation_string.bin
Binary files differ
diff --git a/macros/ASTManagement/_program_p.bin b/macros/ASTManagement/_program_p.bin
new file mode 100644
index 0000000..216a38b
--- /dev/null
+++ b/macros/ASTManagement/_program_p.bin
Binary files differ
diff --git a/macros/ASTManagement/_program_string.bin b/macros/ASTManagement/_program_string.bin
new file mode 100644
index 0000000..3a8fc95
--- /dev/null
+++ b/macros/ASTManagement/_program_string.bin
Binary files differ
diff --git a/macros/ASTManagement/_variable_string.bin b/macros/ASTManagement/_variable_string.bin
new file mode 100644
index 0000000..f81fd6e
--- /dev/null
+++ b/macros/ASTManagement/_variable_string.bin
Binary files differ
diff --git a/macros/ASTManagement/_while_string.bin b/macros/ASTManagement/_while_string.bin
new file mode 100644
index 0000000..142189c
--- /dev/null
+++ b/macros/ASTManagement/_while_string.bin
Binary files differ
diff --git a/macros/ASTManagement/lib b/macros/ASTManagement/lib
index 67ea09b..42ffc2a 100644
--- a/macros/ASTManagement/lib
+++ b/macros/ASTManagement/lib
Binary files differ
diff --git a/macros/ASTManagement/objectlist2string.bin b/macros/ASTManagement/objectlist2string.bin
new file mode 100644
index 0000000..96159f2
--- /dev/null
+++ b/macros/ASTManagement/objectlist2string.bin
Binary files differ