mZ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None *+-024:CEHM  ! ! None *+-024:CEHMC%~&#'not(-*or+and,~=-==.>=/>0<=1<2..3<<4>>5|6~7&8%9^://;/<*=->+? Zero or more As, separated by , or ;.B expC name = expD [exp1] = exp2EA table constructor. /http://www.lua.org/manual/5.3/manual.html#3.4.9F { x = 5, [f(1)] = 6, 7 }H  (x, y, ...) block endJ "str"K { x = exp }L (exp1, exp2)M5A function call. May be a statement or an expression. /http://www.lua.org/manual/5.3/manual.html#3.3.6 0http://www.lua.org/manual/5.3/manual.html#3.4.10T One or more Xs.V Zero or more Xs.XAn expression. -http://www.lua.org/manual/5.3/manual.html#3.4d One or more fs.f A variable. -http://www.lua.org/manual/5.3/manual.html#3.2g table.fieldh table[exp]i xk  foo.bar:bazm return exp1, exp2n A statement. -http://www.lua.org/manual/5.3/manual.html#3.3o local x, y, zp local function name bodyq function name bodyr for a, b, c in exp1, exp2, exp3 do block ends for x = exp do block endt if exp then block else block endu repeat block until expv while exp do block endw do block endx goto labely breakz  ::label::{ foo.bar(args)| var1, var2, var3 = exp1, exp2, exp3} ;~=A block of statements, possibly ending in a return statement. /http://www.lua.org/manual/5.3/manual.html#3.3.1 A chunk; Lua's compilation unit. /http://www.lua.org/manual/5.3/manual.html#3.3.2 One or more s. Zero or more s.eAn identifier, defined as any string of letters, digits, or underscores, not beginning with a digit. -http://www.lua.org/manual/5.3/manual.html#3.1"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~e"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~e~n}|{zyxwvutsrqpolmjkfihgdeXcba`_^]\[ZYVWTUPSRQMONILKJGHEFADCB?@)>=<;:9876543210/.-,+*$('&%"#<"#$('&%)>=<;:9876543210/.-,+*?@ADCBEFGHILKJMONPSRQTUVWX cba`_^]\[ZYdefihgjklmn}|{zyxwvutsrqpo~ Safe-Inferred *+-024:CEHM Safe-Inferred *+-024:CEHM9"'......,:;::][}{)(= <>=<=~===//>><<|~&#^%/*-+whileuntiltruethenreturnrepeatornotnillocalinifgotofunctionforfalseendelseifelsedobreakand???=None *+-024:CEHM !lex :: String -> [L Token] lex =  .    ""  lex "5+5""[TkIntLit "5",TkPlus,TkIntLit "5"] lex "foo?"2[TkIdent "foo"*** Exception: Lexical error at :1:4              None *+-024:CEHMAST node source location and constituent tokens. The tokens are provided for style-checking purposes; with them, you may assert proper whitespace protocol, alignment, trailing commas on table constructors, and whatever other subjectivities.0Source location; spans the entirety of the node.*Parsed tokens involved in node production.Parse a Lua file. May throw .  =   1Parse Lua code with the given grammar. May throw ."parseLuaWith luaExprssion "" "5+5"Binop (NodeInfo8 { nodeLoc = Loc (Pos "" 1 1 0) (Pos "" 1 3 2)B , nodeTokens = fromList [TkIntLit "5",TkPlus,TkIntLit "5"] }) (Plus (NodeInfo< { nodeLoc = Loc (Pos "" 1 2 1) (Pos "" 1 2 1), , nodeTokens = fromList [TkPlus] })) (Integer (NodeInfo< { nodeLoc = Loc (Pos "" 1 1 0) (Pos "" 1 1 0)2 , nodeTokens = fromList [TkIntLit "5"] }) "5") (Integer (NodeInfo< { nodeLoc = Loc (Pos "" 1 3 2) (Pos "" 1 3 2)2 , nodeTokens = fromList [TkIntLit "5"] }) "5")All AST nodes are s over their annotation:/(() <$) <$> parseLuaWith luaExpression "" "5+5"4Binop () (Plus ()) (Integer () "5") (Integer () "5")Grammar for a Lua chunk; i.e. a Lua compilation unit, defined as a list of statements. This is the grammar you should use to parse real Lua code.7Grammar for a single Lua statement. Mostly subsumed by .hGrammar for a Lua expression. Provided for smaller REPL-like parsing that operates only on expressions.s$Source filename (used in locations).Source contents.Grammar to parse with.$Source filename (used in locations).Source contents. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx  l !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJJKKLMNNOOPQRSTUTVWXYZZ[[\/4]^_`abcdeffghijkkllmnopqrstuvwxyz{|}}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrslanguage-lua2-0.1.0.3Language.Lua.ParserLanguage.Lua.LexerLanguage.Lua.PrettyLanguage.Lua.SyntaxLanguage.Lua.TokenLanguage.Lua.Internal Earley-0.10.0Text.Earley.Internalreport fullParses allParsesparser unconsumedexpectedpositionReportEndedParsedResultlexer-applicative-2.1.0.1Language.Lexer.ApplicativerunLexerstreamToEitherList streamToList LexicalErrorTsTokenTsEofTsError TokenStream wl-pprint-1.2Text.PrettyPrint.Leijen displayIOdisplayS renderCompact renderPretty prettyListprettyPrettyDocSEmptySCharSTextSLine SimpleDoc AnnotatedannUnop BitwiseNotLengthNotNegateBinopOrAndNeqEqGeqGtLeqLtConcatLshiftRshift BitwiseOr BitwiseXor BitwiseAndModuloExponentFloorDivFloatDivMultMinusPlus FieldListField FieldIdentFieldExpTableConstructor FunctionBody FunctionArgs ArgsString ArgsTableArgs FunctionCall MethodCallPrefixExpressionParens PrefixFunCall PrefixVarExpressionList1ExpressionList Expression TableCtor PrefixExpFunDefVarargStringFloatIntegerBoolNil VariableList1Variable VarFieldNameVarFieldVarIdent FunctionNameReturnStatement Statement LocalAssignLocalFunAssign FunAssignForInForIfRepeatWhileDoGotoBreakLabelFunCallAssign EmptyStmtBlockChunk IdentList1 IdentListIdentToken TkFloatLitTkIntLit TkStringLitTkIdent TkDoubleQuoteTkQuoteTkVarargTkConcatTkDotTkCommaTkColonTkSemiTkLabel TkRBracket TkLBracketTkRBraceTkLBraceTkRParenTkLParenTkAssignTkGtTkLtTkGeqTkLeqTkNeqTkEq TkFloorDivTkRShiftTkLShift TkBitwiseOrTkTilde TkBitwiseAndTkLength TkExponentTkModulo TkFloatDivTkMultTkDashTkPlusTkWhileTkUntilTkTrueTkThenTkReturnTkRepeatTkOrTkNotTkNilTkLocalTkInTkIfTkGoto TkFunctionTkForTkFalseTkEndTkElseifTkElseTkDoTkBreakTkAnd showTokenluaLexerLuaParseExceptionLuaAmbiguousParseExceptionLuaLexException LuaGrammarNodeInfo_nodeLoc _nodeTokensnodeLoc nodeTokensparseLua parseLuaWithluaChunk luaStatement luaExpressionsepBy$fAnnotatedUnop$fAnnotatedBinop$fAnnotatedFieldList$fAnnotatedField$fAnnotatedTableConstructor$fAnnotatedFunctionBody$fAnnotatedFunctionArgs$fAnnotatedFunctionCall$fAnnotatedPrefixExpression$fAnnotatedExpressionList1$fAnnotatedExpressionList$fAnnotatedExpression$fAnnotatedVariableList1$fAnnotatedVariable$fAnnotatedFunctionName$fAnnotatedReturnStatement$fAnnotatedStatement$fAnnotatedBlock$fAnnotatedIdentList1$fAnnotatedIdentList$fAnnotatedIdent $fPrettyUnop $fPrettyBinop $fPrettyField$fPrettyTableConstructor$fPrettyFunctionBody$fPrettyFunctionArgs$fPrettyFunctionCall$fPrettyPrefixExpression$fPrettyExpression$fPrettyVariable$fPrettyFunctionName$fPrettyReturnStatement$fPrettyStatement $fPrettyBlock $fPrettyIdent<$$> luaTokensluaToken luaIdentifier luaStringLit luaIntLit luaFloatLitluaLongBracketStringLitPrefixluaLongBracketStringLitSuffix luaWhitespaceluaBlockCommentPrefixluaBlockCommentSuffixluaLineCommentoneOfandOrbetweenhexDigitdigitisAlpha isLowercase isUppercase charBetweenexactlyNbetweenNupToNbaseGHC.BaseFunctor HasNodeInfonodeInfogrammarmkBlock mkEmptyStmtmkAssign mkFunCallmkLabelmkBreakmkGotomkDomkWhilemkRepeatmkIfmkFormkForIn mkFunAssignmkLocalFunAssign mkLocalAssignmkReturnStatementmkFunctionName mkVarIdent mkVarFieldmkVarFieldNamemkNilmkBool mkIntegermkFloatmkStringmkVararg mkPrefixExp mkTableCtor mkPrefixVarmkPrefixFunCallmkParensmkFunctionCallmkArgs mkArgsTable mkArgsStringmkFunctionBodymkTableConstructor mkFieldExp mkFieldIdentmkField mkFieldList injectLocsepBy1breakcoloncommado'dotlabelelse'elseifendassignfalsefloatLitforfunctiongotoidentif'in'intLitlbracelbracketlocallparennilrbracerbracketrepeatreturn'rparensemi stringLitthen'varargtrueuntilwhile locSymbol locSatisfy$fExceptionLuaParseException$fShowLuaParseException$fHasNodeInfoMaybe$fHasNodeInfoNonEmpty$fHasNodeInfoSeq$fHasNodeInfo[]$fHasNodeInfo(,,,)$fHasNodeInfo(,,)$fHasNodeInfo(,)$fHasNodeInfoast$fHasNodeInfoL$fHasNodeInfoNodeInfo$fMonoidNodeInfo