
Tentativa 3
By:
brito on
Apr 5th, 2012 | syntax:
Haskell | size: 1.14 KB | hits: 36 | expires: Never
import System.IO
main = do
handle <- openFile "entrada.c" ReadMode
line <- hGetLine handle
words line
idcoisas line
hClose handle
idcoisas x
| (head x) `elem` aritmetico = do { putStrLn "Operador aritmetico: " ++ x; idcoisas (tail x) }
| (head x) `elem` logico = do { putStrLn "Operador logico: " ++ x; idcoisas (tail x)}
| (head x) `elem` relacional = do { putStrLn "Operador relacional: " ++ x; idcoisas (tail x)}
| (head x) `elem` reservada = do { putStrLn "Palavra reservada: " ++ x; idcoisas (tail x)}
| (head x) == "/*" = comentarios (tail x)
| (head x) == [] || "//" = do { main }
comentarios x
| (head x) == [] = do { main}
| (head x) == "*/" = idcoisas (tail x)
| otherwise = idcoisas (tail x)
aritmetico = ["+","*","-","/","=","%","++","--"]
logico = ["&&","||","!"]
relacional = [">",">=","<","<=","==","!=","=>","=<"]
reservada = ["auto","break","case","char","const","continue","default","do","double","else","enum","extern","float","for","goto","if","int","long","register","return","short","signed","sizeof","static","struct","switch","typedef","union","unsigned","void","volatile","while"]