úÎ3/Ã?      !"#$%&'()*+,-./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.-Parser for an entire rule.Parser for a command/Parser for a (rule) target0Parser for a (rule) dependency13Parser for variable name in declaration (lazy set, var = x)(Atto.parseOnly lazyVar "CFLAGS=-c -Wall"Right "CFLAGS"28Parser for variable name in declaration (immediate set, var := x)(Atto.parseOnly immVar "CFLAGS:=-c -Wall"Right "CFLAGS"3:Parser for a comment (the comment starts with the hashtag))Atto.parseOnly comment "# I AM A COMMENT"Right " I AM A COMMENT"4Consume a newline character ('\n')5BConsume an empty line (potentially containing spaces and/or tabs).+Atto.parseOnly emptyLine "\t\t \t \t\n"Right ()7cGet 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"$%&'()*+,-./012345678$%&'()*+,-./012345678$%&'()*+,-./012345678$%&'()*+,-./012345678None $%&'()-./0123 $%&'()-./0123None9:;<=>9:;<=>9:;<=>9:;<=>None9::9A      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG'makefile-1.0.0.1-J29YB3k0VeG6lxq3CXepKf 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 dependencylazyVarimmVarcommentnextLine emptyLine toLineEndtoEscapedLineEndstripped writeMakefileencodeMakefilerenderMakefile renderEntry renderDep renderCmd*attoparsec-0.13.1.0-KzfPzaM5T5V7RPwnBNqmswData.Attoparsec.Text.InternalParserghc-prim GHC.TypesTrue