úÎ3b0'=      !"#$%&'()*+,-./0123456789:;<(c) 2016 Nicolas MattiaMIT$Nicolas Mattia <nicolas@nmattia.com> experimentalNoneI  Command (baz in the example above)Target dependency (bar in the example above)Makefile target (foo in the example above) foo = bar foo := bar  foo ::= bar  foo ?= bar  foo != bar  foo += bar  A makefile entry, either a rule (target: dep1 dep1; commands) or a variable assignment ( hello = world or hello := world)-A Makefile object, a list of makefile entries     None[$Parse makefile.$Tries to open and parse a file name Makefile in the current directory.%'Parse the specified file as a makefile.'Parser for a makefile(DParser for a makefile entry (either a rule or a variable assignment))#Parser of variable assignment (see p). Note that leading and trailing whitespaces will be stripped both from the variable name and assigned value.uNote that this tries to follow GNU make's (crazy) behavior when it comes to variable names and assignment operators.&Atto.parseOnly assignment "foo = bar ".Right (Assignment RecursiveAssign "foo" "bar")'Atto.parseOnly assignment "foo := bar "+Right (Assignment SimpleAssign "foo" "bar")(Atto.parseOnly assignment "foo ::= bar "0Right (Assignment SimplePosixAssign "foo" "bar")&Atto.parseOnly assignment "foo?= bar "0Right (Assignment ConditionalAssign "foo" "bar")'Atto.parseOnly assignment "foo??= bar "1Right (Assignment ConditionalAssign "foo?" "bar")(Atto.parseOnly assignment "foo!?!= bar ",Right (Assignment ShellAssign "foo!?" "bar")*Read chars while some (=, monadic) predicate is >.XXX: extremely inefficient.+OParse a variable name, not consuming any of the assignment operator. See also ).*Atto.parseOnly variableName "foo!?!= bar " Right "foo!?",MParse an assignment type, not consuming any of the assigned value. See also ).'Atto.parseOnly assignmentType "!= bar "Right ShellAssign-Parser for an entire rule.Parser for a command/Parser for a (rule) target0Parser for a (rule) dependency1:Parser for a comment (the comment starts with the hashtag))Atto.parseOnly comment "# I AM A COMMENT"Right " I AM A COMMENT"2Consume a newline character ('\n')3BConsume an empty line (potentially containing spaces and/or tabs).+Atto.parseOnly emptyLine "\t\t \t \t\n"Right ()5cGet the contents until the end of the (potentially multi) line. Multiple lines are separated by a \M char and individual lines will be stripped and spaces will be interspersed. The final n character is consumed.2Atto.parseOnly toEscapedLineEnd "foo bar \\\n baz"Right "foo bar baz"AAtto.parseOnly toEscapedLineEnd "foo \t\\\n bar \\\n baz \\\n \t"Right "foo bar baz"$%&'()*+,-./0123456$%&'()*+,-./0123456$%&'()*+,-./0123456$%&'()*+,-./0123456None$%&'()+,-./015$%&'()+,-./015None789:;<789:;<789:;<789:;<None7887?      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE'makefile-1.0.0.3-Llcogoh4u9UGvldFp60xGs Data.MakefileData.Makefile.Parse.InternalData.Makefile.Render.InternalData.Makefile.ParseData.Makefile.RenderCommand DependencyTargetAssignmentTypeRecursiveAssign SimpleAssignSimplePosixAssignConditionalAssign ShellAssign AppendAssignEntryRule AssignmentMakefileentries$fShowAssignmentType$fEqAssignmentType$fEnumAssignmentType$fBoundedAssignmentType $fShowTarget $fEqTarget$fIsStringTarget$fShowDependency$fEqDependency$fIsStringDependency $fShowCommand $fEqCommand$fIsStringCommand $fShowEntry $fEqEntry$fShowMakefile $fEqMakefile parseMakefileparseAsMakefileparseMakefileContentsmakefileentry assignment takeWhileM variableNameassignmentTyperulecommandtarget dependencycommentnextLine emptyLine toLineEndtoEscapedLineEndstripped writeMakefileencodeMakefilerenderMakefile renderEntry renderDep renderCmd*attoparsec-0.13.1.0-2PCi7JKM9L2JG9oGF0MBq1Data.Attoparsec.Text.InternalParserghc-prim GHC.TypesTrue