plaudern.de

Forumsharing?
Forum suchen
Forum erstellen
Impressum/Kontakt
Datenschutz
AGB
Hilfe

32 User im System
Rekord: 144
(11.09.2023, 16:48 Uhr)

 
 
 Haskell :: Sprache
  Suche:

 Blatt 6 [ohne Text] 27.11.2002 (22:51 Uhr) amo
 Aufgabe 1 27.11.2002 (22:53 Uhr) amo
 Aufgabe 2 27.11.2002 (22:57 Uhr) amo
 Mehrfachtests 29.11.2002 (05:03 Uhr) amo
 Re: Aufgabe 2 - allDifferent 29.11.2002 (05:12 Uhr) amo
 allDifferent2 01.12.2002 (19:39 Uhr) amo
 allDifferent3 01.12.2002 (19:41 Uhr) amo
 allDifferent -> allDifferent3 01.12.2002 (19:57 Uhr) amo
 allDifferent -> allDifferent3 29.11.2002 (04:56 Uhr) amo
 allDifferent4 01.12.2002 (20:08 Uhr) amo
 allDifferent5 01.12.2002 (20:16 Uhr) amo
 allDifferents 01.12.2002 (20:24 Uhr) amo
 Aufgabe 3 - substring 27.11.2002 (22:59 Uhr) amo
 Aufgabe 4 27.11.2002 (23:47 Uhr) amo
 checkHTML 02.12.2002 (07:34 Uhr) amo
 checkHTML 03.12.2002 (19:23 Uhr) amo
> Das hab ich immer noch nicht hinbekommen.
> Hat das schon wer?
> Hier ist mal das, was ich bis jetzt habe:
>
> klammerInhalt :: [a] -> [a]
> klammerInhalt xs = tail (init (xs))
>
> isGeklammert :: Eq a => a -> a -> [a] -> Bool
> isGeklammert o s xs = (head xs == o) && (last xs == s)
>
> isHtmlKlammer :: [[Char]] -> Bool
> isHtmlKlammer = isGeklammert "" ""
> isHeadKlammer :: [[Char]] -> Bool
> isHeadKlammer = isGeklammert "" ""
> isTitleKlammer :: [[Char]] -> Bool
> isTitleKlammer = isGeklammert "" ""
> isMetaKlammer :: [[Char]] -> Bool
> isMetaKlammer = isGeklammert "" ""
> isBodyKlammer :: [[Char]] -> Bool
> isBodyKlammer = isGeklammert "" ""
>
>
> listeBis :: Eq a => a -> [a] -> [a]
> listeBis _ [] = []
> listeBis e (x:xs)
> | e == x = [x]
> | otherwise = x : listeBis e xs
>
>
> anfKlammer :: (Eq a, Show a) => a -> a -> [a] -> [a]
> anfKlammer _ _ [] = []
> anfKlammer o s (x:xs)
> | notInList s xs = error("Uebungsblatt_06.anfKlammer:
> Klammerungsfehler: " ++ show (xs) ++ " enthält die
> schließende Klammer " ++ show s ++ " nicht.")
> | o == x = x : listeBis s xs
> | otherwise = error ("Uebungsblatt_06.anfKlammer:
> Klammerungsfehler: " ++ show (x:xs) ++ " beginnt nicht
> mit " ++ show o ++ ".")
>
>
> trenneAnfKlammernAb :: String -> String -> Char ->
> [String] -> [[String]]
> trenneAnfKlammernAb _ _ _ [] = [[]]
> trenneAnfKlammernAb o s a (x:xs)
> | a == '1' =
> if x == o && inList s xs then
> let ak = anfKlammer o s (x:xs) in
> ak : [drop (length ak - 1) xs]
> else [x:xs]
> | a == '*' =
> if x == o && inList s xs then
> let ak = anfKlammer o s (x:xs) in
> ak : trenneAnfKlammernAb o s a (drop (length ak - 1) xs)
> else [x:xs]
> | a == '+' =
> if x == o && inList s xs then
> let ak = anfKlammer o s (x:xs) in
> ak : trenneAnfKlammernAb o s '*' (drop (length ak - 1)
> xs)
> else error ("Uebungsblatt_06.trenneAnfKlammernAb: Aktion
> " ++ show a ++ ": Klammerpaar " ++ show o ++ " - " ++
> show s ++ " nicht in " ++ show (x:xs) ++ " enthalten.")
> | otherwise = error
> ("Uebungsblatt_06.trenneAnfKlammernAb: Aktion " ++ show a
> ++ " nicht definiert.")
>
>
>
>
> hatBodyKlasse _ = True
> hatHeadKlasse _ = True
>
>
> checkHTML :: String -> Bool
> checkHTML s = let w = words s
> i = klammerInhalt w in
> isHtmlKlammer w && hatHeadKlasse i && hatBodyKlasse i



trenneAnfHeadAb = trenneAnfKlammernAb "<head>" "</head>" '1'
trenneAnfTitleAb = trenneAnfKlammernAb "<title>" "</title>" '1'
trenneAnfMetasAb = trenneAnfKlammernAb "<meta>" "</meta>" '*'

klammerAnListAnf o s (x:xs)
   | o == x && inList s xs = True
   | otherwise = False

headAnListAnf = klammerAnListAnf "<head>" "</head>"
titleAnListAnf = klammerAnListAnf "<title>" "</title>"
metaAnListAnf = klammerAnListAnf "<meta>" "</meta>"
bodyAnListAnf = klammerAnListAnf "<body>" "</body>"

isHeadBodyKlassen xs
   | headAnListAnf xs = isHead hl && notInList "<head>" rL && notInList "</head>" rL && isBody rL
     where headTrenn = trenneAnfHeadAb xs
           hL = head headTrenn
           rL = tail headTrenn
           isHead hL = isHeadKlammer hL && isTitleMetaKlassen hI
              where hI = klammerInhalt hL
                    isTitleMetaKlassen hI
                       | titleAnListAnf hI = isTitle titL && notInList "<title>" titRL && notInList "</title>" titRL && isMetaKlassen titRL
                          where titTrenn = trenneAnfTitleAb hI
                                titL = head titTrenn
                                titRL = tail titTrenn
                                isTitle titL = isTitleKlammer titL
                                isMetaKlassen titRL
                                   | titRL == [] = True
                                   | metaAnListAnf titRL = isMetas mL && mRL == []
                                      where mTr = trenneAnfMetasAb titRL
                                            mL = init mTr
                                            mRL = last mTr
                                            isMetas [] = True
                                            isMetas (m:ms) = isMetaKlammer m && isMetas ms
                                   | otherwise = False
                       | otherwise = False
           isBody rL = isBodyKlammer rL
   | otherwise = False


checkHTML :: String -> Bool
checkHTML s = let w = words s
                  i = klammerInhalt w
                  in isHtmlKlammer w && isHeadBodyKlassen i



isHeadBodyKlassen liefert beim Laden beim Parsen einen Syntax Error:

ERROR "uebbl06.hs":144 - Syntax error in input (unexpected `|')

Weiß jemand, was da falsch ist?
 checkHTML - Primitivversion 04.12.2002 (05:03 Uhr) amo
 Re: checkHTML - Primitivversion 04.12.2002 (05:09 Uhr) amo
 ganze Datei für Blatt 6 04.12.2002 (12:52 Uhr) amo

Dies ist ein Beitrag aus dem Forum "Haskell". Die Überschrift des Forums ist "Haskell :: Sprache".
Komplette Diskussion aufklappen | Inhaltsverzeichnis Forum Haskell | Forenübersicht | plaudern.de-Homepage

Kostenloses Forumhosting von plaudern.de. Dieses Forum im eigenen Design entführen. Impressum



Papier sparen durch druckoptimierte Webseiten. Wie es geht erfahren Sie unter www.baummord.de.