úÎ6Ç2ðG      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF(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)JCatch all value for comments, empty lines and lines that failed to parse.-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.. Similar to G. but fails if all input has not been consumed./Parser for a makefile0DParser for a makefile entry (either a rule or a variable assignment)1#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. parseAll assignment "foo = bar ".Right (Assignment RecursiveAssign "foo" "bar")!parseAll assignment "foo := bar "+Right (Assignment SimpleAssign "foo" "bar")"parseAll assignment "foo ::= bar "0Right (Assignment SimplePosixAssign "foo" "bar") parseAll assignment "foo?= bar "0Right (Assignment ConditionalAssign "foo" "bar")!parseAll assignment "foo??= bar "1Right (Assignment ConditionalAssign "foo?" "bar")"parseAll assignment "foo!?!= bar ",Right (Assignment ShellAssign "foo!?" "bar")2Read chars while some (H, monadic) predicate is I.XXX: extremely inefficient.3OParse a variable name, not consuming any of the assignment operator. See also 1.*Atto.parseOnly variableName "foo!?!= bar " Right "foo!?"4MParse an assignment type, not consuming any of the assigned value. See also 1.'Atto.parseOnly assignmentType "!= bar "Right ShellAssign5Parser for an entire rule6 Succeeds on J. (line end) or if the end of input is reached.7Parser for a command9Parser for a (rule) target:Parser for a (rule) dependency;PCatch all, used for * comments, empty lines * lines that failed to parse'parseAll otherLine "# I AM A COMMENT\n"$Right (OtherLine "# I AM A COMMENT") Ensure all  Ls consume the end of line: >>> parseAll otherLine "n" Right (OtherLine "")=cGet 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"+,-./0123456789:;<=>+,-./0123456789:;<=>+,-./0123456789:;<=>+,-./0123456789:;<=>None+,-/0134579:;=+,-/0134579:;=None?@ABCDEF?@ABCDEF?@ABCDEF?@ABCDEFNone?@@?K      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKIJLMNOIJPQ'makefile-1.1.0.0-Hw5oVQCxwNm1whkIFy2PZt Data.MakefileData.Makefile.Parse.InternalData.Makefile.Render.InternalData.Makefile.ParseData.Makefile.RenderCommand DependencyTargetAssignmentTypeRecursiveAssign SimpleAssignSimplePosixAssignConditionalAssign ShellAssign AppendAssignEntryRule Assignment OtherLineMakefileentries$fShowAssignmentType$fReadAssignmentType$fEqAssignmentType$fEnumAssignmentType$fBoundedAssignmentType $fShowTarget $fReadTarget $fEqTarget$fIsStringTarget$fShowDependency$fReadDependency$fEqDependency$fIsStringDependency $fShowCommand $fReadCommand $fEqCommand$fIsStringCommand $fShowEntry $fReadEntry $fEqEntry$fShowMakefile$fReadMakefile $fEqMakefile parseMakefileparseAsMakefileparseMakefileContentsparseAllmakefileentry assignment takeWhileM variableNameassignmentTyperule endOfLine'command recipeLinetarget dependency otherLine toLineEndtoEscapedLineEndstripped writeMakefileencodeMakefilerenderMakefile encodeEntry renderEntry intercalate renderDep renderCmd*attoparsec-0.13.2.0-AfH4AJNBvD32svvRrV8DFvData.Attoparsec.Text.Internal parseOnlyParserghc-prim GHC.TypesTrue endOfLine