Don't like ads? PRO users don't see any ads ;-)

Tentativa 3

By: brito on Apr 5th, 2012  |  syntax: Haskell  |  size: 1.14 KB  |  hits: 36  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import System.IO
  2.  
  3. main = do  
  4.     handle <- openFile "entrada.c" ReadMode  
  5.     line <- hGetLine handle
  6.     words line
  7.     idcoisas line
  8.     hClose handle
  9.  
  10. idcoisas x
  11.         | (head x) `elem` aritmetico = do { putStrLn "Operador aritmetico: " ++ x; idcoisas (tail x) }
  12.         | (head x) `elem` logico = do { putStrLn "Operador logico: " ++ x; idcoisas (tail x)}
  13.         | (head x) `elem` relacional = do { putStrLn "Operador relacional: " ++ x; idcoisas (tail x)}
  14.         | (head x) `elem` reservada = do { putStrLn "Palavra reservada: " ++ x; idcoisas (tail x)}
  15.         | (head x) == "/*" = comentarios (tail x)
  16.         | (head x) == [] || "//" = do { main }
  17.  
  18. comentarios x
  19.         | (head x) == [] = do { main}
  20.         | (head x) == "*/" = idcoisas (tail x)
  21.         | otherwise = idcoisas (tail x)
  22.  
  23. aritmetico = ["+","*","-","/","=","%","++","--"]
  24. logico = ["&&","||","!"]
  25. relacional = [">",">=","<","<=","==","!=","=>","=<"]
  26. 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"]