diff options
author | Jorawar Singh | 2017-06-30 11:54:22 +0530 |
---|---|---|
committer | Jorawar Singh | 2017-06-30 11:54:22 +0530 |
commit | a7d283ae2899b2530ac70a2453d4db05d03d609d (patch) | |
tree | fb93a9edddeee4601c47ce73e173331fa3addac8 /macros/ASTManagement/AST_ParseIfExprStruct.sci | |
parent | aef4e8398f2b1848b0e4cdd9580dbbe93e4006f9 (diff) | |
parent | bee6bf6e37f6c36fb18b6132702e1528b7edafc2 (diff) | |
download | scilab2c-a7d283ae2899b2530ac70a2453d4db05d03d609d.tar.gz scilab2c-a7d283ae2899b2530ac70a2453d4db05d03d609d.tar.bz2 scilab2c-a7d283ae2899b2530ac70a2453d4db05d03d609d.zip |
merged main repo with local
Diffstat (limited to 'macros/ASTManagement/AST_ParseIfExprStruct.sci')
-rw-r--r-- | macros/ASTManagement/AST_ParseIfExprStruct.sci | 51 |
1 files changed, 45 insertions, 6 deletions
diff --git a/macros/ASTManagement/AST_ParseIfExprStruct.sci b/macros/ASTManagement/AST_ParseIfExprStruct.sci index a7da0128..2bfb08dd 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,31 +91,57 @@ elseif (ASTIfExpType=='elseif') else error(9999, 'Unknown ASTIfExpType ""'+ASTIfExpType+'"".'); end - +NOp=0; +Op=[]; while (flagendpop == 0) if (IfExprField~='<EOL>') 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:') + 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; + //IfExprField = AST_PopASTStack(); else - NIfCondArg = NIfCondArg + 1; - IfCondArg(NIfCondArg) = IfExprField; - [IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(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; + end + //[IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField); end end end + if flagendpop == 0 IfExprField = AST_PopASTStack(); + end + PrintStringInfo('operators are '+IfExprField,ReportFileName,'file','y'); end +IfCondArg = SCI2Cflipud(IfCondArg); + //#RNU_RES_B // ------------------------------------------- // --- Print some info in the report file. --- |