diff options
Diffstat (limited to 'src/Grasp')
| -rw-r--r-- | src/Grasp/Interpreter.hs | 52 | 
1 files changed, 51 insertions, 1 deletions
diff --git a/src/Grasp/Interpreter.hs b/src/Grasp/Interpreter.hs index e84cfc5..5086078 100644 --- a/src/Grasp/Interpreter.hs +++ b/src/Grasp/Interpreter.hs @@ -3,9 +3,11 @@ module Grasp.Interpreter (      ) where +import Text.Read( readMaybe )  import Data.Graph.Inductive.Graph( Node, LNode, LEdge, (&) )  import qualified Data.Graph.Inductive.Graph as Graph  import Data.List +import Data.Maybe  import Grasp.Types  import Grasp.Parser @@ -74,7 +76,7 @@ execute g (cur:rest) out =  		        "getc" -> getcI g cur  		        "putc" -> putcI g cur  		        "gets" -> getsI g cur -		        "puts" -> puts g cur +		        "puts" -> putsI g cur  		        x | isInteger x -> implicitPushI g cur @@ -85,24 +87,72 @@ execute g (cur:rest) out =  isInteger :: String -> Bool +isInteger x = +	let check = readMaybe x :: Maybe Int +	in if (isJust check) then True else False + + + +reLabel :: GraspProgram -> Node -> String -> GraspProgram +reLabel g n s = +	let (mc,d) = Graph.match n g +	    c = fromJust mc +	    c' = (\(w,x,y,z) -> (w,x,s,z)) $ c +	in if (isNothing mc) then g else c' & d + +  setI :: GraspProgram -> IP -> (GraspProgram, IP) +setI g ip = (g,ip) +  newI :: GraspProgram -> IP -> (GraspProgram, IP) +newI g ip = (g,ip) +  delI :: GraspProgram -> IP -> (GraspProgram, IP) +delI g ip = (g,ip) +  pushI :: GraspProgram -> IP -> (GraspProgram, IP) +pushI g ip = (g,ip) +  popI :: GraspProgram -> IP -> (GraspProgram, IP) +popI g ip = (g,ip) +  pickI :: GraspProgram -> IP -> (GraspProgram, IP) +pickI g ip = (g,ip) +  callI :: GraspProgram -> IP -> (GraspProgram, IP) +callI g ip = (g,ip) +  retI :: GraspProgram -> IP -> (GraspProgram, IP) +retI g ip = (g,ip) +  addI :: GraspProgram -> IP -> (GraspProgram, IP) +addI g ip = (g,ip) +  mulI :: GraspProgram -> IP -> (GraspProgram, IP) +mulI g ip = (g,ip) +  subI :: GraspProgram -> IP -> (GraspProgram, IP) +subI g ip = (g,ip) +  divI :: GraspProgram -> IP -> (GraspProgram, IP) +divI g ip = (g,ip) +  modI :: GraspProgram -> IP -> (GraspProgram, IP) +modI g ip = (g,ip) +  getcI :: GraspProgram -> IP -> (GraspProgram, IP) +getcI g ip = (g,ip) +  putcI :: GraspProgram -> IP -> (GraspProgram, IP) +putcI g ip = (g,ip) +  getsI :: GraspProgram -> IP -> (GraspProgram, IP) +getsI g ip = (g,ip) +  putsI :: GraspProgram -> IP -> (GraspProgram, IP) +putsI g ip = (g,ip)  implicitPushI :: GraspProgram -> IP -> (GraspProgram, IP) +implicitPushI g ip = (g,ip)  | 
