module Exercise04 where {-WETT-} simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating :: Bool -> Integer -> [String] -> String -> Bool -- s146g lastSpace inTag currentTags xml simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating _ _ currentTagsUsedToTestIfAllTagsIsClosedHere "" = null currentTagsUsedToTestIfAllTagsIsClosedHere simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating _ inWhichKindOfTag0IsNotInTag1IsOpeningAnd2IsClosing currentTags (' ' : xmlAfterTheSpaceWhichWeChangeLastSpaceToTrueNow) = simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating True inWhichKindOfTag0IsNotInTag1IsOpeningAnd2IsClosing currentTags xmlAfterTheSpaceWhichWeChangeLastSpaceToTrueNow simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating _ 0 currentTags ('<' : '/' : xmlAfterThisClosingTagSoWeChangeInTagTo2) = simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating False 2 ("" : currentTags) xmlAfterThisClosingTagSoWeChangeInTagTo2 simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating _ inWhichKindOfTag0IsNotInTag1IsOpeningAnd2IsClosing currentTags ('<' : ohWeHaveAOpeningTag) = inWhichKindOfTag0IsNotInTag1IsOpeningAnd2IsClosing == 0 && simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating False 1 ("" : currentTags) ohWeHaveAOpeningTag simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating _ 0 _ ('>' : _sadlyThisSymbolMustBeAfterSomeTag) = False simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating _ 1 currentTags ('>' : weHaveEndOfAOpeningTag) = theFunctionFilledWithFalseAnd0 currentTags weHaveEndOfAOpeningTag simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating _ 2 (theTagWeJustEnd : shouldBeTheSameTagWeOpenedBefore : restOfCurrentTags) ('>' : weHaveEndOfClosingTagSoWeNeedToCheckIfLastTweTagIsSame) = theTagWeJustEnd == shouldBeTheSameTagWeOpenedBefore && theFunctionFilledWithFalseAnd0 restOfCurrentTags weHaveEndOfClosingTagSoWeNeedToCheckIfLastTweTagIsSame simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating _ iHopeThisIs0 currentTags ('/' : thisSymbolCantBeInAnyTagID) = iHopeThisIs0 == 0 && theFunctionFilledWithFalseAnd0 currentTags thisSymbolCantBeInAnyTagID simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating _ 0 currentTags (_ : lookWeHaveACharacterOutSideTheTagSoWeDontNeedIt) = theFunctionFilledWithFalseAnd0 currentTags lookWeHaveACharacterOutSideTheTagSoWeDontNeedIt simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating False weAreInTagNow (lastTagWhereThisCharacterAppendsOn : restCurrentTags) (thatIsTheCharacter : noteWeCantHaveSpaceInTagID) = simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating False weAreInTagNow ((thatIsTheCharacter : lastTagWhereThisCharacterAppendsOn) : restCurrentTags) noteWeCantHaveSpaceInTagID simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating _ _ _ _nowWeHaveSomeShadyXML = False theFunctionFilledWithFalseAnd0 :: [String] -> String -> Bool theFunctionFilledWithFalseAnd0 = simonMiniStateMachineWhichIHopeCouldAnalyseSyntaxOfThisMiniXMLInOrderToFinishTheHomeworkOfFPVMadeBySimonInTheLastDayOfDeadlineYesHeIsProcrastinating False 0 xmlLight :: String -> Bool xmlLight = theFunctionFilledWithFalseAnd0 [] {-TTEW-}