From 3f52712f806fbd80d66dfdcaff401e5cf94dcca4 Mon Sep 17 00:00:00 2001
From: yash1112
Date: Fri, 7 Jul 2017 21:20:49 +0530
Subject: sci2c arduino updated

---
 macros/ASTManagement/AST_ParseIfExprStruct.sci | 119 +++++++++++++++++++++++++
 1 file changed, 119 insertions(+)
 create mode 100644 macros/ASTManagement/AST_ParseIfExprStruct.sci

(limited to 'macros/ASTManagement/AST_ParseIfExprStruct.sci')

diff --git a/macros/ASTManagement/AST_ParseIfExprStruct.sci b/macros/ASTManagement/AST_ParseIfExprStruct.sci
new file mode 100644
index 00000000..a7da0128
--- /dev/null
+++ b/macros/ASTManagement/AST_ParseIfExprStruct.sci
@@ -0,0 +1,119 @@
+function [IfCondArg,NIfCondArg] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType)
+// function [IfCondArg,NIfCondArg] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType)
+// -----------------------------------------------------------------
+//#RNU_RES_B
+// Parses the IfExpression structure of the AST.
+//
+//   txt=['If '
+//        '  Expression:' 
+//        '     '+string(I.expression)
+//        '  If Statements'
+//        '    '+objectlist2string(I.then)]
+//   for e=I.elseifs
+//     txt=[txt;
+// 	 '  Else If Expression'
+// 	 '     '+string(e.expression)
+// 	 '  Else If Statements'
+//        '    '+objectlist2string(e.then)]
+//   end
+//   txt=[txt;
+//        '  Else Statements'
+//        '    '+objectlist2string(I.else)
+//        'EndIf']
+//
+//#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
+// -----------------------------------------------------------------
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+SCI2CNInArgCheck(argn(2),3,3);
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname   = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName  = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+//#RNU_RES_B
+PrintStringInfo('***Retrieving '+ASTIfExpType+' expression parameters from AST***',ReportFileName,'file','y');
+//#RNU_RES_E
+IfCondArg  = [];
+NIfCondArg = 0;
+
+global SCI2CSTACK 
+global StackPosition;
+global STACKDEDUG
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// ------------------------------------
+// --- Read if condition variables. ---
+// ------------------------------------
+flagendpop = 0;
+IfExprField = AST_PopASTStack();
+if (ASTIfExpType=='if')
+   if (IfExprField=='Expression:')
+      flagendpop = 1;
+      // Pop Again the If tag from the AST.
+      IfExprField = AST_PopASTStack();
+   end
+elseif (ASTIfExpType=='elseif')
+   if (IfExprField=='Else If Expression')
+      flagendpop = 1;
+   end
+else
+   error(9999, 'Unknown ASTIfExpType ""'+ASTIfExpType+'"".');
+end
+
+while (flagendpop == 0)
+   if (IfExprField~='<EOL>')   
+      if (ASTIfExpType=='if')
+         if (IfExprField=='Expression:')
+            flagendpop = 1;
+            // Pop Again the If tag from the AST.
+            IfExprField = AST_PopASTStack();
+         else
+            NIfCondArg = NIfCondArg + 1;
+            [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);
+         end
+      end
+   end
+   IfExprField = AST_PopASTStack();
+end
+
+//#RNU_RES_B
+// -------------------------------------------
+// --- Print some info in the report file. ---
+// -------------------------------------------
+PrintStringInfo('N '+ASTIfExpType+' Condition Arguments: '+string(NIfCondArg),ReportFileName,'file','y');
+//#RNU_RES_E
+for counterifcondargs = 1:NIfCondArg
+   //#RNU_RES_B
+   PrintStringInfo(ASTIfExpType+' Condition Argument Number '+string(counterifcondargs)+': '+IfCondArg(counterifcondargs),...
+      ReportFileName,'file','y');
+   //#RNU_RES_E
+end
+
+endfunction
-- 
cgit