module Main where import Util import qualified Data.Map as Map import qualified Data.Set as Set main = do s1 <- readFile "/home/jonatan/unified_sblex_update/dalin.txt" s2 <- getContents putStrLn $ process s2 (table (lines s1) Map.empty) process [] m = [] process ('<':'L':'e':'x':'i':'c':'o':'n':'>':s) m = "" ++ process s m process ('<':'e':'i':'d':'>':s) m = case span (/= '<') s of (lem,_:_:_:_:_:_:_:r) -> case Map.lookup lem m of Nothing -> concat ["", lem, "\n"] ++ process r m Just s -> concat ("" : lem : "\n" : [concat [" ",s,"\n"] | s <- Set.toList s]) ++ process r m process (c:cs) m = c:process cs m table [] m = m table (s:ss) m = table ss (ins s m) where ins s m = case untab s of [_,_,_,_,_,lex,lem,_] -> Map.insertWith Set.union lem (Set.fromList (words lex)) m _ -> m