diff options
Diffstat (limited to '2.3-1/macros/ASTManagement')
76 files changed, 352 insertions, 34 deletions
diff --git a/2.3-1/macros/ASTManagement/%comment_string.bin b/2.3-1/macros/ASTManagement/%comment_string.bin Binary files differnew file mode 100644 index 00000000..fb894945 --- /dev/null +++ b/2.3-1/macros/ASTManagement/%comment_string.bin diff --git a/2.3-1/macros/ASTManagement/%cste_string.bin b/2.3-1/macros/ASTManagement/%cste_string.bin Binary files differnew file mode 100644 index 00000000..ba643c47 --- /dev/null +++ b/2.3-1/macros/ASTManagement/%cste_string.bin diff --git a/2.3-1/macros/ASTManagement/%equal_string.bin b/2.3-1/macros/ASTManagement/%equal_string.bin Binary files differnew file mode 100644 index 00000000..7f88fee6 --- /dev/null +++ b/2.3-1/macros/ASTManagement/%equal_string.bin diff --git a/2.3-1/macros/ASTManagement/%for_string.bin b/2.3-1/macros/ASTManagement/%for_string.bin Binary files differnew file mode 100644 index 00000000..c3fda16b --- /dev/null +++ b/2.3-1/macros/ASTManagement/%for_string.bin diff --git a/2.3-1/macros/ASTManagement/%funcall_string.bin b/2.3-1/macros/ASTManagement/%funcall_string.bin Binary files differnew file mode 100644 index 00000000..8354586d --- /dev/null +++ b/2.3-1/macros/ASTManagement/%funcall_string.bin diff --git a/2.3-1/macros/ASTManagement/%ifthenel_string.bin b/2.3-1/macros/ASTManagement/%ifthenel_string.bin Binary files differnew file mode 100644 index 00000000..1c6fa73d --- /dev/null +++ b/2.3-1/macros/ASTManagement/%ifthenel_string.bin diff --git a/2.3-1/macros/ASTManagement/%ifthenelse_string.bin b/2.3-1/macros/ASTManagement/%ifthenelse_string.bin Binary files differnew file mode 100644 index 00000000..456ffadc --- /dev/null +++ b/2.3-1/macros/ASTManagement/%ifthenelse_string.bin diff --git a/2.3-1/macros/ASTManagement/%operatio_string.bin b/2.3-1/macros/ASTManagement/%operatio_string.bin Binary files differnew file mode 100644 index 00000000..18aab9e5 --- /dev/null +++ b/2.3-1/macros/ASTManagement/%operatio_string.bin diff --git a/2.3-1/macros/ASTManagement/%operatio_string.sci b/2.3-1/macros/ASTManagement/%operatio_string.sci index c0ecb478..cc18e919 100644 --- a/2.3-1/macros/ASTManagement/%operatio_string.sci +++ b/2.3-1/macros/ASTManagement/%operatio_string.sci @@ -4,17 +4,22 @@ function txt=%operatio_string(O) //fields: // operands: a list // operator: a string -if O.operator <> 'rc' +if O.operator <> 'rc' & O.operator <> 'cc' txt=['Operation' ' Operands:' ' '+objectlist2string(O.operands) ' Operator: '+O.operator 'EndOperation' ] -else +elseif O.operator == 'rc' txt=[' Operands:' ' '+objectlist2string(O.operands) 'Endrc' ] +elseif O.operator == 'cc' + txt=[' Begin:' + ' '+objectlist2string(O.operands) + 'Endcc' + ] end endfunction diff --git a/2.3-1/macros/ASTManagement/%operation_string.bin b/2.3-1/macros/ASTManagement/%operation_string.bin Binary files differnew file mode 100644 index 00000000..dfbeec96 --- /dev/null +++ b/2.3-1/macros/ASTManagement/%operation_string.bin diff --git a/2.3-1/macros/ASTManagement/%operation_string.sci b/2.3-1/macros/ASTManagement/%operation_string.sci index 84f5ce3c..c9282f67 100644 --- a/2.3-1/macros/ASTManagement/%operation_string.sci +++ b/2.3-1/macros/ASTManagement/%operation_string.sci @@ -10,4 +10,4 @@ function txt=%operation_string(O) ' Operator: '+O.operator 'EndOperation' ] -endfunction
\ No newline at end of file +endfunction diff --git a/2.3-1/macros/ASTManagement/%program_p.bin b/2.3-1/macros/ASTManagement/%program_p.bin Binary files differnew file mode 100644 index 00000000..216a38b2 --- /dev/null +++ b/2.3-1/macros/ASTManagement/%program_p.bin diff --git a/2.3-1/macros/ASTManagement/%program_string.bin b/2.3-1/macros/ASTManagement/%program_string.bin Binary files differnew file mode 100644 index 00000000..3a8fc95b --- /dev/null +++ b/2.3-1/macros/ASTManagement/%program_string.bin diff --git a/2.3-1/macros/ASTManagement/%variable_string.bin b/2.3-1/macros/ASTManagement/%variable_string.bin Binary files differnew file mode 100644 index 00000000..f81fd6e0 --- /dev/null +++ b/2.3-1/macros/ASTManagement/%variable_string.bin diff --git a/2.3-1/macros/ASTManagement/%while_string.bin b/2.3-1/macros/ASTManagement/%while_string.bin Binary files differnew file mode 100644 index 00000000..142189c6 --- /dev/null +++ b/2.3-1/macros/ASTManagement/%while_string.bin diff --git a/2.3-1/macros/ASTManagement/AST2Ccode.bin b/2.3-1/macros/ASTManagement/AST2Ccode.bin Binary files differnew file mode 100644 index 00000000..c6635196 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST2Ccode.bin diff --git a/2.3-1/macros/ASTManagement/AST2Ccode.sci b/2.3-1/macros/ASTManagement/AST2Ccode.sci index 19cf00c4..f3c87aba 100644 --- a/2.3-1/macros/ASTManagement/AST2Ccode.sci +++ b/2.3-1/macros/ASTManagement/AST2Ccode.sci @@ -46,6 +46,10 @@ ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName; // --------------------------------- // --- Parameter Initialization. --- // --------------------------------- + +global cc_count +cc_count = 0; + global rc_count rc_count = 0; @@ -57,6 +61,8 @@ StackPosition = 1; global STACKDEDUG STACKDEDUG = 0; // 1 -> Every Pop and Push operation on the stack, the stack content will be printed on screen. + + // ------------------------------------- // --- End parameter Initialization. --- // ------------------------------------- @@ -147,8 +153,13 @@ while ~meof(fidAST) //NUT: per fare in modo di coprire le ins, anche se ci puo' essere qualche rischio quando //NUT: ho miste ins e variabili, per esempio [c(1,1), a] = twooutfun(); //NUT: in questo caso solo una delle due equal va scartata. - if rc_count > 0 + if rc_count > 0 & cc_count == 0 [FileInfo,SharedInfo] = AST_HandleFunRC(FileInfo,SharedInfo); + rc_count = 0; + elseif cc_count > 0 + [FileInfo,SharedInfo] = AST_HandleFunCC(cc_count,FileInfo,SharedInfo); + rc_count = 0; + cc_count = 0; else [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,'Equal'); SharedInfo = INIT_SharedInfoEqual(SharedInfo); @@ -157,16 +168,19 @@ while ~meof(fidAST) SharedInfo.Equal.Enabled = 1; // 1 means enabled -> we are inside an equal AST block. AST_PushASTStack(treeline); case 'Lhs :' then - disp(rc_count); - if rc_count > 0 + if rc_count > 0 & cc_count == 0 SharedInfo.Equal.Lhs = 1; [EqualInArgName,EqualInArgScope,EqualNInArg] = AST_HandleRC(FileInfo,SharedInfo); - SharedInfo.Equal.NInArg = EqualNInArg; + SharedInfo.Equal.NInArg = EqualNInArg - rc_count -1; AST_PushASTStack(treeline); for tmpcnt = 1:SharedInfo.Equal.NInArg SharedInfo.Equal.InArg(tmpcnt).Name = EqualInArgName(tmpcnt); SharedInfo.Equal.InArg(tmpcnt).Scope = EqualInArgScope(tmpcnt); - end + end + elseif cc_count > 0 + SharedInfo.Equal.Lhs = 1; + [EqualInArgName,EqualInArgScope,EqualNInArg] = AST_HandleCC(FileInfo,SharedInfo); + AST_PushASTStack(treeline); else SharedInfo.Equal.Lhs = 1; // 1 means that we are inside the Lhs block of the Equal //if SharedInfo.Equal.NOutArg > 0 @@ -254,7 +268,11 @@ while ~meof(fidAST) case 'Endrc' then - rc_count = rc_count + 1; + rc_count = rc_count + 1; + + case 'Endcc' then + cc_count = cc_count + 1; + //[FileInfo,SharedInfo] = AST_HandleRC(FileInfo,SharedInfo); // ---------------- diff --git a/2.3-1/macros/ASTManagement/AST_CheckCommonInOutArgs.bin b/2.3-1/macros/ASTManagement/AST_CheckCommonInOutArgs.bin Binary files differnew file mode 100644 index 00000000..5c190ba3 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_CheckCommonInOutArgs.bin diff --git a/2.3-1/macros/ASTManagement/AST_CheckLastFunc.bin b/2.3-1/macros/ASTManagement/AST_CheckLastFunc.bin Binary files differnew file mode 100644 index 00000000..9cac2273 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_CheckLastFunc.bin diff --git a/2.3-1/macros/ASTManagement/AST_CheckLineLength.bin b/2.3-1/macros/ASTManagement/AST_CheckLineLength.bin Binary files differnew file mode 100644 index 00000000..db486797 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_CheckLineLength.bin diff --git a/2.3-1/macros/ASTManagement/AST_CheckPrecSpecifier.bin b/2.3-1/macros/ASTManagement/AST_CheckPrecSpecifier.bin Binary files differnew file mode 100644 index 00000000..8e50397f --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_CheckPrecSpecifier.bin diff --git a/2.3-1/macros/ASTManagement/AST_DisplayStack.bin b/2.3-1/macros/ASTManagement/AST_DisplayStack.bin Binary files differnew file mode 100644 index 00000000..90cbcc74 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_DisplayStack.bin diff --git a/2.3-1/macros/ASTManagement/AST_ExtractNameAndScope.bin b/2.3-1/macros/ASTManagement/AST_ExtractNameAndScope.bin Binary files differnew file mode 100644 index 00000000..1944d88b --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_ExtractNameAndScope.bin diff --git a/2.3-1/macros/ASTManagement/AST_GetASTFile.bin b/2.3-1/macros/ASTManagement/AST_GetASTFile.bin Binary files differnew file mode 100644 index 00000000..261430e5 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_GetASTFile.bin diff --git a/2.3-1/macros/ASTManagement/AST_GetFuncallPrm.bin b/2.3-1/macros/ASTManagement/AST_GetFuncallPrm.bin Binary files differnew file mode 100644 index 00000000..37dbe771 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_GetFuncallPrm.bin diff --git a/2.3-1/macros/ASTManagement/AST_GetPrecAndLhsArg.bin b/2.3-1/macros/ASTManagement/AST_GetPrecAndLhsArg.bin Binary files differnew file mode 100644 index 00000000..71e44cb1 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_GetPrecAndLhsArg.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleCC.bin b/2.3-1/macros/ASTManagement/AST_HandleCC.bin Binary files differnew file mode 100644 index 00000000..0d302e4f --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleCC.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleCC.sci b/2.3-1/macros/ASTManagement/AST_HandleCC.sci new file mode 100644 index 00000000..d0a2244b --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleCC.sci @@ -0,0 +1,88 @@ +function [RhsNames,RhsScope,NRhs] = AST_HandleCC(FileInfo,SharedInfo) +// function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,ASTFunType) +// ----------------------------------------------------------------- +// #RNU_RES_B +// Handles the EndFuncall, EndOperation and EndEqual tags of the AST. +// ASTFunType can be 'Funcall', 'Operation', 'Equal' +// Structure of Funcall: +// overloading function for "funcall" type tlist string function +// this is a node of the AST +// fields: +// rhs : a list +// name : string, the name of the function +// lhsnb: number, the number of function lhs +// txt=['Funcall : '+F.name +// ' #lhs : '+string(F.lhsnb) +// ' Rhs : ' +// ' '+objectlist2string(F.rhs) +// 'EndFuncall' +// ] +// #RNU_RES_E +// +// Input data: +// //NUT: add description here +// +// Output data: +// //NUT: add description here +// +// Status: +// 11-Apr-2007 -- Raffaele Nutricato: Author. +// +// Copyright 2007 Raffaele Nutricato. +// Contact: raffaele.nutricato@tiscali.it +// ----------------------------------------------------------------- + +ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName; + +// ------------------------------ +// --- Check input arguments. --- +// ------------------------------ + + +global SCI2CSTACK +global StackPosition; +global STACKDEDUG +// --------------------------- +// --- End Initialization. --- +// --------------------------- + + +// ------------------------------ +// --- Read input parameters. --- +// ------------------------------ +cntpop = 1; +NRhs = 0; +RhsField(cntpop) = AST_PopASTStack(); +RhsNames = []; +while (RhsField(cntpop) ~= 'Expression:') + if RhsField(cntpop) <> 'Operands:' & RhsField(cntpop) <> 'Begin:' + NRhs = NRhs + 1; + + [RhsNames(NRhs),RhsScope(NRhs)] = AST_ExtractNameAndScope(RhsField(cntpop)); + end + cntpop = cntpop + 1; + RhsField(cntpop) = AST_PopASTStack(); +end +RhsNames = SCI2Cflipud(RhsNames); +RhsScope = SCI2Cflipud(RhsScope); + +// --- Repush everything into the stack. --- +for cntpush = cntpop:-1:1 + if RhsField(cntpush) <> 'Operands:' & RhsField(cntpush) <> 'Begin:' + PrintStringInfo(' ' + RhsField(cntpush),ReportFileName,'file','y'); + AST_PushASTStack(RhsField(cntpush)); + end +end + + +//for counterinputargs = 1:NRhs + //#RNU_RES_B + //disp(counterinputargs); + //PrintStringInfo('Input Argument Number '+string(counterinputargs)+': '+RhsNames(counterinputargs).Name,... + // ReportFileName,'file','y'); + //PrintStringInfo(' Scope: '+RhsNames(counterinputargs).Scope,... + // ReportFileName,'file','y'); + //#RNU_RES_E +//end + +endfunction diff --git a/2.3-1/macros/ASTManagement/AST_HandleEOL.bin b/2.3-1/macros/ASTManagement/AST_HandleEOL.bin Binary files differnew file mode 100644 index 00000000..3b6b3bd1 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleEOL.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleEndFor.bin b/2.3-1/macros/ASTManagement/AST_HandleEndFor.bin Binary files differnew file mode 100644 index 00000000..a6031b43 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleEndFor.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.bin b/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.bin Binary files differnew file mode 100644 index 00000000..dfbf15db --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci b/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci index 4de5d893..9fdfbb3d 100644 --- a/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci +++ b/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci @@ -36,7 +36,7 @@ function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,ASTFunT // ------------------------------ // --- Check input arguments. --- // ------------------------------ -SCI2CNInArgCheck(argn(2),3,3); +//SCI2CNInArgCheck(argn(2),3,3); // ----------------------- // --- Initialization. --- @@ -61,6 +61,8 @@ PrintStepInfo('Handling Funcall/Operation/Equal',FileInfo.Funct(nxtscifunnumber) global SCI2CSTACK global StackPosition; global STACKDEDUG + +disp_isthere = 0; // --------------------------- // --- End Initialization. --- // --------------------------- diff --git a/2.3-1/macros/ASTManagement/AST_HandleEndProgram.bin b/2.3-1/macros/ASTManagement/AST_HandleEndProgram.bin Binary files differnew file mode 100644 index 00000000..5e02fdcd --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleEndProgram.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleEndWhile.bin b/2.3-1/macros/ASTManagement/AST_HandleEndWhile.bin Binary files differnew file mode 100644 index 00000000..bafccbc2 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleEndWhile.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleFor.bin b/2.3-1/macros/ASTManagement/AST_HandleFor.bin Binary files differnew file mode 100644 index 00000000..27d44a12 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleFor.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleForStatem.bin b/2.3-1/macros/ASTManagement/AST_HandleForStatem.bin Binary files differnew file mode 100644 index 00000000..4839b049 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleForStatem.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleFunCC.bin b/2.3-1/macros/ASTManagement/AST_HandleFunCC.bin Binary files differnew file mode 100644 index 00000000..615d1471 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleFunCC.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleFunCC.sci b/2.3-1/macros/ASTManagement/AST_HandleFunCC.sci new file mode 100644 index 00000000..063cdc47 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleFunCC.sci @@ -0,0 +1,178 @@ +function [FileInfo,SharedInfo] = AST_HandleFunCC(NCol,FileInfo,SharedInfo) +// function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,ASTFunType) +// ----------------------------------------------------------------- +// #RNU_RES_B +// Handles the EndFuncall, EndOperation and EndEqual tags of the AST. +// ASTFunType can be 'Funcall', 'Operation', 'Equal' +// Structure of Funcall: +// overloading function for "funcall" type tlist string function +// this is a node of the AST +// fields: +// rhs : a list +// name : string, the name of the function +// lhsnb: number, the number of function lhs +// txt=['Funcall : '+F.name +// ' #lhs : '+string(F.lhsnb) +// ' Rhs : ' +// ' '+objectlist2string(F.rhs) +// 'EndFuncall' +// ] +// #RNU_RES_E +// +// Input data: +// //NUT: add description here +// +// Output data: +// //NUT: add description here +// +// Status: +// 11-Apr-2007 -- Ukasha Noor: Author. +// +// Copyright 2017 Ukasha Noor. +// Contact: ukashanoor.iiitk@gmail.com +// ----------------------------------------------------------------- + +// ------------------------------ +// --- Check input arguments. --- +// ------------------------------ + +// ----------------------- +// --- Initialization. --- +// ----------------------- +nxtscifunname = SharedInfo.NextSCIFunName; +nxtscifunnumber = SharedInfo.NextSCIFunNumber; +ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName; + +global SCI2CSTACK +global StackPosition; +global STACKDEDUG +// --------------------------- +// --- End Initialization. --- +// --------------------------- + +// ------------------------------ +// --- Read output parameters. -- +// ------------------------------ +LhsField = AST_PopASTStack(); +NOutArg = 0; +OutputArgumentNames = []; +OutputArgumentScope = []; +while (LhsField ~= 'Lhs :') + NOutArg = NOutArg + 1; + [OutputArgumentNames(NOutArg),OutputArgumentScope(NOutArg)] = AST_ExtractNameAndScope(LhsField); + LhsField = AST_PopASTStack(); + if (LhsField == 'Expression:') + error(9999, 'Found Expression: before Lhs'); + elseif (LhsField == 'Equal') + error(9999, 'Found Equal before Lhs'); + end +end + +// ------------------------------ +// --- Read input parameters. --- +// ------------------------------ + + +RhsField = AST_PopASTStack(); +InputArgumentNames = []; +InputArgumentScope = []; +NInArg = 0; +InArg = []; +while (RhsField ~= 'Expression:') + NInArg = NInArg + 1; + if RhsField <> 'Operands:' + [InputArgumentNames(NInArg),InputArgumentScope(NInArg)] = AST_ExtractNameAndScope(RhsField); + end + //disp(InputArgumentNames(NInArg)); + //InArg(NInArg) = RhsField; + RhsField = AST_PopASTStack(); +end +InputArgumentNames = SCI2Cflipud(InputArgumentNames); +InputArgumentScope = SCI2Cflipud(InputArgumentScope); + +disp(NInArg); + + +// ------------------------------------- +// --- Generate the InArg structure. --- +// ------------------------------------- +//#RNU_RES_E +for counterinputargs = 1:NInArg + InArg(counterinputargs).Name=InputArgumentNames(counterinputargs); + InArg(counterinputargs).Scope=InputArgumentScope(counterinputargs); +end + +//#RNU_RES_B +// ------------------------------------- +// --- Generate the InArg structure. --- +// ------------------------------------- +//#RNU_RES_E +OutArg = []; +for counteroutputargs = 1:NOutArg + OutArg(counteroutputargs).Name=OutputArgumentNames(counteroutputargs); + OutArg(counteroutputargs).Scope=OutputArgumentScope(counteroutputargs); +end +disp(NOutArg); + +// ------------------------ +// --- Print Some Info. --- +// ------------------------ + +PrintStringInfo('N Input Arguments: '+string(NInArg),ReportFileName,'file','y','n'); +PrintStringInfo('N Output Arguments: '+string(NOutArg),ReportFileName,'file','y'); + //#RNU_RES_E + for counterinputargs = 1:NInArg + //#RNU_RES_B + PrintStringInfo('Input Argument Number '+string(counterinputargs)+': '+InArg(counterinputargs).Name,... + ReportFileName,'file','y','n'); + PrintStringInfo(' Scope: '+InArg(counterinputargs).Scope,... + ReportFileName,'file','y','n'); + //#RNU_RES_E + end + for counteroutputargs = 1:NOutArg + //#RNU_RES_B + PrintStringInfo('Output Argument Number '+string(counteroutputargs)+': '+OutArg(counteroutputargs).Name,... + ReportFileName,'file','y','n'); + //PrintStringInfo(' Scope: '+ OutArg(counterinputargs).Scope,ReportFileName,'file','y','n'); + //#RNU_RES_E + end + +NOutArg_mod = NOutArg; + +FunTypeAnnot = ''; +FunSizeAnnot = ''; +NLhsArg = 0; +LhsArg = []; +PrintStringInfo('...Equal not found.',ReportFileName,'file','y'); + +PrintStringInfo('***Analyzing Input Arguments***',ReportFileName,'file','y'); +UpdatedInArg = InArg; +[InArg,SharedInfo] = ST_GetInArgInfo(InArg,NInArg,FileInfo,SharedInfo,'OpEqual'); + +NCol = NCol + 1; +NRow = NInArg/NCol; + +com_type = 0; +for i = 1:NInArg + if InArg(i).Type == 'z' + com_type = 1; + end +end + + +PrintStringInfo(' Generating Out Arg names.',ReportFileName,'file','y'); +OutArg(1).Type = InArg(1).Type; +OutArg(1).Size(1) = string(NRow); +OutArg(1).Size(2) = string(NCol); +OutArg(1).Dimension = 2; +OutArg(1).Value = InArg(1).Value; +OutArg(1).FindLike = InArg(1).FindLike; + +//--- Check for output Argument in symbol table ---// +OutArg = ST_AnalyzeScope(OutArg,NOutArg,FileInfo,SharedInfo); + +//--- Put the output Argument in symbol table ---// +ST_InsOutArg_Dup(InArg,NInArg,OutArg,NOutArg,com_type,FileInfo,SharedInfo,'all'); + + +endfunction diff --git a/2.3-1/macros/ASTManagement/AST_HandleFunRC.bin b/2.3-1/macros/ASTManagement/AST_HandleFunRC.bin Binary files differnew file mode 100644 index 00000000..8b61e486 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleFunRC.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleFunRC.sci b/2.3-1/macros/ASTManagement/AST_HandleFunRC.sci index a70155a7..654f04d8 100644 --- a/2.3-1/macros/ASTManagement/AST_HandleFunRC.sci +++ b/2.3-1/macros/ASTManagement/AST_HandleFunRC.sci @@ -1,4 +1,4 @@ -function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo) +function [FileInfo,SharedInfo] = AST_HandleFunRC(FileInfo,SharedInfo) // function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,ASTFunType) // ----------------------------------------------------------------- // #RNU_RES_B @@ -26,10 +26,10 @@ function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo) // //NUT: add description here // // Status: -// 11-Apr-2007 -- Raffaele Nutricato: Author. +// 11-Apr-2007 -- Ukasha Noor: Author. // -// Copyright 2007 Raffaele Nutricato. -// Contact: raffaele.nutricato@tiscali.it +// Copyright 2017 Ukasha Noor. +// Contact: ukashanoor.iiitk@gmail.com // ----------------------------------------------------------------- // ------------------------------ @@ -74,22 +74,29 @@ end RhsField = AST_PopASTStack(); +InputArgumentNames = []; +InputArgumentScope = []; NInArg = 0; InArg = []; while (RhsField ~= 'Expression:') NInArg = NInArg + 1; - InArg(NInArg) = RhsField; + if RhsField <> 'Operands:' + [InputArgumentNames(NInArg),InputArgumentScope(NInArg)] = AST_ExtractNameAndScope(RhsField); + end + //disp(InputArgumentNames(NInArg)); + //InArg(NInArg) = RhsField; RhsField = AST_PopASTStack(); end InputArgumentNames = SCI2Cflipud(InputArgumentNames); InputArgumentScope = SCI2Cflipud(InputArgumentScope); +disp(NInArg); + // ------------------------------------- // --- Generate the InArg structure. --- // ------------------------------------- //#RNU_RES_E -InArg = []; for counterinputargs = 1:NInArg InArg(counterinputargs).Name=InputArgumentNames(counterinputargs); InArg(counterinputargs).Scope=InputArgumentScope(counterinputargs); @@ -105,6 +112,7 @@ for counteroutputargs = 1:NOutArg OutArg(counteroutputargs).Name=OutputArgumentNames(counteroutputargs); OutArg(counteroutputargs).Scope=OutputArgumentScope(counteroutputargs); end +disp(NOutArg); // ------------------------ // --- Print Some Info. --- @@ -125,8 +133,7 @@ PrintStringInfo('N Output Arguments: '+string(NOutArg),ReportFileName,'file','y' //#RNU_RES_B PrintStringInfo('Output Argument Number '+string(counteroutputargs)+': '+OutArg(counteroutputargs).Name,... ReportFileName,'file','y','n'); - PrintStringInfo(' Scope: '+OutArg(counterinputargs).Scope,... - ReportFileName,'file','y','n'); + //PrintStringInfo(' Scope: '+ OutArg(counterinputargs).Scope,ReportFileName,'file','y','n'); //#RNU_RES_E end @@ -144,14 +151,22 @@ UpdatedInArg = InArg; size_count = 0; for i = 1:NInArg - size_count = size_count + InArg(i).Size(2); + size_count = size_count + eval(InArg(i).Size(2)); +end + +com_type = 0; +for i = 1:NInArg + if InArg(i).Type == 'z' + com_type = 1; + end end + PrintStringInfo(' Generating Out Arg names.',ReportFileName,'file','y'); OutArg(1).Type = InArg(1).Type; OutArg(1).Size(1) = '1' OutArg(1).Size(2) = string(size_count); -OutArg(1).Dimension = InArg(1).Dimension; +OutArg(1).Dimension = 2; OutArg(1).Value = InArg(1).Value; OutArg(1).FindLike = InArg(1).FindLike; @@ -159,7 +174,7 @@ OutArg(1).FindLike = InArg(1).FindLike; OutArg = ST_AnalyzeScope(OutArg,NOutArg,FileInfo,SharedInfo); //--- Put the output Argument in symbol table ---// -ST_InsOutArg(OutArg,NOutArg,FileInfo,SharedInfo,'all'); +ST_InsOutArg_Dup(InArg,NInArg,OutArg,NOutArg,com_type,FileInfo,SharedInfo,'all'); endfunction diff --git a/2.3-1/macros/ASTManagement/AST_HandleHeader.bin b/2.3-1/macros/ASTManagement/AST_HandleHeader.bin Binary files differnew file mode 100644 index 00000000..87ef763a --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleHeader.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleIfElse.bin b/2.3-1/macros/ASTManagement/AST_HandleIfElse.bin Binary files differnew file mode 100644 index 00000000..d30e47b4 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleIfElse.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleRC.bin b/2.3-1/macros/ASTManagement/AST_HandleRC.bin Binary files differnew file mode 100644 index 00000000..829fd67a --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleRC.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleRC.sci b/2.3-1/macros/ASTManagement/AST_HandleRC.sci index b1a1003f..3952c8eb 100644 --- a/2.3-1/macros/ASTManagement/AST_HandleRC.sci +++ b/2.3-1/macros/ASTManagement/AST_HandleRC.sci @@ -1,4 +1,4 @@ -function [RhsNames,RhsScope,NRhs] = AST_ReadEqualRhsNames(FileInfo,SharedInfo) +function [RhsNames,RhsScope,NRhs] = AST_HandleRC(FileInfo,SharedInfo) // function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,ASTFunType) // ----------------------------------------------------------------- // #RNU_RES_B @@ -54,9 +54,11 @@ cntpop = 1; NRhs = 0; RhsField(cntpop) = AST_PopASTStack(); RhsNames = []; -while (RhsField(cntpop) ~= 'Operands:') +while (RhsField(cntpop) ~= 'Expression:') NRhs = NRhs + 1; + if RhsField(cntpop) <> 'Operands:' [RhsNames(NRhs),RhsScope(NRhs)] = AST_ExtractNameAndScope(RhsField(cntpop)); + end cntpop = cntpop + 1; RhsField(cntpop) = AST_PopASTStack(); end @@ -65,17 +67,20 @@ RhsScope = SCI2Cflipud(RhsScope); // --- Repush everything into the stack. --- for cntpush = cntpop:-1:1 + if RhsField(cntpush) <> 'Operands:' AST_PushASTStack(RhsField(cntpush)); + end end -for counterinputargs = 1:NRhs +//for counterinputargs = 1:NRhs //#RNU_RES_B - PrintStringInfo('Input Argument Number '+string(counterinputargs)+': '+InArg(counterinputargs).Name,... - ReportFileName,'file','y'); - PrintStringInfo(' Scope: '+InArg(counterinputargs).Scope,... - ReportFileName,'file','y'); + //disp(counterinputargs); + // PrintStringInfo('Input Argument Number '+string(counterinputargs)+': '+RhsNames(counterinputargs).Name,... + // ReportFileName,'file','y'); + //PrintStringInfo(' Scope: '+RhsNames(counterinputargs).Scope,... + // ReportFileName,'file','y'); //#RNU_RES_E -end +//end endfunction diff --git a/2.3-1/macros/ASTManagement/AST_HandleWhileExpr.bin b/2.3-1/macros/ASTManagement/AST_HandleWhileExpr.bin Binary files differnew file mode 100644 index 00000000..5f3da2de --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleWhileExpr.bin diff --git a/2.3-1/macros/ASTManagement/AST_HandleWhileStatem.bin b/2.3-1/macros/ASTManagement/AST_HandleWhileStatem.bin Binary files differnew file mode 100644 index 00000000..4f7704ea --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_HandleWhileStatem.bin diff --git a/2.3-1/macros/ASTManagement/AST_ParseEqualStruct.bin b/2.3-1/macros/ASTManagement/AST_ParseEqualStruct.bin Binary files differnew file mode 100644 index 00000000..2135518f --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_ParseEqualStruct.bin diff --git a/2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.bin b/2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.bin Binary files differnew file mode 100644 index 00000000..1cbeb5c0 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.bin diff --git a/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.bin b/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.bin Binary files differnew file mode 100644 index 00000000..59203066 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.bin diff --git a/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci b/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci index 3ed1b5b6..2bfb08dd 100644 --- a/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci +++ b/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci @@ -98,6 +98,7 @@ while (flagendpop == 0) if (ASTIfExpType=='if') if (IfExprField=='Expression:') flagendpop = 1; + //PrintStringInfo('hello dere '+IfExprField,ReportFileName,'file','y'); // Pop Again the If tag from the AST. IfExprField = AST_PopASTStack(); elseif (IfExprField=='Operands:') @@ -117,10 +118,14 @@ while (flagendpop == 0) elseif (ASTIfExpType=='elseif') if (IfExprField=='Else If Expression') flagendpop = 1; + //IfExprField = AST_PopASTStack(); else - if (IfExprField=='&&') + if (IfExprField=='&&' | IfExprField=='||') NOp = NOp + 1; Op(NOp) = IfExprField; + elseif (IfExprField=='Operands:') + flagendpop = 0; + g = AST_PopASTStack(); else NIfCondArg = NIfCondArg + 1; IfCondArg(NIfCondArg) = IfExprField; @@ -129,7 +134,9 @@ while (flagendpop == 0) end end end + if flagendpop == 0 IfExprField = AST_PopASTStack(); + end PrintStringInfo('operators are '+IfExprField,ReportFileName,'file','y'); end diff --git a/2.3-1/macros/ASTManagement/AST_ParseOperStruct.bin b/2.3-1/macros/ASTManagement/AST_ParseOperStruct.bin Binary files differnew file mode 100644 index 00000000..e189cbc9 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_ParseOperStruct.bin diff --git a/2.3-1/macros/ASTManagement/AST_PopASTStack.bin b/2.3-1/macros/ASTManagement/AST_PopASTStack.bin Binary files differnew file mode 100644 index 00000000..f9b85d34 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_PopASTStack.bin diff --git a/2.3-1/macros/ASTManagement/AST_PushASTStack.bin b/2.3-1/macros/ASTManagement/AST_PushASTStack.bin Binary files differnew file mode 100644 index 00000000..8fcd563c --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_PushASTStack.bin diff --git a/2.3-1/macros/ASTManagement/AST_ReadASTHeader.bin b/2.3-1/macros/ASTManagement/AST_ReadASTHeader.bin Binary files differnew file mode 100644 index 00000000..614231c4 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_ReadASTHeader.bin diff --git a/2.3-1/macros/ASTManagement/AST_ReadEqualRhsNames.bin b/2.3-1/macros/ASTManagement/AST_ReadEqualRhsNames.bin Binary files differnew file mode 100644 index 00000000..a131c498 --- /dev/null +++ b/2.3-1/macros/ASTManagement/AST_ReadEqualRhsNames.bin diff --git a/2.3-1/macros/ASTManagement/GenOutArgNames.bin b/2.3-1/macros/ASTManagement/GenOutArgNames.bin Binary files differnew file mode 100644 index 00000000..2ebce86c --- /dev/null +++ b/2.3-1/macros/ASTManagement/GenOutArgNames.bin diff --git a/2.3-1/macros/ASTManagement/Operator2FunName.bin b/2.3-1/macros/ASTManagement/Operator2FunName.bin Binary files differnew file mode 100644 index 00000000..884c99bc --- /dev/null +++ b/2.3-1/macros/ASTManagement/Operator2FunName.bin diff --git a/2.3-1/macros/ASTManagement/SciFile2ASTFile.bin b/2.3-1/macros/ASTManagement/SciFile2ASTFile.bin Binary files differnew file mode 100644 index 00000000..be8bc0d5 --- /dev/null +++ b/2.3-1/macros/ASTManagement/SciFile2ASTFile.bin diff --git a/2.3-1/macros/ASTManagement/_comment_string.bin b/2.3-1/macros/ASTManagement/_comment_string.bin Binary files differnew file mode 100644 index 00000000..fb894945 --- /dev/null +++ b/2.3-1/macros/ASTManagement/_comment_string.bin diff --git a/2.3-1/macros/ASTManagement/_cste_string.bin b/2.3-1/macros/ASTManagement/_cste_string.bin Binary files differnew file mode 100644 index 00000000..ba643c47 --- /dev/null +++ b/2.3-1/macros/ASTManagement/_cste_string.bin diff --git a/2.3-1/macros/ASTManagement/_equal_string.bin b/2.3-1/macros/ASTManagement/_equal_string.bin Binary files differnew file mode 100644 index 00000000..7f88fee6 --- /dev/null +++ b/2.3-1/macros/ASTManagement/_equal_string.bin diff --git a/2.3-1/macros/ASTManagement/_for_string.bin b/2.3-1/macros/ASTManagement/_for_string.bin Binary files differnew file mode 100644 index 00000000..c3fda16b --- /dev/null +++ b/2.3-1/macros/ASTManagement/_for_string.bin diff --git a/2.3-1/macros/ASTManagement/_funcall_string.bin b/2.3-1/macros/ASTManagement/_funcall_string.bin Binary files differnew file mode 100644 index 00000000..8354586d --- /dev/null +++ b/2.3-1/macros/ASTManagement/_funcall_string.bin diff --git a/2.3-1/macros/ASTManagement/_ifthenel_string.bin b/2.3-1/macros/ASTManagement/_ifthenel_string.bin Binary files differnew file mode 100644 index 00000000..1c6fa73d --- /dev/null +++ b/2.3-1/macros/ASTManagement/_ifthenel_string.bin diff --git a/2.3-1/macros/ASTManagement/_ifthenelse_string.bin b/2.3-1/macros/ASTManagement/_ifthenelse_string.bin Binary files differnew file mode 100644 index 00000000..456ffadc --- /dev/null +++ b/2.3-1/macros/ASTManagement/_ifthenelse_string.bin diff --git a/2.3-1/macros/ASTManagement/_operatio_string.bin b/2.3-1/macros/ASTManagement/_operatio_string.bin Binary files differnew file mode 100644 index 00000000..40abf6b2 --- /dev/null +++ b/2.3-1/macros/ASTManagement/_operatio_string.bin diff --git a/2.3-1/macros/ASTManagement/_operatio_string.sci b/2.3-1/macros/ASTManagement/_operatio_string.sci index 8421a3f4..e9332337 100644 --- a/2.3-1/macros/ASTManagement/_operatio_string.sci +++ b/2.3-1/macros/ASTManagement/_operatio_string.sci @@ -10,4 +10,4 @@ function txt=%operatio_string(O) ' Operator: '+O.operator 'EndOperation' ] -endfunction
\ No newline at end of file +endfunction diff --git a/2.3-1/macros/ASTManagement/_operation_string.bin b/2.3-1/macros/ASTManagement/_operation_string.bin Binary files differnew file mode 100644 index 00000000..dfbeec96 --- /dev/null +++ b/2.3-1/macros/ASTManagement/_operation_string.bin diff --git a/2.3-1/macros/ASTManagement/_operation_string.sci b/2.3-1/macros/ASTManagement/_operation_string.sci index 84f5ce3c..c9282f67 100644 --- a/2.3-1/macros/ASTManagement/_operation_string.sci +++ b/2.3-1/macros/ASTManagement/_operation_string.sci @@ -10,4 +10,4 @@ function txt=%operation_string(O) ' Operator: '+O.operator 'EndOperation' ] -endfunction
\ No newline at end of file +endfunction diff --git a/2.3-1/macros/ASTManagement/_program_p.bin b/2.3-1/macros/ASTManagement/_program_p.bin Binary files differnew file mode 100644 index 00000000..216a38b2 --- /dev/null +++ b/2.3-1/macros/ASTManagement/_program_p.bin diff --git a/2.3-1/macros/ASTManagement/_program_string.bin b/2.3-1/macros/ASTManagement/_program_string.bin Binary files differnew file mode 100644 index 00000000..3a8fc95b --- /dev/null +++ b/2.3-1/macros/ASTManagement/_program_string.bin diff --git a/2.3-1/macros/ASTManagement/_variable_string.bin b/2.3-1/macros/ASTManagement/_variable_string.bin Binary files differnew file mode 100644 index 00000000..f81fd6e0 --- /dev/null +++ b/2.3-1/macros/ASTManagement/_variable_string.bin diff --git a/2.3-1/macros/ASTManagement/_while_string.bin b/2.3-1/macros/ASTManagement/_while_string.bin Binary files differnew file mode 100644 index 00000000..142189c6 --- /dev/null +++ b/2.3-1/macros/ASTManagement/_while_string.bin diff --git a/2.3-1/macros/ASTManagement/lib b/2.3-1/macros/ASTManagement/lib Binary files differindex c73eb6b2..7cb0b9df 100644 --- a/2.3-1/macros/ASTManagement/lib +++ b/2.3-1/macros/ASTManagement/lib diff --git a/2.3-1/macros/ASTManagement/names b/2.3-1/macros/ASTManagement/names index 26edaf7c..6deb883d 100644 --- a/2.3-1/macros/ASTManagement/names +++ b/2.3-1/macros/ASTManagement/names @@ -21,6 +21,7 @@ AST_ExtractNameAndScope AST_GetASTFile AST_GetFuncallPrm AST_GetPrecAndLhsArg +AST_HandleCC AST_HandleEOL AST_HandleEndFor AST_HandleEndGenFun @@ -28,6 +29,7 @@ AST_HandleEndProgram AST_HandleEndWhile AST_HandleFor AST_HandleForStatem +AST_HandleFunCC AST_HandleFunRC AST_HandleHeader AST_HandleIfElse @@ -59,5 +61,3 @@ _program_string _variable_string _while_string objectlist2string -AST_HandleRC -AST_HandleFunRC diff --git a/2.3-1/macros/ASTManagement/objectlist2string.bin b/2.3-1/macros/ASTManagement/objectlist2string.bin Binary files differnew file mode 100644 index 00000000..96159f22 --- /dev/null +++ b/2.3-1/macros/ASTManagement/objectlist2string.bin |