packages feed

glualint 1.24.6 → 1.25.0

raw patch · 20 files changed

+11149/−10045 lines, 20 filesdep +tastydep +tasty-goldendep ~basedep ~bytestringdep ~filepathPVP ok

version bump matches the API change (PVP)

Dependencies added: tasty, tasty-golden

Dependency ranges changed: base, bytestring, filepath

API changes (from Hackage documentation)

- GLua.AG.PrettyPrint: [isLastDefinedVar_Syn_VarsList] :: Syn_VarsList -> Bool
- GLua.AG.PrettyPrint: [potentiallyAmbiguousAsStatement_Inh_MStat] :: Inh_MStat -> Bool
- GLua.AG.PrettyPrint: [potentiallyAmbiguousAsStatement_Inh_Stat] :: Inh_Stat -> Bool
- GLua.AG.PrettyPrint: [potentiallyAmbiguousAsStatement_Syn_MStatList] :: Syn_MStatList -> Bool
- GLua.AG.PrettyPrint: [potentiallyAmbiguousAsStatement_Syn_MStat] :: Syn_MStat -> Bool
- GLua.AG.PrettyPrint: [potentiallyAmbiguousAsStatement_Syn_PrefixExp] :: Syn_PrefixExp -> Bool
- GLua.AG.PrettyPrint: [potentiallyAmbiguousAsStatement_Syn_Stat] :: Syn_Stat -> Bool
- GLua.AG.PrettyPrint: [wouldBeAmbiguousIfNextStatementIsExprVar_Syn_Declaration] :: Syn_Declaration -> Bool
- GLua.AG.PrettyPrint: [wouldBeAmbiguousIfNextStatementIsExprVar_Syn_Expr] :: Syn_Expr -> Bool
- GLua.AG.PrettyPrint: [wouldBeAmbiguousIfNextStatementIsExprVar_Syn_MExpr] :: Syn_MExpr -> Bool
- GLua.AG.PrettyPrint: [wouldBeAmbiguousIfNextStatementIsExprVar_Syn_MaybeMExpr] :: Syn_MaybeMExpr -> Bool
- GLua.AG.PrettyPrint: [wouldBeAmbiguousIfNextStatementIsExprVar_Syn_VarsList] :: Syn_VarsList -> Bool
+ GLua.AG.PrettyPrint: [endsWithPrefixExpression_Syn_Declaration] :: Syn_Declaration -> Bool
+ GLua.AG.PrettyPrint: [endsWithPrefixExpression_Syn_Expr] :: Syn_Expr -> Bool
+ GLua.AG.PrettyPrint: [endsWithPrefixExpression_Syn_MExpr] :: Syn_MExpr -> Bool
+ GLua.AG.PrettyPrint: [endsWithPrefixExpression_Syn_MStat] :: Syn_MStat -> Bool
+ GLua.AG.PrettyPrint: [endsWithPrefixExpression_Syn_MaybeMExpr] :: Syn_MaybeMExpr -> Bool
+ GLua.AG.PrettyPrint: [endsWithPrefixExpression_Syn_Stat] :: Syn_Stat -> Bool
+ GLua.AG.PrettyPrint: [endsWithPrefixExpression_Syn_VarsList] :: Syn_VarsList -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_AReturn] :: Inh_AReturn -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_Args] :: Inh_Args -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_Block] :: Inh_Block -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_Declaration] :: Inh_Declaration -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_ElseIfList] :: Inh_ElseIfList -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_ElseIf] :: Inh_ElseIf -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_Else] :: Inh_Else -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_ExprSuffixList] :: Inh_ExprSuffixList -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_Expr] :: Inh_Expr -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_FieldList] :: Inh_FieldList -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_Field] :: Inh_Field -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_MElseIf] :: Inh_MElseIf -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_MElse] :: Inh_MElse -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_MExprList] :: Inh_MExprList -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_MExpr] :: Inh_MExpr -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_MStatList] :: Inh_MStatList -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_MStat] :: Inh_MStat -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_MaybeMExpr] :: Inh_MaybeMExpr -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_PFExprSuffix] :: Inh_PFExprSuffix -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_PrefixExp] :: Inh_PrefixExp -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_Stat] :: Inh_Stat -> Bool
+ GLua.AG.PrettyPrint: [forceMultiline_Inh_VarsList] :: Inh_VarsList -> Bool
+ GLua.AG.PrettyPrint: [startsWithExprPrefixExpression_Syn_Declaration] :: Syn_Declaration -> Bool
+ GLua.AG.PrettyPrint: [startsWithExprPrefixExpression_Syn_MStatList] :: Syn_MStatList -> Bool
+ GLua.AG.PrettyPrint: [startsWithExprPrefixExpression_Syn_MStat] :: Syn_MStat -> Bool
+ GLua.AG.PrettyPrint: [startsWithExprPrefixExpression_Syn_PrefixExp] :: Syn_PrefixExp -> Bool
+ GLua.AG.PrettyPrint: [startsWithExprPrefixExpression_Syn_Stat] :: Syn_Stat -> Bool
+ GLua.AG.PrettyPrint: [startsWithExprPrefixExpression_Syn_VarsList] :: Syn_VarsList -> Bool
+ GLua.AG.PrettyPrint: [wouldBeAmbiguousWithoutSemicolon_Inh_MStat] :: Inh_MStat -> Bool
+ GLua.AG.PrettyPrint: [wouldBeAmbiguousWithoutSemicolon_Inh_Stat] :: Inh_Stat -> Bool
+ GLua.AG.PrettyPrint: commentsForceMultiline :: [MToken] -> Bool
+ GLua.AG.PrettyPrint: emptyInh_AReturn :: Inh_AReturn
+ GLua.AG.PrettyPrint: emptyInh_AST :: Inh_AST
+ GLua.AG.PrettyPrint: emptyInh_Args :: Inh_Args
+ GLua.AG.PrettyPrint: emptyInh_Block :: Inh_Block
+ GLua.AG.PrettyPrint: emptyInh_Expr :: Inh_Expr
+ GLua.AG.PrettyPrint: emptyInh_Field :: Inh_Field
+ GLua.AG.PrettyPrint: emptyInh_FuncName :: Inh_FuncName
+ GLua.AG.PrettyPrint: emptyInh_MExpr :: Inh_MExpr
+ GLua.AG.PrettyPrint: emptyInh_MStat :: Inh_MStat
+ GLua.AG.PrettyPrint: emptyInh_PFExprSuffix :: Inh_PFExprSuffix
+ GLua.AG.PrettyPrint: emptyInh_PrefixExp :: Inh_PrefixExp
+ GLua.AG.PrettyPrint: emptyInh_Stat :: Inh_Stat
- GLua.AG.PrettyPrint: Inh_AReturn :: [MToken] -> Int -> PrettyPrintConfig -> Inh_AReturn
+ GLua.AG.PrettyPrint: Inh_AReturn :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Inh_AReturn
- GLua.AG.PrettyPrint: Inh_Args :: [MToken] -> Int -> PrettyPrintConfig -> Inh_Args
+ GLua.AG.PrettyPrint: Inh_Args :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Inh_Args
- GLua.AG.PrettyPrint: Inh_Block :: [MToken] -> Int -> PrettyPrintConfig -> Region -> Inh_Block
+ GLua.AG.PrettyPrint: Inh_Block :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Region -> Inh_Block
- GLua.AG.PrettyPrint: Inh_Declaration :: [MToken] -> Int -> PrettyPrintConfig -> Inh_Declaration
+ GLua.AG.PrettyPrint: Inh_Declaration :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Inh_Declaration
- GLua.AG.PrettyPrint: Inh_Else :: [MToken] -> Int -> PrettyPrintConfig -> Region -> Inh_Else
+ GLua.AG.PrettyPrint: Inh_Else :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Region -> Inh_Else
- GLua.AG.PrettyPrint: Inh_ElseIf :: [MToken] -> Int -> PrettyPrintConfig -> Inh_ElseIf
+ GLua.AG.PrettyPrint: Inh_ElseIf :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Inh_ElseIf
- GLua.AG.PrettyPrint: Inh_ElseIfList :: [MToken] -> Int -> PrettyPrintConfig -> Inh_ElseIfList
+ GLua.AG.PrettyPrint: Inh_ElseIfList :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Inh_ElseIfList
- GLua.AG.PrettyPrint: Inh_Expr :: [MToken] -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> Region -> Inh_Expr
+ GLua.AG.PrettyPrint: Inh_Expr :: [MToken] -> Bool -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> Region -> Inh_Expr
- GLua.AG.PrettyPrint: Inh_ExprSuffixList :: [MToken] -> Int -> PrettyPrintConfig -> Inh_ExprSuffixList
+ GLua.AG.PrettyPrint: Inh_ExprSuffixList :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Inh_ExprSuffixList
- GLua.AG.PrettyPrint: Inh_Field :: [MToken] -> Int -> PrettyPrintConfig -> Inh_Field
+ GLua.AG.PrettyPrint: Inh_Field :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Inh_Field
- GLua.AG.PrettyPrint: Inh_FieldList :: [MToken] -> Int -> PrettyPrintConfig -> Inh_FieldList
+ GLua.AG.PrettyPrint: Inh_FieldList :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Inh_FieldList
- GLua.AG.PrettyPrint: Inh_MElse :: [MToken] -> Int -> PrettyPrintConfig -> Region -> Inh_MElse
+ GLua.AG.PrettyPrint: Inh_MElse :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Region -> Inh_MElse
- GLua.AG.PrettyPrint: Inh_MElseIf :: [MToken] -> Int -> PrettyPrintConfig -> Inh_MElseIf
+ GLua.AG.PrettyPrint: Inh_MElseIf :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Inh_MElseIf
- GLua.AG.PrettyPrint: Inh_MExpr :: [MToken] -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> Inh_MExpr
+ GLua.AG.PrettyPrint: Inh_MExpr :: [MToken] -> Bool -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> Inh_MExpr
- GLua.AG.PrettyPrint: Inh_MExprList :: [MToken] -> Int -> Bool -> PrettyPrintConfig -> Inh_MExprList
+ GLua.AG.PrettyPrint: Inh_MExprList :: [MToken] -> Bool -> Int -> Bool -> PrettyPrintConfig -> Inh_MExprList
- GLua.AG.PrettyPrint: Inh_MStat :: [MToken] -> Int -> Bool -> Bool -> PrettyPrintConfig -> Inh_MStat
+ GLua.AG.PrettyPrint: Inh_MStat :: [MToken] -> Bool -> Int -> Bool -> PrettyPrintConfig -> Bool -> Inh_MStat
- GLua.AG.PrettyPrint: Inh_MStatList :: [MToken] -> Int -> Bool -> PrettyPrintConfig -> Region -> Inh_MStatList
+ GLua.AG.PrettyPrint: Inh_MStatList :: [MToken] -> Bool -> Int -> Bool -> PrettyPrintConfig -> Region -> Inh_MStatList
- GLua.AG.PrettyPrint: Inh_MaybeMExpr :: [MToken] -> Int -> PrettyPrintConfig -> Inh_MaybeMExpr
+ GLua.AG.PrettyPrint: Inh_MaybeMExpr :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Inh_MaybeMExpr
- GLua.AG.PrettyPrint: Inh_PFExprSuffix :: [MToken] -> Int -> PrettyPrintConfig -> Inh_PFExprSuffix
+ GLua.AG.PrettyPrint: Inh_PFExprSuffix :: [MToken] -> Bool -> Int -> PrettyPrintConfig -> Inh_PFExprSuffix
- GLua.AG.PrettyPrint: Inh_PrefixExp :: [MToken] -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> Inh_PrefixExp
+ GLua.AG.PrettyPrint: Inh_PrefixExp :: [MToken] -> Bool -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> Inh_PrefixExp
- GLua.AG.PrettyPrint: Inh_Stat :: [MToken] -> Int -> Bool -> Bool -> PrettyPrintConfig -> Region -> Inh_Stat
+ GLua.AG.PrettyPrint: Inh_Stat :: [MToken] -> Bool -> Int -> Bool -> PrettyPrintConfig -> Region -> Bool -> Inh_Stat
- GLua.AG.PrettyPrint: Inh_VarsList :: [MToken] -> Int -> Bool -> PrettyPrintConfig -> Inh_VarsList
+ GLua.AG.PrettyPrint: Inh_VarsList :: [MToken] -> Bool -> Int -> Bool -> PrettyPrintConfig -> Inh_VarsList
- GLua.AG.PrettyPrint: Syn_Declaration :: [MToken] -> Declaration -> Doc -> Bool -> Bool -> Doc -> Doc -> Bool -> Syn_Declaration
+ GLua.AG.PrettyPrint: Syn_Declaration :: [MToken] -> Declaration -> Bool -> Doc -> Bool -> Bool -> Doc -> Bool -> Doc -> Syn_Declaration
- GLua.AG.PrettyPrint: Syn_Expr :: [MToken] -> Expr -> Bool -> Bool -> Bool -> OperatorLevel -> Doc -> Bool -> Syn_Expr
+ GLua.AG.PrettyPrint: Syn_Expr :: [MToken] -> Expr -> Bool -> Bool -> Bool -> Bool -> OperatorLevel -> Doc -> Syn_Expr
- GLua.AG.PrettyPrint: Syn_MExpr :: [MToken] -> MExpr -> Bool -> Bool -> Bool -> Region -> OperatorLevel -> Doc -> Bool -> Syn_MExpr
+ GLua.AG.PrettyPrint: Syn_MExpr :: [MToken] -> MExpr -> Bool -> Bool -> Bool -> Bool -> Region -> OperatorLevel -> Doc -> Syn_MExpr
- GLua.AG.PrettyPrint: Syn_MStat :: [MToken] -> MStat -> Bool -> Bool -> Region -> Bool -> Doc -> Int -> Syn_MStat
+ GLua.AG.PrettyPrint: Syn_MStat :: [MToken] -> MStat -> Bool -> Bool -> Bool -> Region -> Doc -> Bool -> Int -> Syn_MStat
- GLua.AG.PrettyPrint: Syn_MStatList :: [MToken] -> MStatList -> Bool -> Bool -> Bool -> Bool -> Doc -> Int -> Syn_MStatList
+ GLua.AG.PrettyPrint: Syn_MStatList :: [MToken] -> MStatList -> Bool -> Bool -> Bool -> Doc -> Bool -> Int -> Syn_MStatList
- GLua.AG.PrettyPrint: Syn_MaybeMExpr :: [MToken] -> MaybeMExpr -> Bool -> Bool -> Bool -> OperatorLevel -> Doc -> Bool -> Syn_MaybeMExpr
+ GLua.AG.PrettyPrint: Syn_MaybeMExpr :: [MToken] -> MaybeMExpr -> Bool -> Bool -> Bool -> Bool -> OperatorLevel -> Doc -> Syn_MaybeMExpr
- GLua.AG.PrettyPrint: Syn_PrefixExp :: [MToken] -> PrefixExp -> Bool -> Bool -> Bool -> Bool -> OperatorLevel -> Doc -> Syn_PrefixExp
+ GLua.AG.PrettyPrint: Syn_PrefixExp :: [MToken] -> PrefixExp -> Bool -> Bool -> Bool -> OperatorLevel -> Doc -> Bool -> Syn_PrefixExp
- GLua.AG.PrettyPrint: Syn_Stat :: [MToken] -> Stat -> Bool -> Bool -> Bool -> Doc -> Syn_Stat
+ GLua.AG.PrettyPrint: Syn_Stat :: [MToken] -> Stat -> Bool -> Bool -> Bool -> Doc -> Bool -> Syn_Stat
- GLua.AG.PrettyPrint: Syn_VarsList :: [MToken] -> VarsList -> Doc -> Bool -> Bool -> Bool -> Doc -> Doc -> Bool -> Syn_VarsList
+ GLua.AG.PrettyPrint: Syn_VarsList :: [MToken] -> VarsList -> Bool -> Doc -> Bool -> Bool -> Doc -> Bool -> Doc -> Syn_VarsList
- GLua.AG.PrettyPrint: type T_AReturn = ([MToken]) -> Int -> PrettyPrintConfig -> (([MToken]), AReturn, Bool, Bool, Doc, Int)
+ GLua.AG.PrettyPrint: type T_AReturn = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> (([MToken]), AReturn, Bool, Bool, Doc, Int)
- GLua.AG.PrettyPrint: type T_Args = ([MToken]) -> Int -> PrettyPrintConfig -> (([MToken]), Args, Bool, Doc)
+ GLua.AG.PrettyPrint: type T_Args = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> (([MToken]), Args, Bool, Doc)
- GLua.AG.PrettyPrint: type T_Block = ([MToken]) -> Int -> PrettyPrintConfig -> Region -> (([MToken]), Block, Bool, Bool, Doc, Int)
+ GLua.AG.PrettyPrint: type T_Block = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> Region -> (([MToken]), Block, Bool, Bool, Doc, Int)
- GLua.AG.PrettyPrint: type T_Declaration = ([MToken]) -> Int -> PrettyPrintConfig -> (([MToken]), Declaration, Doc, Bool, Bool, Doc, Doc, Bool)
+ GLua.AG.PrettyPrint: type T_Declaration = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> (([MToken]), Declaration, Bool, Doc, Bool, Bool, Doc, Bool, Doc)
- GLua.AG.PrettyPrint: type T_Else = ([MToken]) -> Int -> PrettyPrintConfig -> Region -> (([MToken]), Else, Bool, Bool, Region, Doc)
+ GLua.AG.PrettyPrint: type T_Else = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> Region -> (([MToken]), Else, Bool, Bool, Region, Doc)
- GLua.AG.PrettyPrint: type T_ElseIf = ([MToken]) -> Int -> PrettyPrintConfig -> (([MToken]), ElseIf, Bool, Doc)
+ GLua.AG.PrettyPrint: type T_ElseIf = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> (([MToken]), ElseIf, Bool, Doc)
- GLua.AG.PrettyPrint: type T_ElseIfList = ([MToken]) -> Int -> PrettyPrintConfig -> (([MToken]), ElseIfList, Bool, Bool, Region, Doc)
+ GLua.AG.PrettyPrint: type T_ElseIfList = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> (([MToken]), ElseIfList, Bool, Bool, Region, Doc)
- GLua.AG.PrettyPrint: type T_Expr = ([MToken]) -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> Region -> (([MToken]), Expr, Bool, Bool, Bool, OperatorLevel, Doc, Bool)
+ GLua.AG.PrettyPrint: type T_Expr = ([MToken]) -> Bool -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> Region -> (([MToken]), Expr, Bool, Bool, Bool, Bool, OperatorLevel, Doc)
- GLua.AG.PrettyPrint: type T_ExprSuffixList = ([MToken]) -> Int -> PrettyPrintConfig -> (([MToken]), ExprSuffixList, Bool, Bool, OperatorLevel, Doc)
+ GLua.AG.PrettyPrint: type T_ExprSuffixList = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> (([MToken]), ExprSuffixList, Bool, Bool, OperatorLevel, Doc)
- GLua.AG.PrettyPrint: type T_Field = ([MToken]) -> Int -> PrettyPrintConfig -> (Bool, ([MToken]), Field, Bool, Bool, Region, Doc)
+ GLua.AG.PrettyPrint: type T_Field = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> (Bool, ([MToken]), Field, Bool, Bool, Region, Doc)
- GLua.AG.PrettyPrint: type T_FieldList = ([MToken]) -> Int -> PrettyPrintConfig -> (Bool, ([MToken]), FieldList, Bool, Bool, Doc)
+ GLua.AG.PrettyPrint: type T_FieldList = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> (Bool, ([MToken]), FieldList, Bool, Bool, Doc)
- GLua.AG.PrettyPrint: type T_MElse = ([MToken]) -> Int -> PrettyPrintConfig -> Region -> (([MToken]), MElse, Bool, Bool, Region, Doc)
+ GLua.AG.PrettyPrint: type T_MElse = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> Region -> (([MToken]), MElse, Bool, Bool, Region, Doc)
- GLua.AG.PrettyPrint: type T_MElseIf = ([MToken]) -> Int -> PrettyPrintConfig -> (([MToken]), MElseIf, Bool, Region, Doc)
+ GLua.AG.PrettyPrint: type T_MElseIf = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> (([MToken]), MElseIf, Bool, Region, Doc)
- GLua.AG.PrettyPrint: type T_MExpr = ([MToken]) -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> (([MToken]), MExpr, Bool, Bool, Bool, Region, OperatorLevel, Doc, Bool)
+ GLua.AG.PrettyPrint: type T_MExpr = ([MToken]) -> Bool -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> (([MToken]), MExpr, Bool, Bool, Bool, Bool, Region, OperatorLevel, Doc)
- GLua.AG.PrettyPrint: type T_MExprList = ([MToken]) -> Int -> Bool -> PrettyPrintConfig -> (([MToken]), MExprList, Bool, Bool, Region, OperatorLevel, Doc)
+ GLua.AG.PrettyPrint: type T_MExprList = ([MToken]) -> Bool -> Int -> Bool -> PrettyPrintConfig -> (([MToken]), MExprList, Bool, Bool, Region, OperatorLevel, Doc)
- GLua.AG.PrettyPrint: type T_MStat = ([MToken]) -> Int -> Bool -> Bool -> PrettyPrintConfig -> (([MToken]), MStat, Bool, Bool, Region, Bool, Doc, Int)
+ GLua.AG.PrettyPrint: type T_MStat = ([MToken]) -> Bool -> Int -> Bool -> PrettyPrintConfig -> Bool -> (([MToken]), MStat, Bool, Bool, Bool, Region, Doc, Bool, Int)
- GLua.AG.PrettyPrint: type T_MStatList = ([MToken]) -> Int -> Bool -> PrettyPrintConfig -> Region -> (([MToken]), MStatList, Bool, Bool, Bool, Bool, Doc, Int)
+ GLua.AG.PrettyPrint: type T_MStatList = ([MToken]) -> Bool -> Int -> Bool -> PrettyPrintConfig -> Region -> (([MToken]), MStatList, Bool, Bool, Bool, Doc, Bool, Int)
- GLua.AG.PrettyPrint: type T_MaybeMExpr = ([MToken]) -> Int -> PrettyPrintConfig -> (([MToken]), MaybeMExpr, Bool, Bool, Bool, OperatorLevel, Doc, Bool)
+ GLua.AG.PrettyPrint: type T_MaybeMExpr = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> (([MToken]), MaybeMExpr, Bool, Bool, Bool, Bool, OperatorLevel, Doc)
- GLua.AG.PrettyPrint: type T_PFExprSuffix = ([MToken]) -> Int -> PrettyPrintConfig -> (([MToken]), PFExprSuffix, Bool, Bool, OperatorLevel, Doc)
+ GLua.AG.PrettyPrint: type T_PFExprSuffix = ([MToken]) -> Bool -> Int -> PrettyPrintConfig -> (([MToken]), PFExprSuffix, Bool, Bool, OperatorLevel, Doc)
- GLua.AG.PrettyPrint: type T_PrefixExp = ([MToken]) -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> (([MToken]), PrefixExp, Bool, Bool, Bool, Bool, OperatorLevel, Doc)
+ GLua.AG.PrettyPrint: type T_PrefixExp = ([MToken]) -> Bool -> Int -> Bool -> OperatorLevel -> PrettyPrintConfig -> (([MToken]), PrefixExp, Bool, Bool, Bool, OperatorLevel, Doc, Bool)
- GLua.AG.PrettyPrint: type T_Stat = ([MToken]) -> Int -> Bool -> Bool -> PrettyPrintConfig -> Region -> (([MToken]), Stat, Bool, Bool, Bool, Doc)
+ GLua.AG.PrettyPrint: type T_Stat = ([MToken]) -> Bool -> Int -> Bool -> PrettyPrintConfig -> Region -> Bool -> (([MToken]), Stat, Bool, Bool, Bool, Doc, Bool)
- GLua.AG.PrettyPrint: type T_VarsList = ([MToken]) -> Int -> Bool -> PrettyPrintConfig -> (([MToken]), VarsList, Doc, Bool, Bool, Bool, Doc, Doc, Bool)
+ GLua.AG.PrettyPrint: type T_VarsList = ([MToken]) -> Bool -> Int -> Bool -> PrettyPrintConfig -> (([MToken]), VarsList, Bool, Doc, Bool, Bool, Doc, Bool, Doc)
- GLua.AG.Token: Label :: !String -> Token
+ GLua.AG.Token: Label :: !String -> !String -> !String -> Token
- GLua.Lexer: parseLabel :: LParser String
+ GLua.Lexer: parseLabel :: LParser Token
- GLua.PSLexer: parseLabel :: Parser String
+ GLua.PSLexer: parseLabel :: Parser Token
- GLua.TokenTypes: type TokenAlgebra token = ((String -> token, String -> token, Int -> String -> token, String -> token, String -> token, token), (String -> token, String -> token, String -> token, String -> token, token, token, token, token), (token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token), (token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token), (token, token, token, token, token, token), (String -> token, String -> token))
+ GLua.TokenTypes: type TokenAlgebra token = ((String -> token, String -> token, Int -> String -> token, String -> token, String -> token, token), (String -> token, String -> token, String -> token, String -> token, token, token, token, token), (token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token), (token, token, token, token, token, token, token, token, token, token, token, token, token, token, token, token), (token, token, token, token, token, token), (String -> String -> String -> token, String -> token))
- GLuaFixer.AG.ASTLint: sem_Token_Label :: String -> T_Token
+ GLuaFixer.AG.ASTLint: sem_Token_Label :: String -> String -> String -> T_Token

Files

README.md view
@@ -146,6 +146,26 @@  - `log_format`: Decides how to format linter warnings and error messages. Possible values are `"auto"`, `"standard"` and `"github"`. The `"github"` output format is specifically designed for usage with GitHub actions. The default value is `"auto"`, With `"auto"`, the log format will be `"github"` when the environment variables `GITHUB_ACTIONS` and `GITHUB_WORKFLOW` are both present, and `"standard"` otherwise. +### In-code directives++If you add a comment containing the text `format: multiline`, the next statement will be forced to be pretty printed as multiline. Example:++```lua+-- format: multiline+a = {1, 2, 3}+```++Will be turned into:++```lua+-- format: multiline+a = {+  1,+  2,+  3+}+```+ ## Editor Plugins  Through community support, GLuaFixer is supported across a wide variety of popular editors.
app/GLuaFixer/Cli.hs view
@@ -30,6 +30,7 @@   = Lint   | PrettyPrint   | AnalyseGlobals+  | DumpLexicon   | DumpAst   | Test   | PrintVersion@@ -140,9 +141,14 @@                 Opt.progDesc "Print a list of all globals used and defined in the given files/directories."             )           <> Opt.command+            "dump-lexicon"+            ( Opt.info (pure DumpLexicon) $+                Opt.progDesc "Debug command to dump the tokens parsed in the Lua code."+            )+          <> Opt.command             "dump-ast"             ( Opt.info (pure DumpAst) $-                Opt.progDesc "Print a list of all globals used and defined in the given files/directories."+                Opt.progDesc "Debug command to dump the internal Abstract Syntax Tree of the Lua code."             )           <> Opt.command             "test"
app/GLuaFixer/Effects/Run.hs view
@@ -15,30 +15,32 @@ import qualified Data.ByteString.Lazy.Char8 as BL8 import Effectful (Eff, (:>)) import qualified Effectful.Environment as Eff+import Effectful.Error.Static (runErrorNoCallStack) import GLua.AG.AST (AST)+import GLua.AG.Token (MToken) import GLua.ASTInstances () import qualified GLua.PSParser as PSP import qualified GLua.Parser as UUP import GLuaFixer.Cli (Command (..), Options (..), OverriddenSettings, SettingsPath)+import GLuaFixer.Effects.AnalyseGlobals (analyseFile, execAnalysis, reportAnalysis) import GLuaFixer.Effects.Cli (Cli, CliParseResult (..), parseCliOptions)-import GLuaFixer.Effects.Files (Files, IgnoreFiles (..), findLuaFiles, getCurrentDirectory, isDirectory, readFile, readStdIn, writeFile, traceFilesIfEnabled)+import GLuaFixer.Effects.Files (Files, IgnoreFiles (..), findLuaFiles, getCurrentDirectory, isDirectory, readFile, readStdIn, traceFilesIfEnabled, writeFile) import GLuaFixer.Effects.Interruptible (Interruptible, interruptibleFoldMStrict) import GLuaFixer.Effects.Logging (Logging, emitLintMessage, getLogFormat, putStrLnStdError, putStrLnStdOut, putStrStdOut)-import GLuaFixer.Effects.Settings (Settings, getSettingsForFile, SettingsError (CouldNotParseSettings), runSettings, traceSettingsIfEnabled)+import GLuaFixer.Effects.Settings (Settings, SettingsError (CouldNotParseSettings), getSettingsForFile, runSettings, traceSettingsIfEnabled) import qualified GLuaFixer.Interface as Interface import GLuaFixer.LintMessage (sortLintMessages) import GLuaFixer.LintSettings (   LintSettings (..),   StdInOrFiles (..),  )+import GLuaFixer.Version (version) import System.Exit (ExitCode (..)) import Prelude hiding (lex, readFile, writeFile)-import GLuaFixer.Effects.AnalyseGlobals (execAnalysis, analyseFile, reportAnalysis)-import Effectful.Error.Static (runErrorNoCallStack)-import GLuaFixer.Version (version)  -- | Top level run function-run :: ( Interruptible :> es+run ::+  ( Interruptible :> es   , Files :> es   , Logging :> es   , Eff.Environment :> es@@ -53,9 +55,10 @@       putStrLnStdError helpText       pure exitCode     ParseSuccessful options -> do-      result <- runErrorNoCallStack @SettingsError $-        runSettings $-        runOptions options+      result <-+        runErrorNoCallStack @SettingsError $+          runSettings $+            runOptions options        case result of         Left (CouldNotParseSettings err) -> do@@ -64,7 +67,8 @@         Right exitCode -> pure exitCode  -- | Run the given options-runOptions :: ( Interruptible :> es+runOptions ::+  ( Interruptible :> es   , Files :> es   , Settings :> es   , Logging :> es@@ -75,89 +79,112 @@   Eff es ExitCode runOptions options =   traceFilesIfEnabled options.optsDebug $-  traceSettingsIfEnabled options.optsDebug $ do-  when (options.optsDebug) $-    putStrLnStdError $ show options-  case (options.optsCommand, options.optsFiles) of-    (Lint, UseStdIn) -> do-      (lintSettings, contents) <- getStdIn options.optsConfigFile options.optsOverridden-      lint lintSettings "stdin" contents-    (Lint, UseFiles files) ->-      foldLuaFiles-        options.optsConfigFile-        options.optsOverridden-        ExitSuccess-        files-        $ \exitCode lintSettings filepath contents ->-          worstExitCode exitCode <$> lint lintSettings filepath contents-    (PrettyPrint, UseStdIn) -> do-      (lintSettings, contents) <- getStdIn options.optsConfigFile options.optsOverridden-      case prettyprint lintSettings contents of-        Nothing -> pure $ ExitFailure 1-        Just prettyprinted -> do-          putStrStdOut prettyprinted-          pure ExitSuccess-    (PrettyPrint, UseFiles files) ->-      foldLuaFiles-        options.optsConfigFile-        options.optsOverridden-        ExitSuccess-        files-        $ \exitCode lintSettings filepath contents -> do-          putStrLnStdOut $ "Pretty printing " <> filepath+    traceSettingsIfEnabled options.optsDebug $ do+      when (options.optsDebug) $+        putStrLnStdError $+          show options+      case (options.optsCommand, options.optsFiles) of+        (Lint, UseStdIn) -> do+          (lintSettings, contents) <- getStdIn options.optsConfigFile options.optsOverridden+          lint lintSettings "stdin" contents+        (Lint, UseFiles files) ->+          foldLuaFiles+            options.optsConfigFile+            options.optsOverridden+            ExitSuccess+            files+            $ \exitCode lintSettings filepath contents ->+              worstExitCode exitCode <$> lint lintSettings filepath contents+        (PrettyPrint, UseStdIn) -> do+          (lintSettings, contents) <- getStdIn options.optsConfigFile options.optsOverridden           case prettyprint lintSettings contents of             Nothing -> pure $ ExitFailure 1             Just prettyprinted -> do-              writeFile filepath prettyprinted-              pure exitCode-    (AnalyseGlobals, UseStdIn) -> do-      (lintSettings, contents) <- getStdIn options.optsConfigFile options.optsOverridden-      withParsed lintSettings "stdin" contents (ExitFailure 1) $ \ast -> do-        analysis <- execAnalysis $ analyseFile lintSettings "stdin" ast-        reportAnalysis analysis-        pure ExitSuccess-    (AnalyseGlobals, UseFiles files) -> do-      analysis <- execAnalysis $ foldLuaFiles-        options.optsConfigFile-        options.optsOverridden-        ()-        files-        $ \() lintSettings filepath contents -> do-          withParsed lintSettings filepath contents () $ \ast ->-            analyseFile lintSettings filepath ast-      reportAnalysis analysis-      pure ExitSuccess-    (DumpAst, UseStdIn) -> do-      (lintSettings, contents) <- getStdIn options.optsConfigFile options.optsOverridden-      withParsed lintSettings "stdin" contents (ExitFailure 1) $ \ast -> do-        putStrLnStdOut $ BL8.unpack $ JSON.encode ast-        pure ExitSuccess-    (DumpAst, UseFiles files) ->-      foldLuaFiles-        options.optsConfigFile-        options.optsOverridden-        ExitSuccess-        files-        $ \exitCode lintSettings filepath contents ->-          withParsed lintSettings filepath contents (ExitFailure 1) $ \ast -> do+              putStrStdOut prettyprinted+              pure ExitSuccess+        (PrettyPrint, UseFiles files) ->+          foldLuaFiles+            options.optsConfigFile+            options.optsOverridden+            ExitSuccess+            files+            $ \exitCode lintSettings filepath contents -> do+              putStrLnStdOut $ "Pretty printing " <> filepath+              case prettyprint lintSettings contents of+                Nothing -> pure $ ExitFailure 1+                Just prettyprinted -> do+                  writeFile filepath prettyprinted+                  pure exitCode+        (AnalyseGlobals, UseStdIn) -> do+          (lintSettings, contents) <- getStdIn options.optsConfigFile options.optsOverridden+          withParsed lintSettings "stdin" contents (ExitFailure 1) $ \ast -> do+            analysis <- execAnalysis $ analyseFile lintSettings "stdin" ast+            reportAnalysis analysis+            pure ExitSuccess+        (AnalyseGlobals, UseFiles files) -> do+          analysis <- execAnalysis+            $ foldLuaFiles+              options.optsConfigFile+              options.optsOverridden+              ()+              files+            $ \() lintSettings filepath contents -> do+              withParsed lintSettings filepath contents () $ \ast ->+                analyseFile lintSettings filepath ast+          reportAnalysis analysis+          pure ExitSuccess+        (DumpLexicon, UseStdIn) -> do+          (lintSettings, contents) <- getStdIn options.optsConfigFile options.optsOverridden+          mbTokens <- getLexicon lintSettings "stdin" contents+          case mbTokens of+            Nothing -> pure $ ExitFailure 1+            tokens -> do+              putStrLnStdOut $ show tokens+              pure ExitSuccess+        (DumpLexicon, UseFiles files) ->+          foldLuaFiles+            options.optsConfigFile+            options.optsOverridden+            ExitSuccess+            files+            $ \exitCode lintSettings filepath contents -> do+              mbTokens <- getLexicon lintSettings filepath contents+              case mbTokens of+                Nothing -> pure $ ExitFailure 1+                Just tokens -> do+                  putStrLnStdOut $ show tokens+                  pure exitCode+        (DumpAst, UseStdIn) -> do+          (lintSettings, contents) <- getStdIn options.optsConfigFile options.optsOverridden+          withParsed lintSettings "stdin" contents (ExitFailure 1) $ \ast -> do             putStrLnStdOut $ BL8.unpack $ JSON.encode ast-            pure exitCode-    (Test, UseStdIn) -> do-      (lintSettings, contents) <- getStdIn options.optsConfigFile options.optsOverridden-      test lintSettings "stdin" contents-      pure ExitSuccess-    (Test, UseFiles files) -> do-      foldLuaFiles-        options.optsConfigFile-        options.optsOverridden-        ()-        files-        $ \() lintSettings filepath contents ->-          test lintSettings filepath contents-      pure ExitSuccess-    (PrintVersion, _) -> do-      putStrLnStdOut version-      pure ExitSuccess+            pure ExitSuccess+        (DumpAst, UseFiles files) ->+          foldLuaFiles+            options.optsConfigFile+            options.optsOverridden+            ExitSuccess+            files+            $ \exitCode lintSettings filepath contents ->+              withParsed lintSettings filepath contents (ExitFailure 1) $ \ast -> do+                putStrLnStdOut $ BL8.unpack $ JSON.encode ast+                pure exitCode+        (Test, UseStdIn) -> do+          (lintSettings, contents) <- getStdIn options.optsConfigFile options.optsOverridden+          test lintSettings "stdin" contents+          pure ExitSuccess+        (Test, UseFiles files) -> do+          foldLuaFiles+            options.optsConfigFile+            options.optsOverridden+            ()+            files+            $ \() lintSettings filepath contents ->+              test lintSettings filepath contents+          pure ExitSuccess+        (PrintVersion, _) -> do+          putStrLnStdOut version+          pure ExitSuccess  -- | Retrieves the contents of stdin and the settings that apply. getStdIn ::@@ -309,17 +336,28 @@   (AST -> Eff es a) ->   Eff es a withParsed lintSettings filepath contents defaultValue f = do-  logFormat <- getLogFormat lintSettings.log_format-  case Interface.lex lintSettings filepath contents of-    Left msgs -> do-      mapM_ (emitLintMessage logFormat) msgs-      pure defaultValue-    Right tokens -> do+  lexicon <- getLexicon lintSettings filepath contents+  case lexicon of+    Nothing -> pure defaultValue+    Just tokens -> do+      logFormat <- getLogFormat lintSettings.log_format       case Interface.parse lintSettings filepath tokens of         Left msgs -> do           mapM_ (emitLintMessage logFormat) msgs           pure defaultValue         Right ast -> f ast++-- | Function to parse a file's contents into MTokens. This will log any parse failures and give+-- MTokens if it can.+getLexicon :: (Logging :> es) => LintSettings -> FilePath -> String -> Eff es (Maybe [MToken])+getLexicon lintSettings filepath contents = do+  logFormat <- getLogFormat lintSettings.log_format+  case Interface.lex lintSettings filepath contents of+    Left msgs -> do+      mapM_ (emitLintMessage logFormat) msgs+      pure Nothing+    Right tokens -> do+      pure $ Just tokens  -- | Takes the worst of the two exit codes. worstExitCode :: ExitCode -> ExitCode -> ExitCode
glualint.cabal view
@@ -1,6 +1,6 @@ cabal-version:      3.0 name:               glualint-version:            1.24.6+version:            1.25.0 synopsis:           Attempts to fix your syntax erroring Lua files. description:   Linter for Lua, specifically the variant used in Garry's mod.@@ -62,6 +62,20 @@     Rank2Types     TypeSynonymInstances +test-suite golden+  type:             exitcode-stdio-1.0+  main-is:          Spec.hs+  hs-source-dirs:   tests/golden+  build-depends:+    , base+    , bytestring+    , filepath      >=1.4 && <1.5+    , glualint+    , tasty         >=1.4 && <2+    , tasty-golden  >=2.3 && <2.4++  default-language: Haskell2010+ executable glualint   -- Disable the executable for ghcjs and older versions of ghc. The executable   -- uses functions only available in ghc 8+@@ -100,7 +114,7 @@     , directory             >=1.3  && <2     , effectful             >=2.2  && <3     , filemanip             >=0.3  && <0.4-    , filepath              >=1.4  && <1.5+    , filepath     , glualint     , optparse-applicative  >=0.17 && <1     , signal                >=0.1  && <0.2
src/GLua/AG/PrettyPrint.hs view
@@ -16,8024 +16,8756 @@ {-# LINE 4 "src/GLua/AG/PrettyPrint.ag" #-}  import Prelude hiding ((<>))-import Data.List (foldl')-import GLua.AG.AST-import Text.PrettyPrint hiding (parens, brackets, braces)-import GLua.TokenTypes-import Data.Maybe-import Text.Parsec-import Text.Parsec.Error-import Text.ParserCombinators.UU.BasicInstances hiding (pos)-import Debug.Trace-{-# LINE 29 "src/GLua/AG/PrettyPrint.hs" #-}-{-# LINE 19 "src/GLua/AG/PrettyPrint.ag" #-}---tok :: MToken -> Doc-tok (MToken _ t) = zeroWidthText . show $ t--printList :: (a -> Doc) -> String -> [a] -> Doc-printList _ _ []       = empty-printList f sep' (e : es) = (f e) <> g es-    where-        g []       = empty-        g (e' : es') = zeroWidthText sep' <> (f e') <> g es'--data IsEmpty = IsEmpty | NonEmpty--fromEmpty :: IsEmpty -> Bool-fromEmpty IsEmpty = True-fromEmpty NonEmpty = False--toEmpty :: Bool -> IsEmpty-toEmpty b = if b then IsEmpty else NonEmpty--data PrettyPrintConfig = PPConfig {-    spaceAfterParens :: Bool,-    spaceAfterBrackets :: Bool,-    spaceAfterBraces :: Bool,-    spaceEmptyParens :: Bool,-    spaceEmptyBraces :: Bool,-    spaceAfterLabel :: Bool,-    spaceBeforeComma :: Bool,-    spaceAfterComma :: Bool,-    semicolons :: Bool,-    cStyle :: Bool,-    removeRedundantParens :: Bool,-    minimizeParens :: Bool,-    assumeOperatorAssociativity :: Bool,-    indentation :: String-}--defaultPPConfig :: PrettyPrintConfig-defaultPPConfig = PPConfig {-    spaceAfterParens = False,-    spaceAfterBrackets = False,-    spaceAfterBraces = False,-    spaceEmptyParens = False,-    spaceEmptyBraces = False,-    spaceAfterLabel = False,-    spaceBeforeComma = False,-    spaceAfterComma = True,-    semicolons = False,-    cStyle = False,-    removeRedundantParens = True,-    assumeOperatorAssociativity = True,-    minimizeParens = False,-    indentation = "    "-}--metaDoc :: Maybe MToken -> Doc-metaDoc (Just m) = zchr ':' <> tok m-metaDoc Nothing  = empty--printVarList :: [(PrefixExp, Maybe MExpr)] -> Doc-printVarList vars = printList pp_prefixexp ", " (map fst vars) <-> zchr '=' <-> printList pp_mexpr ", " (catMaybes . map snd $ vars)--printStats :: [MStat] -> Int -> Doc-printStats [] _ = empty-printStats (x : xs) i = nest (i * 4) (pp_mstat x i) $+$ printStats xs i--printElIfs :: [(MExpr, Block)] -> Int -> Doc-printElIfs [] _ = empty-printElIfs ((e, b) : es) i = zeroWidthText "elseif" <-> pp_mexpr e <-> zeroWidthText "then" $+$ pp_block b i $+$ printElIfs es i--printEls :: Maybe Block -> Int -> Doc-printEls Nothing _ = empty-printEls (Just b) i = zeroWidthText "else" $+$ pp_block b i---renderPos :: LineColPos -> String-renderPos (LineColPos l c _) = "line " ++ show (succ l) ++ ", column " ++ show (succ c)--renderRegion :: Region -> String-renderRegion (Region l r) = renderPos l ++ " - " ++ renderPos r--renderSourcePos :: SourcePos -> String-renderSourcePos sp = "line " ++ (show . succ . sourceLine $ sp) ++ ", column " ++ (show . succ . sourceColumn $ sp)--getMStatPos :: MStat -> String-getMStatPos (MStat p _) = renderRegion p--getAReturnPos :: AReturn -> String-getAReturnPos (AReturn p _) = renderRegion p-getAReturnPos NoReturn = "<unknown>"--getMExprPos :: MExpr -> String-getMExprPos (MExpr p _) = renderRegion p--renderError :: Error LineColPos -> String-renderError (Inserted str pos strs)       = renderPos pos ++ ": Inserted '" ++ str ++ "'." ++ render_expecting strs-renderError (Deleted str pos strs)        = renderPos pos ++ ": Removed '" ++ str ++ "'. " ++render_expecting strs-renderError (Replaced str1 str2 pos strs) = renderPos pos ++ ": Replaced '" ++ str1 ++ "' with '" ++ str2 ++ "' at " ++ renderPos pos ++ render_expecting strs-renderError (DeletedAtEnd str)            = "Deleted '"  ++ str ++ "' at the end of the Lua file because the parser doesn't know what to do with it."--render_expecting :: [String] -> String-render_expecting [a]    = "Parser expected a " ++ a-render_expecting (a:as) = "Parser expected one of [" ++ a ++ concat (map (", " ++) as) ++ "]"-render_expecting []     = "Parser expected nothing"---renderPSError :: ParseError -> String-renderPSError ps = map replNL . showErrorMessages "or" "unknown parse error" "expecting" "unexpected" "end of input" . errorMessages $ ps-    where-        replNL '\n' = ' '-        replNL c = c---- | Render comments on multiple lines-renderMLComments :: PrettyPrintConfig -> Int -> [MToken] -> Doc-renderMLComments conf ind toks = foldl' ($+$) empty . map (indent conf ind . tok . convertComment conf) $ toks---- | Render comments, and prefer having them on a single line. It may not print comments on the same--- line if that would cause a syntax error (e.g. a multiline comment after a single line comment)-renderSLComments :: PrettyPrintConfig -> Int -> [MToken] -> Doc-renderSLComments conf ind toks = foldl' combine empty . map (convertComment conf) $ toks-    where-        combine :: Doc -> MToken -> Doc-        combine acc mt@(MToken _pos t) =-          case t of-            -- Block comments after single line comments cannot be printed on the same line, as that-            -- would cause a syntax error, e.g. in this case:--            -- foo = { -- single line comment-            -- --[[multiline-            -- comment-            -- ]]-            -- }-            -- Make sure in these cases the comment is printed on a new line, rather than on the-            -- same line-            DashBlockComment _depth comment | '\n' `elem` comment ->-              acc $+$ (indent conf ind $ tok mt)-            SlashBlockComment comment | '\n' `elem` comment ->-              acc $+$ (indent conf ind $ tok mt)-            _ -> acc <-> tok mt--convertComment :: PrettyPrintConfig -> MToken -> MToken-convertComment conf (MToken p t) = MToken p $ convert' t-    where-        convert' :: Token -> Token-        convert' = if cStyle conf then cComment else luaComment--        luaComment :: Token -> Token-        luaComment (SlashComment s) = DashComment s-        luaComment (SlashBlockComment s) = DashBlockComment (lastBracket s) s-        luaComment t' = t'--        -- converting /*]*/ would end up in --[[]]] when plainly converted-        -- Deepen the block comment by 1 if that's the case-        lastBracket :: String -> Int-        lastBracket [] = 0-        lastBracket s = if last s == ']' then 1 else 0--        cComment :: Token -> Token-        cComment (DashComment s) = SlashComment s-        cComment (DashBlockComment _ s) = SlashBlockComment s-        cComment t' = t'--indent :: PrettyPrintConfig -> Int -> Doc -> Doc-indent conf n = (<>) $ zeroWidthText (concat . replicate n $ indentation conf)--parens :: PrettyPrintConfig -> IsEmpty -> Doc -> Doc-parens conf ie doc = zchr '(' `sep'` doc `sep'` zchr ')'-    where-        sep' :: Doc -> Doc -> Doc-        sep' = if spaceAfterParens conf && (not (fromEmpty ie) || spaceEmptyParens conf) then (<->) else (<>)--brackets :: PrettyPrintConfig -> Doc -> Doc-brackets conf doc = zchr '[' `sep'` doc `sep'` zchr ']'-    where-        sep' :: Doc -> Doc -> Doc-        sep' = if spaceAfterBrackets conf then (<->) else (<>)--braces :: PrettyPrintConfig -> IsEmpty -> Doc -> Doc-braces conf ie doc = zchr '{' `sep'` doc `sep'` zchr '}'-    where-        sep' :: Doc -> Doc -> Doc-        sep' = if spaceAfterBraces conf && (not (fromEmpty ie) || spaceEmptyBraces conf) then (<->) else (<>)---- Zero width char-zchr :: Char -> Doc-zchr c = zeroWidthText [c]---- Zero width <+>-infixl 6 <->-(<->) :: Doc -> Doc -> Doc-a <-> b | a == empty = b-        | b == empty = a-        | otherwise  = a <> zchr ' ' <> b---- Operator levels, where level 1 is the lowest level, and level 8 is the highest one--- See http://www.lua.org/manual/5.2/manual.html#3.4.7-data OperatorLevel-    -- At the top level, there is no assigned operator level yet. This serves as a bottom value.-    = TopLevelExpression-    | OperatorLevel1-    | OperatorLevel2-    | OperatorLevel3-    | OperatorLevel4-    | OperatorLevel5-    | OperatorLevel6-    | OperatorLevel7-    | OperatorLevel8-    deriving (Eq, Ord)-{-# LINE 240 "src/GLua/AG/PrettyPrint.hs" #-}--{-# LINE 754 "src/GLua/AG/PrettyPrint.ag" #-}---pp_block :: Block -> Int -> Doc-pp_block p i = pretty_Syn_Block (wrap_Block (sem_Block p) (Inh_Block [] i defaultPPConfig emptyRg))--pp_mstat :: MStat -> Int -> Doc-pp_mstat p i = pretty_Syn_MStat (wrap_MStat (sem_MStat p) (Inh_MStat [] i False False defaultPPConfig))--pp_prefixexp :: PrefixExp -> Doc-pp_prefixexp p = pretty_Syn_PrefixExp (wrap_PrefixExp (sem_PrefixExp p) (Inh_PrefixExp [] 0 True TopLevelExpression defaultPPConfig))--pp_pfexprsuffix :: PFExprSuffix -> Doc-pp_pfexprsuffix p = pretty_Syn_PFExprSuffix (wrap_PFExprSuffix (sem_PFExprSuffix p) (Inh_PFExprSuffix [] 0 defaultPPConfig))--pp_field :: Field -> Doc-pp_field p = pretty_Syn_Field (wrap_Field (sem_Field p) (Inh_Field [] 0 defaultPPConfig))--pp_mexpr :: MExpr -> Doc-pp_mexpr p = pretty_Syn_MExpr (wrap_MExpr (sem_MExpr p) (Inh_MExpr [] 0 True TopLevelExpression defaultPPConfig))--prettyprint :: AST -> String-prettyprint p = render $ pretty_Syn_AST (wrap_AST (sem_AST p) (Inh_AST 0 defaultPPConfig))--prettyprintConf :: PrettyPrintConfig -> AST -> String-prettyprintConf conf p = render $ pretty_Syn_AST (wrap_AST (sem_AST p) (Inh_AST 0 conf))--renderBlock        :: Block -> String-renderBlock p      = render $ pretty_Syn_Block (wrap_Block (sem_Block p) (Inh_Block [] 0 defaultPPConfig emptyRg))--renderStat         :: Stat -> String-renderStat p       = render $ pretty_Syn_Stat (wrap_Stat (sem_Stat p) (Inh_Stat [] 0 False False defaultPPConfig emptyRg))--renderMStat         :: MStat -> String-renderMStat p       = render $ pretty_Syn_MStat (wrap_MStat (sem_MStat p) (Inh_MStat [] 0 False False defaultPPConfig))--renderAReturn      :: AReturn -> String-renderAReturn p    = render $ pretty_Syn_AReturn (wrap_AReturn (sem_AReturn p) (Inh_AReturn [] 0 defaultPPConfig))--renderFuncName     :: FuncName -> String-renderFuncName p   = render $ pretty_Syn_FuncName (wrap_FuncName (sem_FuncName p) (Inh_FuncName [] 0 defaultPPConfig))--renderPrefixExp    :: PrefixExp -> String-renderPrefixExp p  = render $ pretty_Syn_PrefixExp (wrap_PrefixExp (sem_PrefixExp p) (Inh_PrefixExp [] 0 True TopLevelExpression defaultPPConfig))--renderExpr         :: Expr -> String-renderExpr p       = render $ pretty_Syn_Expr (wrap_Expr (sem_Expr p) (Inh_Expr [] 0 True TopLevelExpression defaultPPConfig emptyRg))--renderMExpr         :: MExpr -> String-renderMExpr p       = render $ pretty_Syn_MExpr (wrap_MExpr (sem_MExpr p) (Inh_MExpr [] 0 True TopLevelExpression defaultPPConfig))--renderArgs         :: Args -> String-renderArgs p       = render $ pretty_Syn_Args (wrap_Args (sem_Args p) (Inh_Args [] 0 defaultPPConfig))--renderField        :: Field -> String-renderField p      = render $ pretty_Syn_Field (wrap_Field (sem_Field p) (Inh_Field [] 0 defaultPPConfig))--{-# LINE 299 "src/GLua/AG/PrettyPrint.hs" #-}--- AReturn -------------------------------------------------------- cata-sem_AReturn :: AReturn ->-               T_AReturn-sem_AReturn (AReturn _pos _values) =-    (sem_AReturn_AReturn _pos (sem_MExprList _values))-sem_AReturn (NoReturn) =-    (sem_AReturn_NoReturn)--- semantic domain-type T_AReturn = ([MToken]) ->-                 Int ->-                 PrettyPrintConfig ->-                 ( ([MToken]),AReturn,Bool,Bool,Doc,Int)-data Inh_AReturn = Inh_AReturn {comments_Inh_AReturn :: ([MToken]),indent_Inh_AReturn :: Int,ppconf_Inh_AReturn :: PrettyPrintConfig}-data Syn_AReturn = Syn_AReturn {comments_Syn_AReturn :: ([MToken]),copy_Syn_AReturn :: AReturn,hasBreaking_Syn_AReturn :: Bool,isMultiline_Syn_AReturn :: Bool,pretty_Syn_AReturn :: Doc,statementCount_Syn_AReturn :: Int}-wrap_AReturn :: T_AReturn ->-                Inh_AReturn ->-                Syn_AReturn-wrap_AReturn sem (Inh_AReturn _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstatementCount) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_AReturn _lhsOcomments _lhsOcopy _lhsOhasBreaking _lhsOisMultiline _lhsOpretty _lhsOstatementCount))-sem_AReturn_AReturn :: Region ->-                       T_MExprList ->-                       T_AReturn-sem_AReturn_AReturn pos_ values_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _valuesOcomments :: ([MToken])-              _lhsOcomments :: ([MToken])-              _valuesOisHead :: Bool-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOstatementCount :: Int-              _lhsOcopy :: AReturn-              _valuesOindent :: Int-              _valuesOppconf :: PrettyPrintConfig-              _valuesIcomments :: ([MToken])-              _valuesIcopy :: MExprList-              _valuesIisAssociative :: Bool-              _valuesIisMultiline :: Bool-              _valuesIpos :: Region-              _valuesIprecedence :: OperatorLevel-              _valuesIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 552 "src/GLua/AG/PrettyPrint.ag" #-}-                   _prettyCommentsBefore     $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "return") <-> _valuesIpretty <> _semicolon     <-> _prettyCommentsAfter-                   {-# LINE 348 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _isMultiline =-                  ({-# LINE 553 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valuesIisMultiline-                   {-# LINE 353 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _semicolon =-                  ({-# LINE 554 "src/GLua/AG/PrettyPrint.ag" #-}-                   if semicolons _lhsIppconf then zchr ';' else empty-                   {-# LINE 358 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettyCommentsBefore =-                  ({-# LINE 555 "src/GLua/AG/PrettyPrint.ag" #-}-                   renderMLComments _lhsIppconf _lhsIindent (fst _commentsBefore    )-                   {-# LINE 363 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettyCommentsAfter =-                  ({-# LINE 556 "src/GLua/AG/PrettyPrint.ag" #-}-                   renderSLComments _lhsIppconf _lhsIindent (fst _commentsAfter    )-                   {-# LINE 368 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _commentsBefore =-                  ({-# LINE 557 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _isMultiline     then span (\(MToken pos _) -> pos `before` pos_) _lhsIcomments else ([], _lhsIcomments)-                   {-# LINE 373 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _commentsAfter =-                  ({-# LINE 558 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _isMultiline     then span (\(MToken pos _) -> pos `beforeOrOnLine` (rgOr _valuesIpos pos_)) (snd _commentsBefore    ) else ([], snd _commentsBefore    )-                   {-# LINE 378 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valuesOcomments =-                  ({-# LINE 559 "src/GLua/AG/PrettyPrint.ag" #-}-                   snd _commentsAfter-                   {-# LINE 383 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 560 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valuesIcomments-                   {-# LINE 388 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valuesOisHead =-                  ({-# LINE 561 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 393 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 562 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 398 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _isMultiline-                   {-# LINE 403 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOstatementCount =-                  ({-# LINE 287 "src/GLua/AG/PrettyPrint.ag" #-}-                   1-                   {-# LINE 408 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AReturn pos_ _valuesIcopy-                   {-# LINE 413 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 418 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valuesOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 423 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valuesOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 428 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _valuesIcomments,_valuesIcopy,_valuesIisAssociative,_valuesIisMultiline,_valuesIpos,_valuesIprecedence,_valuesIpretty) =-                  values_ _valuesOcomments _valuesOindent _valuesOisHead _valuesOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstatementCount)))-sem_AReturn_NoReturn :: T_AReturn-sem_AReturn_NoReturn =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOstatementCount :: Int-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: AReturn-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 563 "src/GLua/AG/PrettyPrint.ag" #-}-                   empty-                   {-# LINE 447 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOstatementCount =-                  ({-# LINE 564 "src/GLua/AG/PrettyPrint.ag" #-}-                   0-                   {-# LINE 452 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 457 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 462 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   NoReturn-                   {-# LINE 467 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 472 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 477 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstatementCount)))--- AST ------------------------------------------------------------ cata-sem_AST :: AST ->-           T_AST-sem_AST (AST _comments _chunk) =-    (sem_AST_AST _comments (sem_Block _chunk))--- semantic domain-type T_AST = Int ->-             PrettyPrintConfig ->-             ( AST,Bool,Doc)-data Inh_AST = Inh_AST {indent_Inh_AST :: Int,ppconf_Inh_AST :: PrettyPrintConfig}-data Syn_AST = Syn_AST {copy_Syn_AST :: AST,isMultiline_Syn_AST :: Bool,pretty_Syn_AST :: Doc}-wrap_AST :: T_AST ->-            Inh_AST ->-            Syn_AST-wrap_AST sem (Inh_AST _lhsIindent _lhsIppconf) =-    (let ( _lhsOcopy,_lhsOisMultiline,_lhsOpretty) = sem _lhsIindent _lhsIppconf-     in  (Syn_AST _lhsOcopy _lhsOisMultiline _lhsOpretty))-sem_AST_AST :: ([MToken]) ->-               T_Block ->-               T_AST-sem_AST_AST comments_ chunk_ =-    (\ _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _chunkOcomments :: ([MToken])-              _chunkOstatRegion :: Region-              _lhsOisMultiline :: Bool-              _lhsOcopy :: AST-              _chunkOindent :: Int-              _chunkOppconf :: PrettyPrintConfig-              _chunkIcomments :: ([MToken])-              _chunkIcopy :: Block-              _chunkIhasBreaking :: Bool-              _chunkIisMultiline :: Bool-              _chunkIpretty :: Doc-              _chunkIstatementCount :: Int-              _lhsOpretty =-                  ({-# LINE 460 "src/GLua/AG/PrettyPrint.ag" #-}-                   _chunkIpretty $+$ _prettyComments-                   {-# LINE 520 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettyComments =-                  ({-# LINE 461 "src/GLua/AG/PrettyPrint.ag" #-}-                   renderMLComments _lhsIppconf _lhsIindent _chunkIcomments-                   {-# LINE 525 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _chunkOcomments =-                  ({-# LINE 462 "src/GLua/AG/PrettyPrint.ag" #-}-                   comments_-                   {-# LINE 530 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _chunkOstatRegion =-                  ({-# LINE 463 "src/GLua/AG/PrettyPrint.ag" #-}-                   emptyRg-                   {-# LINE 535 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _chunkIisMultiline-                   {-# LINE 540 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AST comments_ _chunkIcopy-                   {-# LINE 545 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 550 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _chunkOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 555 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _chunkOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 560 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _chunkIcomments,_chunkIcopy,_chunkIhasBreaking,_chunkIisMultiline,_chunkIpretty,_chunkIstatementCount) =-                  chunk_ _chunkOcomments _chunkOindent _chunkOppconf _chunkOstatRegion-          in  ( _lhsOcopy,_lhsOisMultiline,_lhsOpretty)))--- Args ----------------------------------------------------------- cata-sem_Args :: Args ->-            T_Args-sem_Args (ListArgs _args) =-    (sem_Args_ListArgs (sem_MExprList _args))-sem_Args (TableArg _arg) =-    (sem_Args_TableArg (sem_FieldList _arg))-sem_Args (StringArg _arg) =-    (sem_Args_StringArg _arg)--- semantic domain-type T_Args = ([MToken]) ->-              Int ->-              PrettyPrintConfig ->-              ( ([MToken]),Args,Bool,Doc)-data Inh_Args = Inh_Args {comments_Inh_Args :: ([MToken]),indent_Inh_Args :: Int,ppconf_Inh_Args :: PrettyPrintConfig}-data Syn_Args = Syn_Args {comments_Syn_Args :: ([MToken]),copy_Syn_Args :: Args,isMultiline_Syn_Args :: Bool,pretty_Syn_Args :: Doc}-wrap_Args :: T_Args ->-             Inh_Args ->-             Syn_Args-wrap_Args sem (Inh_Args _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_Args _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOpretty))-sem_Args_ListArgs :: T_MExprList ->-                     T_Args-sem_Args_ListArgs args_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _argsOisHead :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: Args-              _lhsOcomments :: ([MToken])-              _argsOcomments :: ([MToken])-              _argsOindent :: Int-              _argsOppconf :: PrettyPrintConfig-              _argsIcomments :: ([MToken])-              _argsIcopy :: MExprList-              _argsIisAssociative :: Bool-              _argsIisMultiline :: Bool-              _argsIpos :: Region-              _argsIprecedence :: OperatorLevel-              _argsIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 662 "src/GLua/AG/PrettyPrint.ag" #-}-                   parens _lhsIppconf _emptyParams     _argsIpretty-                   {-# LINE 612 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _emptyParams =-                  ({-# LINE 663 "src/GLua/AG/PrettyPrint.ag" #-}-                   toEmpty $ null _argsIcopy-                   {-# LINE 617 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argsOisHead =-                  ({-# LINE 664 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 622 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _argsIisMultiline-                   {-# LINE 627 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ListArgs _argsIcopy-                   {-# LINE 632 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 637 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _argsIcomments-                   {-# LINE 642 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 647 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argsOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 652 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argsOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 657 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _argsIcomments,_argsIcopy,_argsIisAssociative,_argsIisMultiline,_argsIpos,_argsIprecedence,_argsIpretty) =-                  args_ _argsOcomments _argsOindent _argsOisHead _argsOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))-sem_Args_TableArg :: T_FieldList ->-                     T_Args-sem_Args_TableArg arg_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _argOindent :: Int-              _lhsOisMultiline :: Bool-              _lhsOcopy :: Args-              _lhsOcomments :: ([MToken])-              _argOcomments :: ([MToken])-              _argOppconf :: PrettyPrintConfig-              _argIcanFitOnSameLine :: Bool-              _argIcomments :: ([MToken])-              _argIcopy :: FieldList-              _argIisMultiline :: Bool-              _argIisNil :: Bool-              _argIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 665 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _argIisMultiline then _prettyMulti     else _prettySingle-                   {-# LINE 684 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettyMulti =-                  ({-# LINE 666 "src/GLua/AG/PrettyPrint.ag" #-}-                   zchr '{' $+$ indent _lhsIppconf (_lhsIindent + 1) _argIpretty $+$ indent _lhsIppconf _lhsIindent (zchr '}')-                   {-# LINE 689 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettySingle =-                  ({-# LINE 667 "src/GLua/AG/PrettyPrint.ag" #-}-                   braces _lhsIppconf _emptyContents     _argIpretty-                   {-# LINE 694 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _emptyContents =-                  ({-# LINE 668 "src/GLua/AG/PrettyPrint.ag" #-}-                   toEmpty $ null _argIcopy-                   {-# LINE 699 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argOindent =-                  ({-# LINE 669 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent + (if _argIisMultiline then 1 else 0)-                   {-# LINE 704 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _argIisMultiline-                   {-# LINE 709 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   TableArg _argIcopy-                   {-# LINE 714 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 719 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _argIcomments-                   {-# LINE 724 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 729 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 734 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _argIcanFitOnSameLine,_argIcomments,_argIcopy,_argIisMultiline,_argIisNil,_argIpretty) =-                  arg_ _argOcomments _argOindent _argOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))-sem_Args_StringArg :: MToken ->-                      T_Args-sem_Args_StringArg arg_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisMultiline :: Bool-              _lhsOcopy :: Args-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 670 "src/GLua/AG/PrettyPrint.ag" #-}-                   tok arg_-                   {-# LINE 752 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 757 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   StringArg arg_-                   {-# LINE 762 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 767 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 772 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))--- BinOp ---------------------------------------------------------- cata-sem_BinOp :: BinOp ->-             T_BinOp-sem_BinOp (AOr) =-    (sem_BinOp_AOr)-sem_BinOp (AAnd) =-    (sem_BinOp_AAnd)-sem_BinOp (ALT) =-    (sem_BinOp_ALT)-sem_BinOp (AGT) =-    (sem_BinOp_AGT)-sem_BinOp (ALEQ) =-    (sem_BinOp_ALEQ)-sem_BinOp (AGEQ) =-    (sem_BinOp_AGEQ)-sem_BinOp (ANEq) =-    (sem_BinOp_ANEq)-sem_BinOp (AEq) =-    (sem_BinOp_AEq)-sem_BinOp (AConcatenate) =-    (sem_BinOp_AConcatenate)-sem_BinOp (APlus) =-    (sem_BinOp_APlus)-sem_BinOp (BinMinus) =-    (sem_BinOp_BinMinus)-sem_BinOp (AMultiply) =-    (sem_BinOp_AMultiply)-sem_BinOp (ADivide) =-    (sem_BinOp_ADivide)-sem_BinOp (AModulus) =-    (sem_BinOp_AModulus)-sem_BinOp (APower) =-    (sem_BinOp_APower)--- semantic domain-type T_BinOp = ([MToken]) ->-               Int ->-               PrettyPrintConfig ->-               ( ([MToken]),BinOp,Bool,Bool,OperatorLevel,Doc)-data Inh_BinOp = Inh_BinOp {comments_Inh_BinOp :: ([MToken]),indent_Inh_BinOp :: Int,ppconf_Inh_BinOp :: PrettyPrintConfig}-data Syn_BinOp = Syn_BinOp {comments_Syn_BinOp :: ([MToken]),copy_Syn_BinOp :: BinOp,isAssociative_Syn_BinOp :: Bool,isMultiline_Syn_BinOp :: Bool,precedence_Syn_BinOp :: OperatorLevel,pretty_Syn_BinOp :: Doc}-wrap_BinOp :: T_BinOp ->-              Inh_BinOp ->-              Syn_BinOp-wrap_BinOp sem (Inh_BinOp _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_BinOp _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisMultiline _lhsOprecedence _lhsOpretty))-sem_BinOp_AOr :: T_BinOp-sem_BinOp_AOr =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 745 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText (if cStyle _lhsIppconf then "||" else "or")-                   {-# LINE 836 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 746 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel1-                   {-# LINE 841 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 747 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 846 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 851 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AOr-                   {-# LINE 856 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 861 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 866 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_AAnd :: T_BinOp-sem_BinOp_AAnd =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 742 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText (if cStyle _lhsIppconf then "&&" else "and")-                   {-# LINE 883 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 743 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel2-                   {-# LINE 888 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 744 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 893 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 898 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AAnd-                   {-# LINE 903 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 908 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 913 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_ALT :: T_BinOp-sem_BinOp_ALT =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 724 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "<"-                   {-# LINE 930 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 725 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel3-                   {-# LINE 935 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 726 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 940 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 945 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ALT-                   {-# LINE 950 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 955 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 960 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_AGT :: T_BinOp-sem_BinOp_AGT =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 730 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText ">"-                   {-# LINE 977 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 731 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel3-                   {-# LINE 982 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 732 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 987 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 992 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AGT-                   {-# LINE 997 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1002 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1007 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_ALEQ :: T_BinOp-sem_BinOp_ALEQ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 727 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "<="-                   {-# LINE 1024 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 728 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel3-                   {-# LINE 1029 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 729 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 1034 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1039 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ALEQ-                   {-# LINE 1044 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1049 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1054 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_AGEQ :: T_BinOp-sem_BinOp_AGEQ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 733 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText ">="-                   {-# LINE 1071 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 734 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel3-                   {-# LINE 1076 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 735 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 1081 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1086 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AGEQ-                   {-# LINE 1091 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1096 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1101 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_ANEq :: T_BinOp-sem_BinOp_ANEq =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 739 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText (if cStyle _lhsIppconf then "!=" else "~=")-                   {-# LINE 1118 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 740 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel3-                   {-# LINE 1123 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 741 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 1128 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1133 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ANEq-                   {-# LINE 1138 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1143 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1148 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_AEq :: T_BinOp-sem_BinOp_AEq =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 736 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "=="-                   {-# LINE 1165 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 737 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel3-                   {-# LINE 1170 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 738 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 1175 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1180 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AEq-                   {-# LINE 1185 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1190 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1195 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_AConcatenate :: T_BinOp-sem_BinOp_AConcatenate =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 721 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText ".."-                   {-# LINE 1212 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 722 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel4-                   {-# LINE 1217 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 723 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 1222 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1227 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AConcatenate-                   {-# LINE 1232 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1237 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1242 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_APlus :: T_BinOp-sem_BinOp_APlus =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 703 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "+"-                   {-# LINE 1259 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 704 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel5-                   {-# LINE 1264 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 705 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 1269 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1274 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   APlus-                   {-# LINE 1279 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1284 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1289 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_BinMinus :: T_BinOp-sem_BinOp_BinMinus =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 706 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "-"-                   {-# LINE 1306 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 707 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel5-                   {-# LINE 1311 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 708 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1316 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1321 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   BinMinus-                   {-# LINE 1326 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1331 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1336 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_AMultiply :: T_BinOp-sem_BinOp_AMultiply =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 709 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "*"-                   {-# LINE 1353 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 710 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel6-                   {-# LINE 1358 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 711 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 1363 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1368 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AMultiply-                   {-# LINE 1373 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1378 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1383 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_ADivide :: T_BinOp-sem_BinOp_ADivide =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 712 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "/"-                   {-# LINE 1400 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 713 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel6-                   {-# LINE 1405 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 714 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1410 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1415 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ADivide-                   {-# LINE 1420 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1425 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1430 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_AModulus :: T_BinOp-sem_BinOp_AModulus =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 715 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "%"-                   {-# LINE 1447 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 716 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel6-                   {-# LINE 1452 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 717 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1457 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1462 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AModulus-                   {-# LINE 1467 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1472 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1477 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_BinOp_APower :: T_BinOp-sem_BinOp_APower =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: BinOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 718 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "^"-                   {-# LINE 1494 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 719 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 1499 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 720 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1504 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1509 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   APower-                   {-# LINE 1514 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1519 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1524 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))--- Block ---------------------------------------------------------- cata-sem_Block :: Block ->-             T_Block-sem_Block (Block _stats _ret) =-    (sem_Block_Block (sem_MStatList _stats) (sem_AReturn _ret))--- semantic domain-type T_Block = ([MToken]) ->-               Int ->-               PrettyPrintConfig ->-               Region ->-               ( ([MToken]),Block,Bool,Bool,Doc,Int)-data Inh_Block = Inh_Block {comments_Inh_Block :: ([MToken]),indent_Inh_Block :: Int,ppconf_Inh_Block :: PrettyPrintConfig,statRegion_Inh_Block :: Region}-data Syn_Block = Syn_Block {comments_Syn_Block :: ([MToken]),copy_Syn_Block :: Block,hasBreaking_Syn_Block :: Bool,isMultiline_Syn_Block :: Bool,pretty_Syn_Block :: Doc,statementCount_Syn_Block :: Int}-wrap_Block :: T_Block ->-              Inh_Block ->-              Syn_Block-wrap_Block sem (Inh_Block _lhsIcomments _lhsIindent _lhsIppconf _lhsIstatRegion) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstatementCount) = sem _lhsIcomments _lhsIindent _lhsIppconf _lhsIstatRegion-     in  (Syn_Block _lhsOcomments _lhsOcopy _lhsOhasBreaking _lhsOisMultiline _lhsOpretty _lhsOstatementCount))-sem_Block_Block :: T_MStatList ->-                   T_AReturn ->-                   T_Block-sem_Block_Block stats_ ret_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _statsOisHead :: Bool-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOstatementCount :: Int-              _lhsOcopy :: Block-              _lhsOcomments :: ([MToken])-              _statsOcomments :: ([MToken])-              _statsOindent :: Int-              _statsOppconf :: PrettyPrintConfig-              _statsOstatRegion :: Region-              _retOcomments :: ([MToken])-              _retOindent :: Int-              _retOppconf :: PrettyPrintConfig-              _statsIcomments :: ([MToken])-              _statsIcopy :: MStatList-              _statsIhasBreaking :: Bool-              _statsIisLast :: Bool-              _statsIisMultiline :: Bool-              _statsIpotentiallyAmbiguousAsStatement :: Bool-              _statsIpretty :: Doc-              _statsIstatementCount :: Int-              _retIcomments :: ([MToken])-              _retIcopy :: AReturn-              _retIhasBreaking :: Bool-              _retIisMultiline :: Bool-              _retIpretty :: Doc-              _retIstatementCount :: Int-              _newl =-                  ({-# LINE 466 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _statsIstatementCount > 0 && _retIhasBreaking then zchr '\n' else empty-                   {-# LINE 1586 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 467 "src/GLua/AG/PrettyPrint.ag" #-}-                   _statsIpretty <> _newl     $+$ _retIpretty-                   {-# LINE 1591 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _statsOisHead =-                  ({-# LINE 468 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 1596 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}-                   _statsIhasBreaking || _retIhasBreaking-                   {-# LINE 1601 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _statsIisMultiline || _retIisMultiline-                   {-# LINE 1606 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOstatementCount =-                  ({-# LINE 287 "src/GLua/AG/PrettyPrint.ag" #-}-                   _statsIstatementCount + _retIstatementCount-                   {-# LINE 1611 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   Block _statsIcopy _retIcopy-                   {-# LINE 1616 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1621 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _retIcomments-                   {-# LINE 1626 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _statsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1631 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _statsOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 1636 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _statsOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 1641 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _statsOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 1646 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _retOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _statsIcomments-                   {-# LINE 1651 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _retOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 1656 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _retOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 1661 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _statsIcomments,_statsIcopy,_statsIhasBreaking,_statsIisLast,_statsIisMultiline,_statsIpotentiallyAmbiguousAsStatement,_statsIpretty,_statsIstatementCount) =-                  stats_ _statsOcomments _statsOindent _statsOisHead _statsOppconf _statsOstatRegion-              ( _retIcomments,_retIcopy,_retIhasBreaking,_retIisMultiline,_retIpretty,_retIstatementCount) =-                  ret_ _retOcomments _retOindent _retOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstatementCount)))--- Declaration ---------------------------------------------------- cata-sem_Declaration :: Declaration ->-                   T_Declaration-sem_Declaration ( x1,x2) =-    (sem_Declaration_Tuple (sem_PrefixExp x1) (sem_MaybeMExpr x2))--- semantic domain-type T_Declaration = ([MToken]) ->-                     Int ->-                     PrettyPrintConfig ->-                     ( ([MToken]),Declaration,Doc,Bool,Bool,Doc,Doc,Bool)-data Inh_Declaration = Inh_Declaration {comments_Inh_Declaration :: ([MToken]),indent_Inh_Declaration :: Int,ppconf_Inh_Declaration :: PrettyPrintConfig}-data Syn_Declaration = Syn_Declaration {comments_Syn_Declaration :: ([MToken]),copy_Syn_Declaration :: Declaration,exprPretty_Syn_Declaration :: Doc,isDefined_Syn_Declaration :: Bool,isMultiline_Syn_Declaration :: Bool,pretty_Syn_Declaration :: Doc,varPretty_Syn_Declaration :: Doc,wouldBeAmbiguousIfNextStatementIsExprVar_Syn_Declaration :: Bool}-wrap_Declaration :: T_Declaration ->-                    Inh_Declaration ->-                    Syn_Declaration-wrap_Declaration sem (Inh_Declaration _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOexprPretty,_lhsOisDefined,_lhsOisMultiline,_lhsOpretty,_lhsOvarPretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_Declaration _lhsOcomments _lhsOcopy _lhsOexprPretty _lhsOisDefined _lhsOisMultiline _lhsOpretty _lhsOvarPretty _lhsOwouldBeAmbiguousIfNextStatementIsExprVar))-sem_Declaration_Tuple :: T_PrefixExp ->-                         T_MaybeMExpr ->-                         T_Declaration-sem_Declaration_Tuple x1_ x2_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOvarPretty :: Doc-              _lhsOexprPretty :: Doc-              _x1OparentOperatorPrecedence :: OperatorLevel-              _x1OparentOperatorAssociative :: Bool-              _lhsOisDefined :: Bool-              _lhsOisMultiline :: Bool-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: Declaration-              _lhsOcomments :: ([MToken])-              _lhsOpretty :: Doc-              _x1Ocomments :: ([MToken])-              _x1Oindent :: Int-              _x1Oppconf :: PrettyPrintConfig-              _x2Ocomments :: ([MToken])-              _x2Oindent :: Int-              _x2Oppconf :: PrettyPrintConfig-              _x1Icomments :: ([MToken])-              _x1Icopy :: PrefixExp-              _x1IisAssociative :: Bool-              _x1IisLiteral :: Bool-              _x1IisMultiline :: Bool-              _x1IpotentiallyAmbiguousAsStatement :: Bool-              _x1Iprecedence :: OperatorLevel-              _x1Ipretty :: Doc-              _x2Icomments :: ([MToken])-              _x2Icopy :: MaybeMExpr-              _x2IisAssociative :: Bool-              _x2IisDefined :: Bool-              _x2IisMultiline :: Bool-              _x2Iprecedence :: OperatorLevel-              _x2Ipretty :: Doc-              _x2IwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOvarPretty =-                  ({-# LINE 406 "src/GLua/AG/PrettyPrint.ag" #-}-                   _x1Ipretty-                   {-# LINE 1729 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOexprPretty =-                  ({-# LINE 407 "src/GLua/AG/PrettyPrint.ag" #-}-                   _x2Ipretty-                   {-# LINE 1734 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x1OparentOperatorPrecedence =-                  ({-# LINE 408 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 1739 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x1OparentOperatorAssociative =-                  ({-# LINE 409 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 1744 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisDefined =-                  ({-# LINE 259 "src/GLua/AG/PrettyPrint.ag" #-}-                   _x2IisDefined-                   {-# LINE 1749 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _x1IisMultiline || _x2IisMultiline-                   {-# LINE 1754 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   _x2IwouldBeAmbiguousIfNextStatementIsExprVar-                   {-# LINE 1759 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   (_x1Icopy,_x2Icopy)-                   {-# LINE 1764 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1769 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _x2Icomments-                   {-# LINE 1774 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 232 "src/GLua/AG/PrettyPrint.ag" #-}-                   _x2Ipretty-                   {-# LINE 1779 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x1Ocomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1784 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x1Oindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 1789 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x1Oppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 1794 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x2Ocomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _x1Icomments-                   {-# LINE 1799 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x2Oindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 1804 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x2Oppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 1809 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _x1Icomments,_x1Icopy,_x1IisAssociative,_x1IisLiteral,_x1IisMultiline,_x1IpotentiallyAmbiguousAsStatement,_x1Iprecedence,_x1Ipretty) =-                  x1_ _x1Ocomments _x1Oindent _x1OparentOperatorAssociative _x1OparentOperatorPrecedence _x1Oppconf-              ( _x2Icomments,_x2Icopy,_x2IisAssociative,_x2IisDefined,_x2IisMultiline,_x2Iprecedence,_x2Ipretty,_x2IwouldBeAmbiguousIfNextStatementIsExprVar) =-                  x2_ _x2Ocomments _x2Oindent _x2Oppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOexprPretty,_lhsOisDefined,_lhsOisMultiline,_lhsOpretty,_lhsOvarPretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))--- Else ----------------------------------------------------------- cata-sem_Else :: Else ->-            T_Else-sem_Else (Prelude.Just x) =-    (sem_Else_Just (sem_MElse x))-sem_Else Prelude.Nothing =-    sem_Else_Nothing--- semantic domain-type T_Else = ([MToken]) ->-              Int ->-              PrettyPrintConfig ->-              Region ->-              ( ([MToken]),Else,Bool,Bool,Region,Doc)-data Inh_Else = Inh_Else {comments_Inh_Else :: ([MToken]),indent_Inh_Else :: Int,ppconf_Inh_Else :: PrettyPrintConfig,statRegion_Inh_Else :: Region}-data Syn_Else = Syn_Else {comments_Syn_Else :: ([MToken]),copy_Syn_Else :: Else,elsesExist_Syn_Else :: Bool,isMultiline_Syn_Else :: Bool,pos_Syn_Else :: Region,pretty_Syn_Else :: Doc}-wrap_Else :: T_Else ->-             Inh_Else ->-             Syn_Else-wrap_Else sem (Inh_Else _lhsIcomments _lhsIindent _lhsIppconf _lhsIstatRegion) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf _lhsIstatRegion-     in  (Syn_Else _lhsOcomments _lhsOcopy _lhsOelsesExist _lhsOisMultiline _lhsOpos _lhsOpretty))-sem_Else_Just :: T_MElse ->-                 T_Else-sem_Else_Just just_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOelsesExist :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: Else-              _lhsOcomments :: ([MToken])-              _lhsOpos :: Region-              _lhsOpretty :: Doc-              _justOcomments :: ([MToken])-              _justOindent :: Int-              _justOppconf :: PrettyPrintConfig-              _justOstatRegion :: Region-              _justIcomments :: ([MToken])-              _justIcopy :: MElse-              _justIelsesExist :: Bool-              _justIisMultiline :: Bool-              _justIpos :: Region-              _justIpretty :: Doc-              _lhsOelsesExist =-                  ({-# LINE 443 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 1864 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _justIisMultiline-                   {-# LINE 1869 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   Just _justIcopy-                   {-# LINE 1874 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1879 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _justIcomments-                   {-# LINE 1884 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpos =-                  ({-# LINE 271 "src/GLua/AG/PrettyPrint.ag" #-}-                   _justIpos-                   {-# LINE 1889 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 232 "src/GLua/AG/PrettyPrint.ag" #-}-                   _justIpretty-                   {-# LINE 1894 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _justOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1899 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _justOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 1904 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _justOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 1909 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _justOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 1914 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _justIcomments,_justIcopy,_justIelsesExist,_justIisMultiline,_justIpos,_justIpretty) =-                  just_ _justOcomments _justOindent _justOppconf _justOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))-sem_Else_Nothing :: T_Else-sem_Else_Nothing =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOpos :: Region-              _lhsOelsesExist :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: Else-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 444 "src/GLua/AG/PrettyPrint.ag" #-}-                   empty-                   {-# LINE 1934 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpos =-                  ({-# LINE 445 "src/GLua/AG/PrettyPrint.ag" #-}-                   emptyRg-                   {-# LINE 1939 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOelsesExist =-                  ({-# LINE 293 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1944 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 1949 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   Nothing-                   {-# LINE 1954 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 1959 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 1964 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))--- ElseIf --------------------------------------------------------- cata-sem_ElseIf :: ElseIf ->-              T_ElseIf-sem_ElseIf ( x1,x2) =-    (sem_ElseIf_Tuple (sem_MExpr x1) (sem_Block x2))--- semantic domain-type T_ElseIf = ([MToken]) ->-                Int ->-                PrettyPrintConfig ->-                ( ([MToken]),ElseIf,Bool,Doc)-data Inh_ElseIf = Inh_ElseIf {comments_Inh_ElseIf :: ([MToken]),indent_Inh_ElseIf :: Int,ppconf_Inh_ElseIf :: PrettyPrintConfig}-data Syn_ElseIf = Syn_ElseIf {comments_Syn_ElseIf :: ([MToken]),copy_Syn_ElseIf :: ElseIf,isMultiline_Syn_ElseIf :: Bool,pretty_Syn_ElseIf :: Doc}-wrap_ElseIf :: T_ElseIf ->-               Inh_ElseIf ->-               Syn_ElseIf-wrap_ElseIf sem (Inh_ElseIf _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_ElseIf _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOpretty))-sem_ElseIf_Tuple :: T_MExpr ->-                    T_Block ->-                    T_ElseIf-sem_ElseIf_Tuple x1_ x2_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _x2Oindent :: Int-              _x2OstatRegion :: Region-              _x1OparentOperatorPrecedence :: OperatorLevel-              _x1OparentOperatorAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: ElseIf-              _lhsOcomments :: ([MToken])-              _x1Ocomments :: ([MToken])-              _x1Oindent :: Int-              _x1Oppconf :: PrettyPrintConfig-              _x2Ocomments :: ([MToken])-              _x2Oppconf :: PrettyPrintConfig-              _x1Icomments :: ([MToken])-              _x1Icopy :: MExpr-              _x1IisAssociative :: Bool-              _x1IisLiteral :: Bool-              _x1IisMultiline :: Bool-              _x1Ipos :: Region-              _x1Iprecedence :: OperatorLevel-              _x1Ipretty :: Doc-              _x1IwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _x2Icomments :: ([MToken])-              _x2Icopy :: Block-              _x2IhasBreaking :: Bool-              _x2IisMultiline :: Bool-              _x2Ipretty :: Doc-              _x2IstatementCount :: Int-              _lhsOpretty =-                  ({-# LINE 426 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "elseif" <-> _x1Ipretty <-> zeroWidthText "then" $+$ _x2Ipretty-                   {-# LINE 2024 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x2Oindent =-                  ({-# LINE 427 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent + 1-                   {-# LINE 2029 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x2OstatRegion =-                  ({-# LINE 428 "src/GLua/AG/PrettyPrint.ag" #-}-                   emptyRg-                   {-# LINE 2034 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x1OparentOperatorPrecedence =-                  ({-# LINE 429 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 2039 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x1OparentOperatorAssociative =-                  ({-# LINE 430 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 2044 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _x1IisMultiline || _x2IisMultiline-                   {-# LINE 2049 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   (_x1Icopy,_x2Icopy)-                   {-# LINE 2054 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2059 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _x2Icomments-                   {-# LINE 2064 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x1Ocomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2069 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x1Oindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 2074 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x1Oppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 2079 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x2Ocomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _x1Icomments-                   {-# LINE 2084 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _x2Oppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 2089 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _x1Icomments,_x1Icopy,_x1IisAssociative,_x1IisLiteral,_x1IisMultiline,_x1Ipos,_x1Iprecedence,_x1Ipretty,_x1IwouldBeAmbiguousIfNextStatementIsExprVar) =-                  x1_ _x1Ocomments _x1Oindent _x1OparentOperatorAssociative _x1OparentOperatorPrecedence _x1Oppconf-              ( _x2Icomments,_x2Icopy,_x2IhasBreaking,_x2IisMultiline,_x2Ipretty,_x2IstatementCount) =-                  x2_ _x2Ocomments _x2Oindent _x2Oppconf _x2OstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))--- ElseIfList ----------------------------------------------------- cata-sem_ElseIfList :: ElseIfList ->-                  T_ElseIfList-sem_ElseIfList list =-    (Prelude.foldr sem_ElseIfList_Cons sem_ElseIfList_Nil (Prelude.map sem_MElseIf list))--- semantic domain-type T_ElseIfList = ([MToken]) ->-                    Int ->-                    PrettyPrintConfig ->-                    ( ([MToken]),ElseIfList,Bool,Bool,Region,Doc)-data Inh_ElseIfList = Inh_ElseIfList {comments_Inh_ElseIfList :: ([MToken]),indent_Inh_ElseIfList :: Int,ppconf_Inh_ElseIfList :: PrettyPrintConfig}-data Syn_ElseIfList = Syn_ElseIfList {comments_Syn_ElseIfList :: ([MToken]),copy_Syn_ElseIfList :: ElseIfList,elsesExist_Syn_ElseIfList :: Bool,isMultiline_Syn_ElseIfList :: Bool,pos_Syn_ElseIfList :: Region,pretty_Syn_ElseIfList :: Doc}-wrap_ElseIfList :: T_ElseIfList ->-                   Inh_ElseIfList ->-                   Syn_ElseIfList-wrap_ElseIfList sem (Inh_ElseIfList _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_ElseIfList _lhsOcomments _lhsOcopy _lhsOelsesExist _lhsOisMultiline _lhsOpos _lhsOpretty))-sem_ElseIfList_Cons :: T_MElseIf ->-                       T_ElseIfList ->-                       T_ElseIfList-sem_ElseIfList_Cons hd_ tl_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOelsesExist :: Bool-              _lhsOpos :: Region-              _lhsOisMultiline :: Bool-              _lhsOcopy :: ElseIfList-              _lhsOcomments :: ([MToken])-              _hdOcomments :: ([MToken])-              _hdOindent :: Int-              _hdOppconf :: PrettyPrintConfig-              _tlOcomments :: ([MToken])-              _tlOindent :: Int-              _tlOppconf :: PrettyPrintConfig-              _hdIcomments :: ([MToken])-              _hdIcopy :: MElseIf-              _hdIisMultiline :: Bool-              _hdIpos :: Region-              _hdIpretty :: Doc-              _tlIcomments :: ([MToken])-              _tlIcopy :: ElseIfList-              _tlIelsesExist :: Bool-              _tlIisMultiline :: Bool-              _tlIpos :: Region-              _tlIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 436 "src/GLua/AG/PrettyPrint.ag" #-}-                   indent _lhsIppconf _lhsIindent _hdIpretty $+$ _tlIpretty-                   {-# LINE 2148 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOelsesExist =-                  ({-# LINE 437 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 2153 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpos =-                  ({-# LINE 438 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIpos-                   {-# LINE 2158 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIisMultiline || _tlIisMultiline-                   {-# LINE 2163 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   (:) _hdIcopy _tlIcopy-                   {-# LINE 2168 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2173 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _tlIcomments-                   {-# LINE 2178 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2183 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 2188 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 2193 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIcomments-                   {-# LINE 2198 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 2203 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 2208 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _hdIcomments,_hdIcopy,_hdIisMultiline,_hdIpos,_hdIpretty) =-                  hd_ _hdOcomments _hdOindent _hdOppconf-              ( _tlIcomments,_tlIcopy,_tlIelsesExist,_tlIisMultiline,_tlIpos,_tlIpretty) =-                  tl_ _tlOcomments _tlOindent _tlOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))-sem_ElseIfList_Nil :: T_ElseIfList-sem_ElseIfList_Nil =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOpos :: Region-              _lhsOelsesExist :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: ElseIfList-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 439 "src/GLua/AG/PrettyPrint.ag" #-}-                   empty-                   {-# LINE 2229 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpos =-                  ({-# LINE 440 "src/GLua/AG/PrettyPrint.ag" #-}-                   emptyRg-                   {-# LINE 2234 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOelsesExist =-                  ({-# LINE 293 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2239 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2244 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   []-                   {-# LINE 2249 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2254 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2259 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))--- Expr ----------------------------------------------------------- cata-sem_Expr :: Expr ->-            T_Expr-sem_Expr (ANil) =-    (sem_Expr_ANil)-sem_Expr (AFalse) =-    (sem_Expr_AFalse)-sem_Expr (ATrue) =-    (sem_Expr_ATrue)-sem_Expr (ANumber _num) =-    (sem_Expr_ANumber _num)-sem_Expr (AString _str) =-    (sem_Expr_AString _str)-sem_Expr (AVarArg) =-    (sem_Expr_AVarArg)-sem_Expr (AnonymousFunc _pars _body) =-    (sem_Expr_AnonymousFunc _pars (sem_Block _body))-sem_Expr (APrefixExpr _pexpr) =-    (sem_Expr_APrefixExpr (sem_PrefixExp _pexpr))-sem_Expr (ATableConstructor _fields) =-    (sem_Expr_ATableConstructor (sem_FieldList _fields))-sem_Expr (BinOpExpr _op _left _right) =-    (sem_Expr_BinOpExpr (sem_BinOp _op) (sem_MExpr _left) (sem_MExpr _right))-sem_Expr (UnOpExpr _op _right) =-    (sem_Expr_UnOpExpr (sem_UnOp _op) (sem_MExpr _right))--- semantic domain-type T_Expr = ([MToken]) ->-              Int ->-              Bool ->-              OperatorLevel ->-              PrettyPrintConfig ->-              Region ->-              ( ([MToken]),Expr,Bool,Bool,Bool,OperatorLevel,Doc,Bool)-data Inh_Expr = Inh_Expr {comments_Inh_Expr :: ([MToken]),indent_Inh_Expr :: Int,parentOperatorAssociative_Inh_Expr :: Bool,parentOperatorPrecedence_Inh_Expr :: OperatorLevel,ppconf_Inh_Expr :: PrettyPrintConfig,statRegion_Inh_Expr :: Region}-data Syn_Expr = Syn_Expr {comments_Syn_Expr :: ([MToken]),copy_Syn_Expr :: Expr,isAssociative_Syn_Expr :: Bool,isLiteral_Syn_Expr :: Bool,isMultiline_Syn_Expr :: Bool,precedence_Syn_Expr :: OperatorLevel,pretty_Syn_Expr :: Doc,wouldBeAmbiguousIfNextStatementIsExprVar_Syn_Expr :: Bool}-wrap_Expr :: T_Expr ->-             Inh_Expr ->-             Syn_Expr-wrap_Expr sem (Inh_Expr _lhsIcomments _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf _lhsIstatRegion) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar) = sem _lhsIcomments _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf _lhsIstatRegion-     in  (Syn_Expr _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisLiteral _lhsOisMultiline _lhsOprecedence _lhsOpretty _lhsOwouldBeAmbiguousIfNextStatementIsExprVar))-sem_Expr_ANil :: T_Expr-sem_Expr_ANil =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOisLiteral :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: Expr-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 620 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "nil"-                   {-# LINE 2323 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 621 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 2328 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2333 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2338 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 2343 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2348 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ANil-                   {-# LINE 2353 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2358 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2363 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_Expr_AFalse :: T_Expr-sem_Expr_AFalse =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOisLiteral :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: Expr-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 622 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "false"-                   {-# LINE 2385 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 623 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 2390 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2395 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2400 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 2405 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2410 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AFalse-                   {-# LINE 2415 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2420 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2425 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_Expr_ATrue :: T_Expr-sem_Expr_ATrue =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOisLiteral :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: Expr-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 624 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "true"-                   {-# LINE 2447 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 625 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 2452 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2457 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2462 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 2467 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2472 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ATrue-                   {-# LINE 2477 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2482 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2487 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_Expr_ANumber :: String ->-                    T_Expr-sem_Expr_ANumber num_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOisLiteral :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: Expr-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 626 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText num_-                   {-# LINE 2510 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 627 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 2515 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2520 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2525 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 2530 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2535 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ANumber num_-                   {-# LINE 2540 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2545 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2550 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_Expr_AString :: MToken ->-                    T_Expr-sem_Expr_AString str_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOisLiteral :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: Expr-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 628 "src/GLua/AG/PrettyPrint.ag" #-}-                   tok str_-                   {-# LINE 2573 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 629 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 2578 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2583 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2588 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 2593 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2598 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AString str_-                   {-# LINE 2603 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2608 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2613 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_Expr_AVarArg :: T_Expr-sem_Expr_AVarArg =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOisLiteral :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: Expr-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 630 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "..."-                   {-# LINE 2635 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 631 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 2640 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2645 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2650 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 2655 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2660 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AVarArg-                   {-# LINE 2665 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2670 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2675 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_Expr_AnonymousFunc :: ([MToken]) ->-                          T_Block ->-                          T_Expr-sem_Expr_AnonymousFunc pars_ body_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf-       _lhsIstatRegion ->-         (let _bodyOindent :: Int-              _lhsOpretty :: Doc-              _lhsOisAssociative :: Bool-              _lhsOisLiteral :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: Expr-              _lhsOcomments :: ([MToken])-              _bodyOcomments :: ([MToken])-              _bodyOppconf :: PrettyPrintConfig-              _bodyOstatRegion :: Region-              _bodyIcomments :: ([MToken])-              _bodyIcopy :: Block-              _bodyIhasBreaking :: Bool-              _bodyIisMultiline :: Bool-              _bodyIpretty :: Doc-              _bodyIstatementCount :: Int-              _isMultiline =-                  ({-# LINE 632 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIisMultiline || _bodyIstatementCount > 1 || (_bodyIstatementCount == 1 && not _bodyIhasBreaking)-                   {-# LINE 2709 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _singleLinePretty =-                  ({-# LINE 633 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "function" <> parens _lhsIppconf _emptyParams     (printList tok (render _comma    ) pars_) <-> _bodyIpretty <-> zeroWidthText "end"-                   {-# LINE 2714 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _multilinePretty =-                  ({-# LINE 634 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "function" <> parens _lhsIppconf _emptyParams     (printList tok (render _comma    ) pars_) $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")-                   {-# LINE 2719 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _comma =-                  ({-# LINE 635 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)-                   {-# LINE 2724 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _emptyParams =-                  ({-# LINE 636 "src/GLua/AG/PrettyPrint.ag" #-}-                   toEmpty $ null pars_-                   {-# LINE 2729 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOindent =-                  ({-# LINE 637 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _isMultiline     then _lhsIindent + 1 else 0-                   {-# LINE 2734 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 638 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _isMultiline     then _multilinePretty     else _singleLinePretty-                   {-# LINE 2739 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2744 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 246 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2749 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _isMultiline-                   {-# LINE 2754 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 2759 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2764 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AnonymousFunc pars_ _bodyIcopy-                   {-# LINE 2769 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2774 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIcomments-                   {-# LINE 2779 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2784 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 2789 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 2794 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =-                  body_ _bodyOcomments _bodyOindent _bodyOppconf _bodyOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_Expr_APrefixExpr :: T_PrefixExp ->-                        T_Expr-sem_Expr_APrefixExpr pexpr_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisLiteral :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOcopy :: Expr-              _lhsOcomments :: ([MToken])-              _pexprOcomments :: ([MToken])-              _pexprOindent :: Int-              _pexprOparentOperatorAssociative :: Bool-              _pexprOparentOperatorPrecedence :: OperatorLevel-              _pexprOppconf :: PrettyPrintConfig-              _pexprIcomments :: ([MToken])-              _pexprIcopy :: PrefixExp-              _pexprIisAssociative :: Bool-              _pexprIisLiteral :: Bool-              _pexprIisMultiline :: Bool-              _pexprIpotentiallyAmbiguousAsStatement :: Bool-              _pexprIprecedence :: OperatorLevel-              _pexprIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 639 "src/GLua/AG/PrettyPrint.ag" #-}-                   _pexprIpretty-                   {-# LINE 2832 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 640 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 2837 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   _pexprIisAssociative-                   {-# LINE 2842 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 246 "src/GLua/AG/PrettyPrint.ag" #-}-                   _pexprIisLiteral-                   {-# LINE 2847 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _pexprIisMultiline-                   {-# LINE 2852 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   _pexprIprecedence-                   {-# LINE 2857 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   APrefixExpr _pexprIcopy-                   {-# LINE 2862 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2867 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _pexprIcomments-                   {-# LINE 2872 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _pexprOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2877 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _pexprOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 2882 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _pexprOparentOperatorAssociative =-                  ({-# LINE 243 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIparentOperatorAssociative-                   {-# LINE 2887 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _pexprOparentOperatorPrecedence =-                  ({-# LINE 242 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIparentOperatorPrecedence-                   {-# LINE 2892 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _pexprOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 2897 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _pexprIcomments,_pexprIcopy,_pexprIisAssociative,_pexprIisLiteral,_pexprIisMultiline,_pexprIpotentiallyAmbiguousAsStatement,_pexprIprecedence,_pexprIpretty) =-                  pexpr_ _pexprOcomments _pexprOindent _pexprOparentOperatorAssociative _pexprOparentOperatorPrecedence _pexprOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_Expr_ATableConstructor :: T_FieldList ->-                              T_Expr-sem_Expr_ATableConstructor fields_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOisMultiline :: Bool-              _lhsOisLiteral :: Bool-              _fieldsOindent :: Int-              _lhsOisAssociative :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: Expr-              _lhsOcomments :: ([MToken])-              _fieldsOcomments :: ([MToken])-              _fieldsOppconf :: PrettyPrintConfig-              _fieldsIcanFitOnSameLine :: Bool-              _fieldsIcomments :: ([MToken])-              _fieldsIcopy :: FieldList-              _fieldsIisMultiline :: Bool-              _fieldsIisNil :: Bool-              _fieldsIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 642 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _fieldsIisMultiline then _prettyMulti     else _prettySingle-                   {-# LINE 2931 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 643 "src/GLua/AG/PrettyPrint.ag" #-}-                   not $ null $ _fieldsIcopy-                   {-# LINE 2936 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 644 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 2941 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettyMulti =-                  ({-# LINE 645 "src/GLua/AG/PrettyPrint.ag" #-}-                   zchr '{' $+$ indent _lhsIppconf (_lhsIindent + 1) _fieldsIpretty $+$ indent _lhsIppconf _lhsIindent (zchr '}')-                   {-# LINE 2946 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettySingle =-                  ({-# LINE 646 "src/GLua/AG/PrettyPrint.ag" #-}-                   braces _lhsIppconf _emptyContents     _fieldsIpretty-                   {-# LINE 2951 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _emptyContents =-                  ({-# LINE 647 "src/GLua/AG/PrettyPrint.ag" #-}-                   toEmpty $ null _fieldsIcopy-                   {-# LINE 2956 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _fieldsOindent =-                  ({-# LINE 648 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent + (if _fieldsIisMultiline then 1 else 0)-                   {-# LINE 2961 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2966 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 2971 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 2976 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ATableConstructor _fieldsIcopy-                   {-# LINE 2981 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 2986 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _fieldsIcomments-                   {-# LINE 2991 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _fieldsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 2996 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _fieldsOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3001 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _fieldsIcanFitOnSameLine,_fieldsIcomments,_fieldsIcopy,_fieldsIisMultiline,_fieldsIisNil,_fieldsIpretty) =-                  fields_ _fieldsOcomments _fieldsOindent _fieldsOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_Expr_BinOpExpr :: T_BinOp ->-                      T_MExpr ->-                      T_MExpr ->-                      T_Expr-sem_Expr_BinOpExpr op_ left_ right_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _leftOparentOperatorPrecedence :: OperatorLevel-              _rightOparentOperatorPrecedence :: OperatorLevel-              _leftOparentOperatorAssociative :: Bool-              _rightOparentOperatorAssociative :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisLiteral :: Bool-              _lhsOisMultiline :: Bool-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: Expr-              _lhsOcomments :: ([MToken])-              _opOcomments :: ([MToken])-              _opOindent :: Int-              _opOppconf :: PrettyPrintConfig-              _leftOcomments :: ([MToken])-              _leftOindent :: Int-              _leftOppconf :: PrettyPrintConfig-              _rightOcomments :: ([MToken])-              _rightOindent :: Int-              _rightOppconf :: PrettyPrintConfig-              _opIcomments :: ([MToken])-              _opIcopy :: BinOp-              _opIisAssociative :: Bool-              _opIisMultiline :: Bool-              _opIprecedence :: OperatorLevel-              _opIpretty :: Doc-              _leftIcomments :: ([MToken])-              _leftIcopy :: MExpr-              _leftIisAssociative :: Bool-              _leftIisLiteral :: Bool-              _leftIisMultiline :: Bool-              _leftIpos :: Region-              _leftIprecedence :: OperatorLevel-              _leftIpretty :: Doc-              _leftIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _rightIcomments :: ([MToken])-              _rightIcopy :: MExpr-              _rightIisAssociative :: Bool-              _rightIisLiteral :: Bool-              _rightIisMultiline :: Bool-              _rightIpos :: Region-              _rightIprecedence :: OperatorLevel-              _rightIpretty :: Doc-              _rightIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOpretty =-                  ({-# LINE 649 "src/GLua/AG/PrettyPrint.ag" #-}-                   _leftIpretty <-> _opIpretty <-> _rightIpretty-                   {-# LINE 3065 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 652 "src/GLua/AG/PrettyPrint.ag" #-}-                   min _opIprecedence $ min _leftIprecedence _rightIprecedence-                   {-# LINE 3070 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _leftOparentOperatorPrecedence =-                  ({-# LINE 653 "src/GLua/AG/PrettyPrint.ag" #-}-                   _opIprecedence-                   {-# LINE 3075 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _rightOparentOperatorPrecedence =-                  ({-# LINE 654 "src/GLua/AG/PrettyPrint.ag" #-}-                   _opIprecedence-                   {-# LINE 3080 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _leftOparentOperatorAssociative =-                  ({-# LINE 655 "src/GLua/AG/PrettyPrint.ag" #-}-                   _opIisAssociative-                   {-# LINE 3085 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _rightOparentOperatorAssociative =-                  ({-# LINE 656 "src/GLua/AG/PrettyPrint.ag" #-}-                   _opIisAssociative-                   {-# LINE 3090 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   _opIisAssociative && _leftIisAssociative && _rightIisAssociative-                   {-# LINE 3095 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 246 "src/GLua/AG/PrettyPrint.ag" #-}-                   ((\_ _ -> False) _leftIisLiteral _rightIisLiteral)-                   {-# LINE 3100 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _opIisMultiline || _leftIisMultiline || _rightIisMultiline-                   {-# LINE 3105 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   _leftIwouldBeAmbiguousIfNextStatementIsExprVar || _rightIwouldBeAmbiguousIfNextStatementIsExprVar-                   {-# LINE 3110 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   BinOpExpr _opIcopy _leftIcopy _rightIcopy-                   {-# LINE 3115 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 3120 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _rightIcomments-                   {-# LINE 3125 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _opOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 3130 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _opOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3135 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _opOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3140 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _leftOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _opIcomments-                   {-# LINE 3145 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _leftOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3150 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _leftOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3155 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _rightOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _leftIcomments-                   {-# LINE 3160 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _rightOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3165 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _rightOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3170 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _opIcomments,_opIcopy,_opIisAssociative,_opIisMultiline,_opIprecedence,_opIpretty) =-                  op_ _opOcomments _opOindent _opOppconf-              ( _leftIcomments,_leftIcopy,_leftIisAssociative,_leftIisLiteral,_leftIisMultiline,_leftIpos,_leftIprecedence,_leftIpretty,_leftIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  left_ _leftOcomments _leftOindent _leftOparentOperatorAssociative _leftOparentOperatorPrecedence _leftOppconf-              ( _rightIcomments,_rightIcopy,_rightIisAssociative,_rightIisLiteral,_rightIisMultiline,_rightIpos,_rightIprecedence,_rightIpretty,_rightIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  right_ _rightOcomments _rightOindent _rightOparentOperatorAssociative _rightOparentOperatorPrecedence _rightOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_Expr_UnOpExpr :: T_UnOp ->-                     T_MExpr ->-                     T_Expr-sem_Expr_UnOpExpr op_ right_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _rightOparentOperatorPrecedence :: OperatorLevel-              _lhsOisAssociative :: Bool-              _lhsOisLiteral :: Bool-              _lhsOisMultiline :: Bool-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: Expr-              _lhsOcomments :: ([MToken])-              _opOcomments :: ([MToken])-              _opOindent :: Int-              _opOppconf :: PrettyPrintConfig-              _rightOcomments :: ([MToken])-              _rightOindent :: Int-              _rightOparentOperatorAssociative :: Bool-              _rightOppconf :: PrettyPrintConfig-              _opIcomments :: ([MToken])-              _opIcopy :: UnOp-              _opIisMultiline :: Bool-              _opIpretty :: Doc-              _rightIcomments :: ([MToken])-              _rightIcopy :: MExpr-              _rightIisAssociative :: Bool-              _rightIisLiteral :: Bool-              _rightIisMultiline :: Bool-              _rightIpos :: Region-              _rightIprecedence :: OperatorLevel-              _rightIpretty :: Doc-              _rightIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOpretty =-                  ({-# LINE 657 "src/GLua/AG/PrettyPrint.ag" #-}-                   _opIpretty <> _rightIpretty-                   {-# LINE 3221 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 658 "src/GLua/AG/PrettyPrint.ag" #-}-                   min _rightIprecedence OperatorLevel7-                   {-# LINE 3226 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _rightOparentOperatorPrecedence =-                  ({-# LINE 659 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel7-                   {-# LINE 3231 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   _rightIisAssociative-                   {-# LINE 3236 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 246 "src/GLua/AG/PrettyPrint.ag" #-}-                   _rightIisLiteral-                   {-# LINE 3241 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _opIisMultiline || _rightIisMultiline-                   {-# LINE 3246 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   _rightIwouldBeAmbiguousIfNextStatementIsExprVar-                   {-# LINE 3251 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   UnOpExpr _opIcopy _rightIcopy-                   {-# LINE 3256 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 3261 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _rightIcomments-                   {-# LINE 3266 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _opOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 3271 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _opOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3276 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _opOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3281 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _rightOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _opIcomments-                   {-# LINE 3286 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _rightOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3291 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _rightOparentOperatorAssociative =-                  ({-# LINE 243 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIparentOperatorAssociative-                   {-# LINE 3296 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _rightOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3301 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _opIcomments,_opIcopy,_opIisMultiline,_opIpretty) =-                  op_ _opOcomments _opOindent _opOppconf-              ( _rightIcomments,_rightIcopy,_rightIisAssociative,_rightIisLiteral,_rightIisMultiline,_rightIpos,_rightIprecedence,_rightIpretty,_rightIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  right_ _rightOcomments _rightOindent _rightOparentOperatorAssociative _rightOparentOperatorPrecedence _rightOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))--- ExprSuffixList ------------------------------------------------- cata-sem_ExprSuffixList :: ExprSuffixList ->-                      T_ExprSuffixList-sem_ExprSuffixList list =-    (Prelude.foldr sem_ExprSuffixList_Cons sem_ExprSuffixList_Nil (Prelude.map sem_PFExprSuffix list))--- semantic domain-type T_ExprSuffixList = ([MToken]) ->-                        Int ->-                        PrettyPrintConfig ->-                        ( ([MToken]),ExprSuffixList,Bool,Bool,OperatorLevel,Doc)-data Inh_ExprSuffixList = Inh_ExprSuffixList {comments_Inh_ExprSuffixList :: ([MToken]),indent_Inh_ExprSuffixList :: Int,ppconf_Inh_ExprSuffixList :: PrettyPrintConfig}-data Syn_ExprSuffixList = Syn_ExprSuffixList {comments_Syn_ExprSuffixList :: ([MToken]),copy_Syn_ExprSuffixList :: ExprSuffixList,isAssociative_Syn_ExprSuffixList :: Bool,isMultiline_Syn_ExprSuffixList :: Bool,precedence_Syn_ExprSuffixList :: OperatorLevel,pretty_Syn_ExprSuffixList :: Doc}-wrap_ExprSuffixList :: T_ExprSuffixList ->-                       Inh_ExprSuffixList ->-                       Syn_ExprSuffixList-wrap_ExprSuffixList sem (Inh_ExprSuffixList _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_ExprSuffixList _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisMultiline _lhsOprecedence _lhsOpretty))-sem_ExprSuffixList_Cons :: T_PFExprSuffix ->-                           T_ExprSuffixList ->-                           T_ExprSuffixList-sem_ExprSuffixList_Cons hd_ tl_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOcopy :: ExprSuffixList-              _lhsOcomments :: ([MToken])-              _hdOcomments :: ([MToken])-              _hdOindent :: Int-              _hdOppconf :: PrettyPrintConfig-              _tlOcomments :: ([MToken])-              _tlOindent :: Int-              _tlOppconf :: PrettyPrintConfig-              _hdIcomments :: ([MToken])-              _hdIcopy :: PFExprSuffix-              _hdIisAssociative :: Bool-              _hdIisMultiline :: Bool-              _hdIprecedence :: OperatorLevel-              _hdIpretty :: Doc-              _tlIcomments :: ([MToken])-              _tlIcopy :: ExprSuffixList-              _tlIisAssociative :: Bool-              _tlIisMultiline :: Bool-              _tlIprecedence :: OperatorLevel-              _tlIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 456 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIpretty <> _tlIpretty-                   {-# LINE 3361 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIisAssociative && _tlIisAssociative-                   {-# LINE 3366 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIisMultiline || _tlIisMultiline-                   {-# LINE 3371 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   (min _hdIprecedence _tlIprecedence)-                   {-# LINE 3376 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   (:) _hdIcopy _tlIcopy-                   {-# LINE 3381 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 3386 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _tlIcomments-                   {-# LINE 3391 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 3396 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3401 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3406 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIcomments-                   {-# LINE 3411 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3416 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3421 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _hdIcomments,_hdIcopy,_hdIisAssociative,_hdIisMultiline,_hdIprecedence,_hdIpretty) =-                  hd_ _hdOcomments _hdOindent _hdOppconf-              ( _tlIcomments,_tlIcopy,_tlIisAssociative,_tlIisMultiline,_tlIprecedence,_tlIpretty) =-                  tl_ _tlOcomments _tlOindent _tlOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_ExprSuffixList_Nil :: T_ExprSuffixList-sem_ExprSuffixList_Nil =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOcopy :: ExprSuffixList-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 457 "src/GLua/AG/PrettyPrint.ag" #-}-                   empty-                   {-# LINE 3442 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 3447 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 3452 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 3457 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   []-                   {-# LINE 3462 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 3467 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 3472 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))--- Field ---------------------------------------------------------- cata-sem_Field :: Field ->-             T_Field-sem_Field (ExprField _key _value _sep) =-    (sem_Field_ExprField (sem_MExpr _key) (sem_MExpr _value) (sem_FieldSep _sep))-sem_Field (NamedField _key _value _sep) =-    (sem_Field_NamedField _key (sem_MExpr _value) (sem_FieldSep _sep))-sem_Field (UnnamedField _value _sep) =-    (sem_Field_UnnamedField (sem_MExpr _value) (sem_FieldSep _sep))--- semantic domain-type T_Field = ([MToken]) ->-               Int ->-               PrettyPrintConfig ->-               ( Bool,([MToken]),Field,Bool,Bool,Region,Doc)-data Inh_Field = Inh_Field {comments_Inh_Field :: ([MToken]),indent_Inh_Field :: Int,ppconf_Inh_Field :: PrettyPrintConfig}-data Syn_Field = Syn_Field {canFitOnSameLine_Syn_Field :: Bool,comments_Syn_Field :: ([MToken]),copy_Syn_Field :: Field,isMultiline_Syn_Field :: Bool,isSemiColon_Syn_Field :: Bool,pos_Syn_Field :: Region,pretty_Syn_Field :: Doc}-wrap_Field :: T_Field ->-              Inh_Field ->-              Syn_Field-wrap_Field sem (Inh_Field _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpos,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_Field _lhsOcanFitOnSameLine _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOisSemiColon _lhsOpos _lhsOpretty))-sem_Field_ExprField :: T_MExpr ->-                       T_MExpr ->-                       T_FieldSep ->-                       T_Field-sem_Field_ExprField key_ value_ sep_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisMultiline :: Bool-              _lhsOcanFitOnSameLine :: Bool-              _keyOparentOperatorPrecedence :: OperatorLevel-              _keyOparentOperatorAssociative :: Bool-              _valueOparentOperatorPrecedence :: OperatorLevel-              _valueOparentOperatorAssociative :: Bool-              _lhsOisSemiColon :: Bool-              _lhsOcopy :: Field-              _lhsOcomments :: ([MToken])-              _lhsOpos :: Region-              _keyOcomments :: ([MToken])-              _keyOindent :: Int-              _keyOppconf :: PrettyPrintConfig-              _valueOcomments :: ([MToken])-              _valueOindent :: Int-              _valueOppconf :: PrettyPrintConfig-              _sepOindent :: Int-              _sepOppconf :: PrettyPrintConfig-              _keyIcomments :: ([MToken])-              _keyIcopy :: MExpr-              _keyIisAssociative :: Bool-              _keyIisLiteral :: Bool-              _keyIisMultiline :: Bool-              _keyIpos :: Region-              _keyIprecedence :: OperatorLevel-              _keyIpretty :: Doc-              _keyIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _valueIcomments :: ([MToken])-              _valueIcopy :: MExpr-              _valueIisAssociative :: Bool-              _valueIisLiteral :: Bool-              _valueIisMultiline :: Bool-              _valueIpos :: Region-              _valueIprecedence :: OperatorLevel-              _valueIpretty :: Doc-              _valueIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _sepIcanFitOnSameLine :: Bool-              _sepIcopy :: FieldSep-              _sepIisMultiline :: Bool-              _sepIisSemiColon :: Bool-              _sepIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 673 "src/GLua/AG/PrettyPrint.ag" #-}-                   brackets _lhsIppconf _keyIpretty <-> zchr '=' <-> _valueIpretty <> _sepIpretty-                   {-# LINE 3551 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 674 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 3556 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcanFitOnSameLine =-                  ({-# LINE 675 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 3561 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _keyOparentOperatorPrecedence =-                  ({-# LINE 676 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 3566 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _keyOparentOperatorAssociative =-                  ({-# LINE 677 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 3571 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOparentOperatorPrecedence =-                  ({-# LINE 678 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 3576 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOparentOperatorAssociative =-                  ({-# LINE 679 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 3581 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisSemiColon =-                  ({-# LINE 280 "src/GLua/AG/PrettyPrint.ag" #-}-                   _sepIisSemiColon-                   {-# LINE 3586 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ExprField _keyIcopy _valueIcopy _sepIcopy-                   {-# LINE 3591 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 3596 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valueIcomments-                   {-# LINE 3601 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpos =-                  ({-# LINE 271 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valueIpos-                   {-# LINE 3606 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _keyOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 3611 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _keyOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3616 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _keyOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3621 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _keyIcomments-                   {-# LINE 3626 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3631 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3636 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _sepOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3641 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _sepOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3646 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _keyIcomments,_keyIcopy,_keyIisAssociative,_keyIisLiteral,_keyIisMultiline,_keyIpos,_keyIprecedence,_keyIpretty,_keyIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  key_ _keyOcomments _keyOindent _keyOparentOperatorAssociative _keyOparentOperatorPrecedence _keyOppconf-              ( _valueIcomments,_valueIcopy,_valueIisAssociative,_valueIisLiteral,_valueIisMultiline,_valueIpos,_valueIprecedence,_valueIpretty,_valueIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  value_ _valueOcomments _valueOindent _valueOparentOperatorAssociative _valueOparentOperatorPrecedence _valueOppconf-              ( _sepIcanFitOnSameLine,_sepIcopy,_sepIisMultiline,_sepIisSemiColon,_sepIpretty) =-                  sep_ _sepOindent _sepOppconf-          in  ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpos,_lhsOpretty)))-sem_Field_NamedField :: MToken ->-                        T_MExpr ->-                        T_FieldSep ->-                        T_Field-sem_Field_NamedField key_ value_ sep_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisMultiline :: Bool-              _lhsOcanFitOnSameLine :: Bool-              _valueOparentOperatorPrecedence :: OperatorLevel-              _valueOparentOperatorAssociative :: Bool-              _lhsOisSemiColon :: Bool-              _lhsOcopy :: Field-              _lhsOcomments :: ([MToken])-              _lhsOpos :: Region-              _valueOcomments :: ([MToken])-              _valueOindent :: Int-              _valueOppconf :: PrettyPrintConfig-              _sepOindent :: Int-              _sepOppconf :: PrettyPrintConfig-              _valueIcomments :: ([MToken])-              _valueIcopy :: MExpr-              _valueIisAssociative :: Bool-              _valueIisLiteral :: Bool-              _valueIisMultiline :: Bool-              _valueIpos :: Region-              _valueIprecedence :: OperatorLevel-              _valueIpretty :: Doc-              _valueIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _sepIcanFitOnSameLine :: Bool-              _sepIcopy :: FieldSep-              _sepIisMultiline :: Bool-              _sepIisSemiColon :: Bool-              _sepIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 680 "src/GLua/AG/PrettyPrint.ag" #-}-                   tok key_ <-> zchr '=' <-> _valueIpretty <> _sepIpretty-                   {-# LINE 3694 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 681 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 3699 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcanFitOnSameLine =-                  ({-# LINE 682 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 3704 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOparentOperatorPrecedence =-                  ({-# LINE 683 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 3709 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOparentOperatorAssociative =-                  ({-# LINE 684 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 3714 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisSemiColon =-                  ({-# LINE 280 "src/GLua/AG/PrettyPrint.ag" #-}-                   _sepIisSemiColon-                   {-# LINE 3719 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   NamedField key_ _valueIcopy _sepIcopy-                   {-# LINE 3724 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 3729 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valueIcomments-                   {-# LINE 3734 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpos =-                  ({-# LINE 271 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valueIpos-                   {-# LINE 3739 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 3744 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3749 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3754 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _sepOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3759 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _sepOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3764 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _valueIcomments,_valueIcopy,_valueIisAssociative,_valueIisLiteral,_valueIisMultiline,_valueIpos,_valueIprecedence,_valueIpretty,_valueIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  value_ _valueOcomments _valueOindent _valueOparentOperatorAssociative _valueOparentOperatorPrecedence _valueOppconf-              ( _sepIcanFitOnSameLine,_sepIcopy,_sepIisMultiline,_sepIisSemiColon,_sepIpretty) =-                  sep_ _sepOindent _sepOppconf-          in  ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpos,_lhsOpretty)))-sem_Field_UnnamedField :: T_MExpr ->-                          T_FieldSep ->-                          T_Field-sem_Field_UnnamedField value_ sep_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOcanFitOnSameLine :: Bool-              _valueOparentOperatorPrecedence :: OperatorLevel-              _valueOparentOperatorAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOisSemiColon :: Bool-              _lhsOcopy :: Field-              _lhsOcomments :: ([MToken])-              _lhsOpos :: Region-              _valueOcomments :: ([MToken])-              _valueOindent :: Int-              _valueOppconf :: PrettyPrintConfig-              _sepOindent :: Int-              _sepOppconf :: PrettyPrintConfig-              _valueIcomments :: ([MToken])-              _valueIcopy :: MExpr-              _valueIisAssociative :: Bool-              _valueIisLiteral :: Bool-              _valueIisMultiline :: Bool-              _valueIpos :: Region-              _valueIprecedence :: OperatorLevel-              _valueIpretty :: Doc-              _valueIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _sepIcanFitOnSameLine :: Bool-              _sepIcopy :: FieldSep-              _sepIisMultiline :: Bool-              _sepIisSemiColon :: Bool-              _sepIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 685 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valueIpretty <> _sepIpretty-                   {-# LINE 3809 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcanFitOnSameLine =-                  ({-# LINE 686 "src/GLua/AG/PrettyPrint.ag" #-}-                   _sepIcanFitOnSameLine && not _valueIisMultiline-                   {-# LINE 3814 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOparentOperatorPrecedence =-                  ({-# LINE 687 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 3819 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOparentOperatorAssociative =-                  ({-# LINE 688 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 3824 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valueIisMultiline || _sepIisMultiline-                   {-# LINE 3829 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisSemiColon =-                  ({-# LINE 280 "src/GLua/AG/PrettyPrint.ag" #-}-                   _sepIisSemiColon-                   {-# LINE 3834 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   UnnamedField _valueIcopy _sepIcopy-                   {-# LINE 3839 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 3844 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valueIcomments-                   {-# LINE 3849 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpos =-                  ({-# LINE 271 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valueIpos-                   {-# LINE 3854 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 3859 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3864 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valueOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3869 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _sepOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 3874 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _sepOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 3879 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _valueIcomments,_valueIcopy,_valueIisAssociative,_valueIisLiteral,_valueIisMultiline,_valueIpos,_valueIprecedence,_valueIpretty,_valueIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  value_ _valueOcomments _valueOindent _valueOparentOperatorAssociative _valueOparentOperatorPrecedence _valueOppconf-              ( _sepIcanFitOnSameLine,_sepIcopy,_sepIisMultiline,_sepIisSemiColon,_sepIpretty) =-                  sep_ _sepOindent _sepOppconf-          in  ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpos,_lhsOpretty)))--- FieldList ------------------------------------------------------ cata-sem_FieldList :: FieldList ->-                 T_FieldList-sem_FieldList list =-    (Prelude.foldr sem_FieldList_Cons sem_FieldList_Nil (Prelude.map sem_Field list))--- semantic domain-type T_FieldList = ([MToken]) ->-                   Int ->-                   PrettyPrintConfig ->-                   ( Bool,([MToken]),FieldList,Bool,Bool,Doc)-data Inh_FieldList = Inh_FieldList {comments_Inh_FieldList :: ([MToken]),indent_Inh_FieldList :: Int,ppconf_Inh_FieldList :: PrettyPrintConfig}-data Syn_FieldList = Syn_FieldList {canFitOnSameLine_Syn_FieldList :: Bool,comments_Syn_FieldList :: ([MToken]),copy_Syn_FieldList :: FieldList,isMultiline_Syn_FieldList :: Bool,isNil_Syn_FieldList :: Bool,pretty_Syn_FieldList :: Doc}-wrap_FieldList :: T_FieldList ->-                  Inh_FieldList ->-                  Syn_FieldList-wrap_FieldList sem (Inh_FieldList _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisNil,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_FieldList _lhsOcanFitOnSameLine _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOisNil _lhsOpretty))-sem_FieldList_Cons :: T_Field ->-                      T_FieldList ->-                      T_FieldList-sem_FieldList_Cons hd_ tl_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOcanFitOnSameLine :: Bool-              _lhsOisNil :: Bool-              _hdOcomments :: ([MToken])-              _lhsOisMultiline :: Bool-              _lhsOcopy :: FieldList-              _lhsOcomments :: ([MToken])-              _hdOindent :: Int-              _hdOppconf :: PrettyPrintConfig-              _tlOcomments :: ([MToken])-              _tlOindent :: Int-              _tlOppconf :: PrettyPrintConfig-              _hdIcanFitOnSameLine :: Bool-              _hdIcomments :: ([MToken])-              _hdIcopy :: Field-              _hdIisMultiline :: Bool-              _hdIisSemiColon :: Bool-              _hdIpos :: Region-              _hdIpretty :: Doc-              _tlIcanFitOnSameLine :: Bool-              _tlIcomments :: ([MToken])-              _tlIcopy :: FieldList-              _tlIisMultiline :: Bool-              _tlIisNil :: Bool-              _tlIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 363 "src/GLua/AG/PrettyPrint.ag" #-}-                   _prettyCommentsBefore     $+$ _indentAfterComment     (_hdIpretty <-> _prettyCommentsAfter    ) `_sep    ` _ind     _tlIpretty-                   {-# LINE 3940 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcanFitOnSameLine =-                  ({-# LINE 364 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIcanFitOnSameLine-                   {-# LINE 3945 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisNil =-                  ({-# LINE 365 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 3950 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOcomments =-                  ({-# LINE 367 "src/GLua/AG/PrettyPrint.ag" #-}-                   snd _commentsAfter-                   {-# LINE 3955 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _sep =-                  ({-# LINE 369 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _onSameLine     then _optionalSpaceAfterSep     else ($+$)-                   {-# LINE 3960 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _ind =-                  ({-# LINE 370 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _onSameLine     then id else indent _lhsIppconf _lhsIindent-                   {-# LINE 3965 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _onSameLine =-                  ({-# LINE 371 "src/GLua/AG/PrettyPrint.ag" #-}-                   (_hdIcanFitOnSameLine || _tlIisNil) && null (fst _commentsAfter    )-                   {-# LINE 3970 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _optionalSpaceAfterSep =-                  ({-# LINE 373 "src/GLua/AG/PrettyPrint.ag" #-}-                   if spaceAfterComma _lhsIppconf then (<->) else (<>)-                   {-# LINE 3975 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _indentAfterComment =-                  ({-# LINE 374 "src/GLua/AG/PrettyPrint.ag" #-}-                   if null $ fst _commentsBefore     then id else indent _lhsIppconf _lhsIindent-                   {-# LINE 3980 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _isMultiline =-                  ({-# LINE 376 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIisMultiline || _tlIisMultiline-                   {-# LINE 3985 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettyCommentsBefore =-                  ({-# LINE 378 "src/GLua/AG/PrettyPrint.ag" #-}-                   renderSLComments _lhsIppconf _lhsIindent (fst _commentsBefore    )-                   {-# LINE 3990 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettyCommentsAfter =-                  ({-# LINE 379 "src/GLua/AG/PrettyPrint.ag" #-}-                   renderSLComments _lhsIppconf _lhsIindent (fst _commentsAfter    )-                   {-# LINE 3995 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _commentsBefore =-                  ({-# LINE 380 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _isMultiline     then-                       span (\(MToken pos _) -> pos `before` _hdIpos) _lhsIcomments-                   else-                       ([], _lhsIcomments)-                   {-# LINE 4003 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _commentsAfter =-                  ({-# LINE 386 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _isMultiline     then-                       span (\(MToken pos _) -> pos `beforeOrOnLine` _hdIpos) (snd _commentsBefore    )-                   else-                       _commentsBefore-                   {-# LINE 4011 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _isMultiline-                   {-# LINE 4016 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   (:) _hdIcopy _tlIcopy-                   {-# LINE 4021 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4026 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _tlIcomments-                   {-# LINE 4031 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 4036 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 4041 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIcomments-                   {-# LINE 4046 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 4051 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 4056 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _hdIcanFitOnSameLine,_hdIcomments,_hdIcopy,_hdIisMultiline,_hdIisSemiColon,_hdIpos,_hdIpretty) =-                  hd_ _hdOcomments _hdOindent _hdOppconf-              ( _tlIcanFitOnSameLine,_tlIcomments,_tlIcopy,_tlIisMultiline,_tlIisNil,_tlIpretty) =-                  tl_ _tlOcomments _tlOindent _tlOppconf-          in  ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisNil,_lhsOpretty)))-sem_FieldList_Nil :: T_FieldList-sem_FieldList_Nil =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisNil :: Bool-              _lhsOcanFitOnSameLine :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: FieldList-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 391 "src/GLua/AG/PrettyPrint.ag" #-}-                   empty-                   {-# LINE 4077 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisNil =-                  ({-# LINE 392 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 4082 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcanFitOnSameLine =-                  ({-# LINE 393 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 4087 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 4092 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   []-                   {-# LINE 4097 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4102 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 4107 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisNil,_lhsOpretty)))--- FieldSep ------------------------------------------------------- cata-sem_FieldSep :: FieldSep ->-                T_FieldSep-sem_FieldSep (CommaSep) =-    (sem_FieldSep_CommaSep)-sem_FieldSep (SemicolonSep) =-    (sem_FieldSep_SemicolonSep)-sem_FieldSep (NoSep) =-    (sem_FieldSep_NoSep)--- semantic domain-type T_FieldSep = Int ->-                  PrettyPrintConfig ->-                  ( Bool,FieldSep,Bool,Bool,Doc)-data Inh_FieldSep = Inh_FieldSep {indent_Inh_FieldSep :: Int,ppconf_Inh_FieldSep :: PrettyPrintConfig}-data Syn_FieldSep = Syn_FieldSep {canFitOnSameLine_Syn_FieldSep :: Bool,copy_Syn_FieldSep :: FieldSep,isMultiline_Syn_FieldSep :: Bool,isSemiColon_Syn_FieldSep :: Bool,pretty_Syn_FieldSep :: Doc}-wrap_FieldSep :: T_FieldSep ->-                 Inh_FieldSep ->-                 Syn_FieldSep-wrap_FieldSep sem (Inh_FieldSep _lhsIindent _lhsIppconf) =-    (let ( _lhsOcanFitOnSameLine,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpretty) = sem _lhsIindent _lhsIppconf-     in  (Syn_FieldSep _lhsOcanFitOnSameLine _lhsOcopy _lhsOisMultiline _lhsOisSemiColon _lhsOpretty))-sem_FieldSep_CommaSep :: T_FieldSep-sem_FieldSep_CommaSep =-    (\ _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOcanFitOnSameLine :: Bool-              _lhsOisMultiline :: Bool-              _lhsOisSemiColon :: Bool-              _lhsOcopy :: FieldSep-              _lhsOpretty =-                  ({-# LINE 691 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ','-                   {-# LINE 4144 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcanFitOnSameLine =-                  ({-# LINE 692 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 4149 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 4154 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisSemiColon =-                  ({-# LINE 280 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 4159 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   CommaSep-                   {-# LINE 4164 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4169 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcanFitOnSameLine,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpretty)))-sem_FieldSep_SemicolonSep :: T_FieldSep-sem_FieldSep_SemicolonSep =-    (\ _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisSemiColon :: Bool-              _lhsOcanFitOnSameLine :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: FieldSep-              _lhsOpretty =-                  ({-# LINE 693 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ';'-                   {-# LINE 4184 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisSemiColon =-                  ({-# LINE 694 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 4189 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcanFitOnSameLine =-                  ({-# LINE 697 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 4194 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 698 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 4199 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   SemicolonSep-                   {-# LINE 4204 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4209 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcanFitOnSameLine,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpretty)))-sem_FieldSep_NoSep :: T_FieldSep-sem_FieldSep_NoSep =-    (\ _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOcanFitOnSameLine :: Bool-              _lhsOisMultiline :: Bool-              _lhsOisSemiColon :: Bool-              _lhsOcopy :: FieldSep-              _lhsOpretty =-                  ({-# LINE 699 "src/GLua/AG/PrettyPrint.ag" #-}-                   empty-                   {-# LINE 4224 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcanFitOnSameLine =-                  ({-# LINE 700 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 4229 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 4234 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisSemiColon =-                  ({-# LINE 280 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 4239 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   NoSep-                   {-# LINE 4244 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4249 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcanFitOnSameLine,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpretty)))--- FuncName ------------------------------------------------------- cata-sem_FuncName :: FuncName ->-                T_FuncName-sem_FuncName (FuncName _names _meta) =-    (sem_FuncName_FuncName _names _meta)--- semantic domain-type T_FuncName = ([MToken]) ->-                  Int ->-                  PrettyPrintConfig ->-                  ( ([MToken]),FuncName,Bool,Doc)-data Inh_FuncName = Inh_FuncName {comments_Inh_FuncName :: ([MToken]),indent_Inh_FuncName :: Int,ppconf_Inh_FuncName :: PrettyPrintConfig}-data Syn_FuncName = Syn_FuncName {comments_Syn_FuncName :: ([MToken]),copy_Syn_FuncName :: FuncName,isMultiline_Syn_FuncName :: Bool,pretty_Syn_FuncName :: Doc}-wrap_FuncName :: T_FuncName ->-                 Inh_FuncName ->-                 Syn_FuncName-wrap_FuncName sem (Inh_FuncName _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_FuncName _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOpretty))-sem_FuncName_FuncName :: ([MToken]) ->-                         (Maybe MToken) ->-                         T_FuncName-sem_FuncName_FuncName names_ meta_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisMultiline :: Bool-              _lhsOcopy :: FuncName-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 567 "src/GLua/AG/PrettyPrint.ag" #-}-                   printList tok "." names_ <> metaDoc meta_-                   {-# LINE 4285 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 4290 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   FuncName names_ meta_-                   {-# LINE 4295 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4300 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 4305 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))--- MElse ---------------------------------------------------------- cata-sem_MElse :: MElse ->-             T_MElse-sem_MElse (MElse _pos _body) =-    (sem_MElse_MElse _pos (sem_Block _body))--- semantic domain-type T_MElse = ([MToken]) ->-               Int ->-               PrettyPrintConfig ->-               Region ->-               ( ([MToken]),MElse,Bool,Bool,Region,Doc)-data Inh_MElse = Inh_MElse {comments_Inh_MElse :: ([MToken]),indent_Inh_MElse :: Int,ppconf_Inh_MElse :: PrettyPrintConfig,statRegion_Inh_MElse :: Region}-data Syn_MElse = Syn_MElse {comments_Syn_MElse :: ([MToken]),copy_Syn_MElse :: MElse,elsesExist_Syn_MElse :: Bool,isMultiline_Syn_MElse :: Bool,pos_Syn_MElse :: Region,pretty_Syn_MElse :: Doc}-wrap_MElse :: T_MElse ->-              Inh_MElse ->-              Syn_MElse-wrap_MElse sem (Inh_MElse _lhsIcomments _lhsIindent _lhsIppconf _lhsIstatRegion) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf _lhsIstatRegion-     in  (Syn_MElse _lhsOcomments _lhsOcopy _lhsOelsesExist _lhsOisMultiline _lhsOpos _lhsOpretty))-sem_MElse_MElse :: Region ->-                   T_Block ->-                   T_MElse-sem_MElse_MElse pos_ body_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _bodyOindent :: Int-              _lhsOpos :: Region-              _bodyOcomments :: ([MToken])-              _lhsOelsesExist :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: MElse-              _lhsOcomments :: ([MToken])-              _bodyOppconf :: PrettyPrintConfig-              _bodyOstatRegion :: Region-              _bodyIcomments :: ([MToken])-              _bodyIcopy :: Block-              _bodyIhasBreaking :: Bool-              _bodyIisMultiline :: Bool-              _bodyIpretty :: Doc-              _bodyIstatementCount :: Int-              _lhsOpretty =-                  ({-# LINE 448 "src/GLua/AG/PrettyPrint.ag" #-}-                   indent _lhsIppconf _lhsIindent (zeroWidthText "else") <-> _prettyCommentsAfter     $+$ _bodyIpretty-                   {-# LINE 4355 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOindent =-                  ({-# LINE 449 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent + 1-                   {-# LINE 4360 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettyCommentsAfter =-                  ({-# LINE 450 "src/GLua/AG/PrettyPrint.ag" #-}-                   renderSLComments _lhsIppconf _lhsIindent (fst _commentsAfter    )-                   {-# LINE 4365 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _commentsAfter =-                  ({-# LINE 451 "src/GLua/AG/PrettyPrint.ag" #-}-                   span (\(MToken pos _) -> pos `beforeOrOnLine` pos_) _lhsIcomments-                   {-# LINE 4370 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpos =-                  ({-# LINE 452 "src/GLua/AG/PrettyPrint.ag" #-}-                   pos_-                   {-# LINE 4375 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOcomments =-                  ({-# LINE 453 "src/GLua/AG/PrettyPrint.ag" #-}-                   snd _commentsAfter-                   {-# LINE 4380 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOelsesExist =-                  ({-# LINE 293 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 4385 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIisMultiline-                   {-# LINE 4390 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   MElse pos_ _bodyIcopy-                   {-# LINE 4395 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4400 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIcomments-                   {-# LINE 4405 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 4410 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 4415 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =-                  body_ _bodyOcomments _bodyOindent _bodyOppconf _bodyOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))--- MElseIf -------------------------------------------------------- cata-sem_MElseIf :: MElseIf ->-               T_MElseIf-sem_MElseIf (MElseIf _pos _elif) =-    (sem_MElseIf_MElseIf _pos (sem_ElseIf _elif))--- semantic domain-type T_MElseIf = ([MToken]) ->-                 Int ->-                 PrettyPrintConfig ->-                 ( ([MToken]),MElseIf,Bool,Region,Doc)-data Inh_MElseIf = Inh_MElseIf {comments_Inh_MElseIf :: ([MToken]),indent_Inh_MElseIf :: Int,ppconf_Inh_MElseIf :: PrettyPrintConfig}-data Syn_MElseIf = Syn_MElseIf {comments_Syn_MElseIf :: ([MToken]),copy_Syn_MElseIf :: MElseIf,isMultiline_Syn_MElseIf :: Bool,pos_Syn_MElseIf :: Region,pretty_Syn_MElseIf :: Doc}-wrap_MElseIf :: T_MElseIf ->-                Inh_MElseIf ->-                Syn_MElseIf-wrap_MElseIf sem (Inh_MElseIf _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpos,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_MElseIf _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOpos _lhsOpretty))-sem_MElseIf_MElseIf :: Region ->-                       T_ElseIf ->-                       T_MElseIf-sem_MElseIf_MElseIf pos_ elif_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpos :: Region-              _lhsOisMultiline :: Bool-              _lhsOcopy :: MElseIf-              _lhsOcomments :: ([MToken])-              _lhsOpretty :: Doc-              _elifOcomments :: ([MToken])-              _elifOindent :: Int-              _elifOppconf :: PrettyPrintConfig-              _elifIcomments :: ([MToken])-              _elifIcopy :: ElseIf-              _elifIisMultiline :: Bool-              _elifIpretty :: Doc-              _lhsOpos =-                  ({-# LINE 433 "src/GLua/AG/PrettyPrint.ag" #-}-                   pos_-                   {-# LINE 4461 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _elifIisMultiline-                   {-# LINE 4466 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   MElseIf pos_ _elifIcopy-                   {-# LINE 4471 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4476 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _elifIcomments-                   {-# LINE 4481 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 232 "src/GLua/AG/PrettyPrint.ag" #-}-                   _elifIpretty-                   {-# LINE 4486 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _elifOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 4491 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _elifOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 4496 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _elifOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 4501 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _elifIcomments,_elifIcopy,_elifIisMultiline,_elifIpretty) =-                  elif_ _elifOcomments _elifOindent _elifOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))--- MExpr ---------------------------------------------------------- cata-sem_MExpr :: MExpr ->-             T_MExpr-sem_MExpr (MExpr _pos _expr) =-    (sem_MExpr_MExpr _pos (sem_Expr _expr))--- semantic domain-type T_MExpr = ([MToken]) ->-               Int ->-               Bool ->-               OperatorLevel ->-               PrettyPrintConfig ->-               ( ([MToken]),MExpr,Bool,Bool,Bool,Region,OperatorLevel,Doc,Bool)-data Inh_MExpr = Inh_MExpr {comments_Inh_MExpr :: ([MToken]),indent_Inh_MExpr :: Int,parentOperatorAssociative_Inh_MExpr :: Bool,parentOperatorPrecedence_Inh_MExpr :: OperatorLevel,ppconf_Inh_MExpr :: PrettyPrintConfig}-data Syn_MExpr = Syn_MExpr {comments_Syn_MExpr :: ([MToken]),copy_Syn_MExpr :: MExpr,isAssociative_Syn_MExpr :: Bool,isLiteral_Syn_MExpr :: Bool,isMultiline_Syn_MExpr :: Bool,pos_Syn_MExpr :: Region,precedence_Syn_MExpr :: OperatorLevel,pretty_Syn_MExpr :: Doc,wouldBeAmbiguousIfNextStatementIsExprVar_Syn_MExpr :: Bool}-wrap_MExpr :: T_MExpr ->-              Inh_MExpr ->-              Syn_MExpr-wrap_MExpr sem (Inh_MExpr _lhsIcomments _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOpos,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar) = sem _lhsIcomments _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf-     in  (Syn_MExpr _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisLiteral _lhsOisMultiline _lhsOpos _lhsOprecedence _lhsOpretty _lhsOwouldBeAmbiguousIfNextStatementIsExprVar))-sem_MExpr_MExpr :: Region ->-                   T_Expr ->-                   T_MExpr-sem_MExpr_MExpr pos_ expr_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf ->-         (let _lhsOpos :: Region-              _exprOstatRegion :: Region-              _lhsOisAssociative :: Bool-              _lhsOisLiteral :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: MExpr-              _lhsOcomments :: ([MToken])-              _lhsOpretty :: Doc-              _exprOcomments :: ([MToken])-              _exprOindent :: Int-              _exprOparentOperatorAssociative :: Bool-              _exprOparentOperatorPrecedence :: OperatorLevel-              _exprOppconf :: PrettyPrintConfig-              _exprIcomments :: ([MToken])-              _exprIcopy :: Expr-              _exprIisAssociative :: Bool-              _exprIisLiteral :: Bool-              _exprIisMultiline :: Bool-              _exprIprecedence :: OperatorLevel-              _exprIpretty :: Doc-              _exprIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOpos =-                  ({-# LINE 616 "src/GLua/AG/PrettyPrint.ag" #-}-                   pos_-                   {-# LINE 4562 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprOstatRegion =-                  ({-# LINE 617 "src/GLua/AG/PrettyPrint.ag" #-}-                   pos_-                   {-# LINE 4567 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   _exprIisAssociative-                   {-# LINE 4572 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 246 "src/GLua/AG/PrettyPrint.ag" #-}-                   _exprIisLiteral-                   {-# LINE 4577 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _exprIisMultiline-                   {-# LINE 4582 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   _exprIprecedence-                   {-# LINE 4587 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   _exprIwouldBeAmbiguousIfNextStatementIsExprVar-                   {-# LINE 4592 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   MExpr pos_ _exprIcopy-                   {-# LINE 4597 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4602 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _exprIcomments-                   {-# LINE 4607 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 232 "src/GLua/AG/PrettyPrint.ag" #-}-                   _exprIpretty-                   {-# LINE 4612 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 4617 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 4622 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprOparentOperatorAssociative =-                  ({-# LINE 243 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIparentOperatorAssociative-                   {-# LINE 4627 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprOparentOperatorPrecedence =-                  ({-# LINE 242 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIparentOperatorPrecedence-                   {-# LINE 4632 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 4637 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _exprIcomments,_exprIcopy,_exprIisAssociative,_exprIisLiteral,_exprIisMultiline,_exprIprecedence,_exprIpretty,_exprIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  expr_ _exprOcomments _exprOindent _exprOparentOperatorAssociative _exprOparentOperatorPrecedence _exprOppconf _exprOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOpos,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))--- MExprList ------------------------------------------------------ cata-sem_MExprList :: MExprList ->-                 T_MExprList-sem_MExprList list =-    (Prelude.foldr sem_MExprList_Cons sem_MExprList_Nil (Prelude.map sem_MExpr list))--- semantic domain-type T_MExprList = ([MToken]) ->-                   Int ->-                   Bool ->-                   PrettyPrintConfig ->-                   ( ([MToken]),MExprList,Bool,Bool,Region,OperatorLevel,Doc)-data Inh_MExprList = Inh_MExprList {comments_Inh_MExprList :: ([MToken]),indent_Inh_MExprList :: Int,isHead_Inh_MExprList :: Bool,ppconf_Inh_MExprList :: PrettyPrintConfig}-data Syn_MExprList = Syn_MExprList {comments_Syn_MExprList :: ([MToken]),copy_Syn_MExprList :: MExprList,isAssociative_Syn_MExprList :: Bool,isMultiline_Syn_MExprList :: Bool,pos_Syn_MExprList :: Region,precedence_Syn_MExprList :: OperatorLevel,pretty_Syn_MExprList :: Doc}-wrap_MExprList :: T_MExprList ->-                  Inh_MExprList ->-                  Syn_MExprList-wrap_MExprList sem (Inh_MExprList _lhsIcomments _lhsIindent _lhsIisHead _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOpos,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIisHead _lhsIppconf-     in  (Syn_MExprList _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisMultiline _lhsOpos _lhsOprecedence _lhsOpretty))-sem_MExprList_Cons :: T_MExpr ->-                      T_MExprList ->-                      T_MExprList-sem_MExprList_Cons hd_ tl_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisHead-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _tlOisHead :: Bool-              _lhsOpos :: Region-              _hdOparentOperatorPrecedence :: OperatorLevel-              _hdOparentOperatorAssociative :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOcopy :: MExprList-              _lhsOcomments :: ([MToken])-              _hdOcomments :: ([MToken])-              _hdOindent :: Int-              _hdOppconf :: PrettyPrintConfig-              _tlOcomments :: ([MToken])-              _tlOindent :: Int-              _tlOppconf :: PrettyPrintConfig-              _hdIcomments :: ([MToken])-              _hdIcopy :: MExpr-              _hdIisAssociative :: Bool-              _hdIisLiteral :: Bool-              _hdIisMultiline :: Bool-              _hdIpos :: Region-              _hdIprecedence :: OperatorLevel-              _hdIpretty :: Doc-              _hdIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _tlIcomments :: ([MToken])-              _tlIcopy :: MExprList-              _tlIisAssociative :: Bool-              _tlIisMultiline :: Bool-              _tlIpos :: Region-              _tlIprecedence :: OperatorLevel-              _tlIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 353 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if _lhsIisHead then empty else _comma    ) <> _hdIpretty <> _tlIpretty-                   {-# LINE 4705 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _comma =-                  ({-# LINE 354 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)-                   {-# LINE 4710 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOisHead =-                  ({-# LINE 355 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 4715 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpos =-                  ({-# LINE 356 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIpos-                   {-# LINE 4720 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOparentOperatorPrecedence =-                  ({-# LINE 357 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 4725 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOparentOperatorAssociative =-                  ({-# LINE 358 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 4730 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIisAssociative && _tlIisAssociative-                   {-# LINE 4735 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIisMultiline || _tlIisMultiline-                   {-# LINE 4740 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   (min _hdIprecedence _tlIprecedence)-                   {-# LINE 4745 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   (:) _hdIcopy _tlIcopy-                   {-# LINE 4750 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4755 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _tlIcomments-                   {-# LINE 4760 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 4765 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 4770 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 4775 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIcomments-                   {-# LINE 4780 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 4785 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 4790 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _hdIcomments,_hdIcopy,_hdIisAssociative,_hdIisLiteral,_hdIisMultiline,_hdIpos,_hdIprecedence,_hdIpretty,_hdIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  hd_ _hdOcomments _hdOindent _hdOparentOperatorAssociative _hdOparentOperatorPrecedence _hdOppconf-              ( _tlIcomments,_tlIcopy,_tlIisAssociative,_tlIisMultiline,_tlIpos,_tlIprecedence,_tlIpretty) =-                  tl_ _tlOcomments _tlOindent _tlOisHead _tlOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOpos,_lhsOprecedence,_lhsOpretty)))-sem_MExprList_Nil :: T_MExprList-sem_MExprList_Nil =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisHead-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOpos :: Region-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOcopy :: MExprList-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 359 "src/GLua/AG/PrettyPrint.ag" #-}-                   empty-                   {-# LINE 4813 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpos =-                  ({-# LINE 360 "src/GLua/AG/PrettyPrint.ag" #-}-                   emptyRg-                   {-# LINE 4818 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 4823 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 4828 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 4833 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   []-                   {-# LINE 4838 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4843 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 4848 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOpos,_lhsOprecedence,_lhsOpretty)))--- MStat ---------------------------------------------------------- cata-sem_MStat :: MStat ->-             T_MStat-sem_MStat (MStat _pos _stat) =-    (sem_MStat_MStat _pos (sem_Stat _stat))--- semantic domain-type T_MStat = ([MToken]) ->-               Int ->-               Bool ->-               Bool ->-               PrettyPrintConfig ->-               ( ([MToken]),MStat,Bool,Bool,Region,Bool,Doc,Int)-data Inh_MStat = Inh_MStat {comments_Inh_MStat :: ([MToken]),indent_Inh_MStat :: Int,isLastStatement_Inh_MStat :: Bool,potentiallyAmbiguousAsStatement_Inh_MStat :: Bool,ppconf_Inh_MStat :: PrettyPrintConfig}-data Syn_MStat = Syn_MStat {comments_Syn_MStat :: ([MToken]),copy_Syn_MStat :: MStat,hasBreaking_Syn_MStat :: Bool,isMultiline_Syn_MStat :: Bool,pos_Syn_MStat :: Region,potentiallyAmbiguousAsStatement_Syn_MStat :: Bool,pretty_Syn_MStat :: Doc,statementCount_Syn_MStat :: Int}-wrap_MStat :: T_MStat ->-              Inh_MStat ->-              Syn_MStat-wrap_MStat sem (Inh_MStat _lhsIcomments _lhsIindent _lhsIisLastStatement _lhsIpotentiallyAmbiguousAsStatement _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpos,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty,_lhsOstatementCount) = sem _lhsIcomments _lhsIindent _lhsIisLastStatement _lhsIpotentiallyAmbiguousAsStatement _lhsIppconf-     in  (Syn_MStat _lhsOcomments _lhsOcopy _lhsOhasBreaking _lhsOisMultiline _lhsOpos _lhsOpotentiallyAmbiguousAsStatement _lhsOpretty _lhsOstatementCount))-sem_MStat_MStat :: Region ->-                   T_Stat ->-                   T_MStat-sem_MStat_MStat pos_ stat_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf ->-         (let _lhsOpos :: Region-              _statOstatRegion :: Region-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOstatementCount :: Int-              _lhsOcopy :: MStat-              _lhsOcomments :: ([MToken])-              _lhsOpretty :: Doc-              _statOcomments :: ([MToken])-              _statOindent :: Int-              _statOisLastStatement :: Bool-              _statOpotentiallyAmbiguousAsStatement :: Bool-              _statOppconf :: PrettyPrintConfig-              _statIcomments :: ([MToken])-              _statIcopy :: Stat-              _statIhasBreaking :: Bool-              _statIisMultiline :: Bool-              _statIpotentiallyAmbiguousAsStatement :: Bool-              _statIpretty :: Doc-              _lhsOpos =-                  ({-# LINE 349 "src/GLua/AG/PrettyPrint.ag" #-}-                   pos_-                   {-# LINE 4904 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _statOstatRegion =-                  ({-# LINE 350 "src/GLua/AG/PrettyPrint.ag" #-}-                   pos_-                   {-# LINE 4909 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}-                   _statIhasBreaking-                   {-# LINE 4914 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _statIisMultiline-                   {-# LINE 4919 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   _statIpotentiallyAmbiguousAsStatement-                   {-# LINE 4924 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOstatementCount =-                  ({-# LINE 287 "src/GLua/AG/PrettyPrint.ag" #-}-                   1-                   {-# LINE 4929 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   MStat pos_ _statIcopy-                   {-# LINE 4934 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 4939 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _statIcomments-                   {-# LINE 4944 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 232 "src/GLua/AG/PrettyPrint.ag" #-}-                   _statIpretty-                   {-# LINE 4949 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _statOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 4954 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _statOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 4959 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _statOisLastStatement =-                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIisLastStatement-                   {-# LINE 4964 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _statOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 304 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIpotentiallyAmbiguousAsStatement-                   {-# LINE 4969 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _statOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 4974 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _statIcomments,_statIcopy,_statIhasBreaking,_statIisMultiline,_statIpotentiallyAmbiguousAsStatement,_statIpretty) =-                  stat_ _statOcomments _statOindent _statOisLastStatement _statOpotentiallyAmbiguousAsStatement _statOppconf _statOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpos,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty,_lhsOstatementCount)))--- MStatList ------------------------------------------------------ cata-sem_MStatList :: MStatList ->-                 T_MStatList-sem_MStatList list =-    (Prelude.foldr sem_MStatList_Cons sem_MStatList_Nil (Prelude.map sem_MStat list))--- semantic domain-type T_MStatList = ([MToken]) ->-                   Int ->-                   Bool ->-                   PrettyPrintConfig ->-                   Region ->-                   ( ([MToken]),MStatList,Bool,Bool,Bool,Bool,Doc,Int)-data Inh_MStatList = Inh_MStatList {comments_Inh_MStatList :: ([MToken]),indent_Inh_MStatList :: Int,isHead_Inh_MStatList :: Bool,ppconf_Inh_MStatList :: PrettyPrintConfig,statRegion_Inh_MStatList :: Region}-data Syn_MStatList = Syn_MStatList {comments_Syn_MStatList :: ([MToken]),copy_Syn_MStatList :: MStatList,hasBreaking_Syn_MStatList :: Bool,isLast_Syn_MStatList :: Bool,isMultiline_Syn_MStatList :: Bool,potentiallyAmbiguousAsStatement_Syn_MStatList :: Bool,pretty_Syn_MStatList :: Doc,statementCount_Syn_MStatList :: Int}-wrap_MStatList :: T_MStatList ->-                  Inh_MStatList ->-                  Syn_MStatList-wrap_MStatList sem (Inh_MStatList _lhsIcomments _lhsIindent _lhsIisHead _lhsIppconf _lhsIstatRegion) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisLast,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty,_lhsOstatementCount) = sem _lhsIcomments _lhsIindent _lhsIisHead _lhsIppconf _lhsIstatRegion-     in  (Syn_MStatList _lhsOcomments _lhsOcopy _lhsOhasBreaking _lhsOisLast _lhsOisMultiline _lhsOpotentiallyAmbiguousAsStatement _lhsOpretty _lhsOstatementCount))-sem_MStatList_Cons :: T_MStat ->-                      T_MStatList ->-                      T_MStatList-sem_MStatList_Cons hd_ tl_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisHead-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOisMultiline :: Bool-              _lhsOpretty :: Doc-              _hdOcomments :: ([MToken])-              _tlOcomments :: ([MToken])-              _tlOisHead :: Bool-              _hdOisLastStatement :: Bool-              _hdOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOisLast :: Bool-              _lhsOhasBreaking :: Bool-              _lhsOstatementCount :: Int-              _lhsOcopy :: MStatList-              _lhsOcomments :: ([MToken])-              _hdOindent :: Int-              _hdOppconf :: PrettyPrintConfig-              _tlOindent :: Int-              _tlOppconf :: PrettyPrintConfig-              _tlOstatRegion :: Region-              _hdIcomments :: ([MToken])-              _hdIcopy :: MStat-              _hdIhasBreaking :: Bool-              _hdIisMultiline :: Bool-              _hdIpos :: Region-              _hdIpotentiallyAmbiguousAsStatement :: Bool-              _hdIpretty :: Doc-              _hdIstatementCount :: Int-              _tlIcomments :: ([MToken])-              _tlIcopy :: MStatList-              _tlIhasBreaking :: Bool-              _tlIisLast :: Bool-              _tlIisMultiline :: Bool-              _tlIpotentiallyAmbiguousAsStatement :: Bool-              _tlIpretty :: Doc-              _tlIstatementCount :: Int-              _lhsOisMultiline =-                  ({-# LINE 314 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIisMultiline-                   {-# LINE 5046 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _addNewline =-                  ({-# LINE 315 "src/GLua/AG/PrettyPrint.ag" #-}-                   if not _tlIisLast && (_hdIisMultiline || _tlIisMultiline) then zchr '\n' else empty-                   {-# LINE 5051 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 316 "src/GLua/AG/PrettyPrint.ag" #-}-                   _prettyCommentsBefore-                   $+$ indent _lhsIppconf _lhsIindent _hdIpretty-                   <-> _prettyCommentsAfter     <> _addNewline-                   $+$ _tlIpretty-                   {-# LINE 5059 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettyCommentsBefore =-                  ({-# LINE 322 "src/GLua/AG/PrettyPrint.ag" #-}-                   renderMLComments _lhsIppconf _lhsIindent (fst _commentsBefore    )-                   {-# LINE 5064 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _prettyCommentsAfter =-                  ({-# LINE 323 "src/GLua/AG/PrettyPrint.ag" #-}-                   renderSLComments _lhsIppconf _lhsIindent (fst _commentsAfter    )-                   {-# LINE 5069 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _commentsBefore =-                  ({-# LINE 324 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _hdIisMultiline-                   then span (\(MToken pos' _) -> pos' `beforeOrOnLine` _hdIpos) _lhsIcomments-                   else span (\(MToken pos' _) -> pos' `before`         _hdIpos) _lhsIcomments-                   {-# LINE 5076 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _commentsAfter =-                  ({-# LINE 328 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _hdIisMultiline-                   then span (\(MToken pos' _) -> pos' `beforeOrOnLine` _hdIpos) (snd _commentsBefore    )-                   else span (\(MToken pos' _) -> pos' `beforeEndLine`  _hdIpos) (snd _commentsBefore    )-                   {-# LINE 5083 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOcomments =-                  ({-# LINE 332 "src/GLua/AG/PrettyPrint.ag" #-}-                   snd _commentsAfter-                   {-# LINE 5088 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOcomments =-                  ({-# LINE 333 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIcomments-                   {-# LINE 5093 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOisHead =-                  ({-# LINE 335 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5098 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOisLastStatement =-                  ({-# LINE 336 "src/GLua/AG/PrettyPrint.ag" #-}-                   _tlIisLast-                   {-# LINE 5103 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 337 "src/GLua/AG/PrettyPrint.ag" #-}-                   _tlIpotentiallyAmbiguousAsStatement-                   {-# LINE 5108 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 338 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIpotentiallyAmbiguousAsStatement-                   {-# LINE 5113 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLast =-                  ({-# LINE 339 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5118 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIhasBreaking || _tlIhasBreaking-                   {-# LINE 5123 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOstatementCount =-                  ({-# LINE 287 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIstatementCount + _tlIstatementCount-                   {-# LINE 5128 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   (:) _hdIcopy _tlIcopy-                   {-# LINE 5133 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 5138 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _tlIcomments-                   {-# LINE 5143 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 5148 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 5153 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 5158 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 5163 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 5168 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _hdIcomments,_hdIcopy,_hdIhasBreaking,_hdIisMultiline,_hdIpos,_hdIpotentiallyAmbiguousAsStatement,_hdIpretty,_hdIstatementCount) =-                  hd_ _hdOcomments _hdOindent _hdOisLastStatement _hdOpotentiallyAmbiguousAsStatement _hdOppconf-              ( _tlIcomments,_tlIcopy,_tlIhasBreaking,_tlIisLast,_tlIisMultiline,_tlIpotentiallyAmbiguousAsStatement,_tlIpretty,_tlIstatementCount) =-                  tl_ _tlOcomments _tlOindent _tlOisHead _tlOppconf _tlOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisLast,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty,_lhsOstatementCount)))-sem_MStatList_Nil :: T_MStatList-sem_MStatList_Nil =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisHead-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOstatementCount :: Int-              _lhsOcomments :: ([MToken])-              _lhsOhasBreaking :: Bool-              _lhsOisLast :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: MStatList-              _lhsOpretty =-                  ({-# LINE 340 "src/GLua/AG/PrettyPrint.ag" #-}-                   _renderedComments-                   {-# LINE 5193 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOstatementCount =-                  ({-# LINE 341 "src/GLua/AG/PrettyPrint.ag" #-}-                   0-                   {-# LINE 5198 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _renderedComments =-                  ({-# LINE 342 "src/GLua/AG/PrettyPrint.ag" #-}-                   renderMLComments _lhsIppconf _lhsIindent $ fst _commentsBeforeEnd-                   {-# LINE 5203 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _commentsBeforeEnd =-                  ({-# LINE 345 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _lhsIisHead then ([], _lhsIcomments) else span (\(MToken pos' _tok) -> pos' `beforeEnd` _lhsIstatRegion) _lhsIcomments-                   {-# LINE 5208 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 346 "src/GLua/AG/PrettyPrint.ag" #-}-                   snd _commentsBeforeEnd-                   {-# LINE 5213 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5218 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLast =-                  ({-# LINE 265 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 5223 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5228 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5233 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   []-                   {-# LINE 5238 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 5243 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisLast,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty,_lhsOstatementCount)))--- MaybeMExpr ----------------------------------------------------- cata-sem_MaybeMExpr :: MaybeMExpr ->-                  T_MaybeMExpr-sem_MaybeMExpr (Prelude.Just x) =-    (sem_MaybeMExpr_Just (sem_MExpr x))-sem_MaybeMExpr Prelude.Nothing =-    sem_MaybeMExpr_Nothing--- semantic domain-type T_MaybeMExpr = ([MToken]) ->-                    Int ->-                    PrettyPrintConfig ->-                    ( ([MToken]),MaybeMExpr,Bool,Bool,Bool,OperatorLevel,Doc,Bool)-data Inh_MaybeMExpr = Inh_MaybeMExpr {comments_Inh_MaybeMExpr :: ([MToken]),indent_Inh_MaybeMExpr :: Int,ppconf_Inh_MaybeMExpr :: PrettyPrintConfig}-data Syn_MaybeMExpr = Syn_MaybeMExpr {comments_Syn_MaybeMExpr :: ([MToken]),copy_Syn_MaybeMExpr :: MaybeMExpr,isAssociative_Syn_MaybeMExpr :: Bool,isDefined_Syn_MaybeMExpr :: Bool,isMultiline_Syn_MaybeMExpr :: Bool,precedence_Syn_MaybeMExpr :: OperatorLevel,pretty_Syn_MaybeMExpr :: Doc,wouldBeAmbiguousIfNextStatementIsExprVar_Syn_MaybeMExpr :: Bool}-wrap_MaybeMExpr :: T_MaybeMExpr ->-                   Inh_MaybeMExpr ->-                   Syn_MaybeMExpr-wrap_MaybeMExpr sem (Inh_MaybeMExpr _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisDefined,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_MaybeMExpr _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisDefined _lhsOisMultiline _lhsOprecedence _lhsOpretty _lhsOwouldBeAmbiguousIfNextStatementIsExprVar))-sem_MaybeMExpr_Just :: T_MExpr ->-                       T_MaybeMExpr-sem_MaybeMExpr_Just just_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisDefined :: Bool-              _justOparentOperatorPrecedence :: OperatorLevel-              _justOparentOperatorAssociative :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: MaybeMExpr-              _lhsOcomments :: ([MToken])-              _justOcomments :: ([MToken])-              _justOindent :: Int-              _justOppconf :: PrettyPrintConfig-              _justIcomments :: ([MToken])-              _justIcopy :: MExpr-              _justIisAssociative :: Bool-              _justIisLiteral :: Bool-              _justIisMultiline :: Bool-              _justIpos :: Region-              _justIprecedence :: OperatorLevel-              _justIpretty :: Doc-              _justIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOpretty =-                  ({-# LINE 397 "src/GLua/AG/PrettyPrint.ag" #-}-                   _justIpretty-                   {-# LINE 5298 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisDefined =-                  ({-# LINE 398 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 5303 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _justOparentOperatorPrecedence =-                  ({-# LINE 399 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 5308 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _justOparentOperatorAssociative =-                  ({-# LINE 400 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 5313 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   _justIisAssociative-                   {-# LINE 5318 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _justIisMultiline-                   {-# LINE 5323 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   _justIprecedence-                   {-# LINE 5328 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   _justIwouldBeAmbiguousIfNextStatementIsExprVar-                   {-# LINE 5333 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   Just _justIcopy-                   {-# LINE 5338 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 5343 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _justIcomments-                   {-# LINE 5348 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _justOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 5353 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _justOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 5358 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _justOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 5363 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _justIcomments,_justIcopy,_justIisAssociative,_justIisLiteral,_justIisMultiline,_justIpos,_justIprecedence,_justIpretty,_justIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  just_ _justOcomments _justOindent _justOparentOperatorAssociative _justOparentOperatorPrecedence _justOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisDefined,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_MaybeMExpr_Nothing :: T_MaybeMExpr-sem_MaybeMExpr_Nothing =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisDefined :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: MaybeMExpr-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 402 "src/GLua/AG/PrettyPrint.ag" #-}-                   empty-                   {-# LINE 5384 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisDefined =-                  ({-# LINE 403 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5389 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5394 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5399 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 5404 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5409 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   Nothing-                   {-# LINE 5414 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 5419 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 5424 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisDefined,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))--- PFExprSuffix --------------------------------------------------- cata-sem_PFExprSuffix :: PFExprSuffix ->-                    T_PFExprSuffix-sem_PFExprSuffix (Call _args) =-    (sem_PFExprSuffix_Call (sem_Args _args))-sem_PFExprSuffix (MetaCall _fn _args) =-    (sem_PFExprSuffix_MetaCall _fn (sem_Args _args))-sem_PFExprSuffix (ExprIndex _index) =-    (sem_PFExprSuffix_ExprIndex (sem_MExpr _index))-sem_PFExprSuffix (DotIndex _index) =-    (sem_PFExprSuffix_DotIndex _index)--- semantic domain-type T_PFExprSuffix = ([MToken]) ->-                      Int ->-                      PrettyPrintConfig ->-                      ( ([MToken]),PFExprSuffix,Bool,Bool,OperatorLevel,Doc)-data Inh_PFExprSuffix = Inh_PFExprSuffix {comments_Inh_PFExprSuffix :: ([MToken]),indent_Inh_PFExprSuffix :: Int,ppconf_Inh_PFExprSuffix :: PrettyPrintConfig}-data Syn_PFExprSuffix = Syn_PFExprSuffix {comments_Syn_PFExprSuffix :: ([MToken]),copy_Syn_PFExprSuffix :: PFExprSuffix,isAssociative_Syn_PFExprSuffix :: Bool,isMultiline_Syn_PFExprSuffix :: Bool,precedence_Syn_PFExprSuffix :: OperatorLevel,pretty_Syn_PFExprSuffix :: Doc}-wrap_PFExprSuffix :: T_PFExprSuffix ->-                     Inh_PFExprSuffix ->-                     Syn_PFExprSuffix-wrap_PFExprSuffix sem (Inh_PFExprSuffix _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_PFExprSuffix _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisMultiline _lhsOprecedence _lhsOpretty))-sem_PFExprSuffix_Call :: T_Args ->-                         T_PFExprSuffix-sem_PFExprSuffix_Call args_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOcopy :: PFExprSuffix-              _lhsOcomments :: ([MToken])-              _argsOcomments :: ([MToken])-              _argsOindent :: Int-              _argsOppconf :: PrettyPrintConfig-              _argsIcomments :: ([MToken])-              _argsIcopy :: Args-              _argsIisMultiline :: Bool-              _argsIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 608 "src/GLua/AG/PrettyPrint.ag" #-}-                   _argsIpretty-                   {-# LINE 5474 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5479 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _argsIisMultiline-                   {-# LINE 5484 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 5489 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   Call _argsIcopy-                   {-# LINE 5494 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 5499 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _argsIcomments-                   {-# LINE 5504 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 5509 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argsOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 5514 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argsOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 5519 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _argsIcomments,_argsIcopy,_argsIisMultiline,_argsIpretty) =-                  args_ _argsOcomments _argsOindent _argsOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_PFExprSuffix_MetaCall :: MToken ->-                             T_Args ->-                             T_PFExprSuffix-sem_PFExprSuffix_MetaCall fn_ args_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOcopy :: PFExprSuffix-              _lhsOcomments :: ([MToken])-              _argsOcomments :: ([MToken])-              _argsOindent :: Int-              _argsOppconf :: PrettyPrintConfig-              _argsIcomments :: ([MToken])-              _argsIcopy :: Args-              _argsIisMultiline :: Bool-              _argsIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 609 "src/GLua/AG/PrettyPrint.ag" #-}-                   zchr ':' <> tok fn_ <> _argsIpretty-                   {-# LINE 5547 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5552 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _argsIisMultiline-                   {-# LINE 5557 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 5562 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   MetaCall fn_ _argsIcopy-                   {-# LINE 5567 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 5572 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _argsIcomments-                   {-# LINE 5577 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 5582 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argsOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 5587 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _argsOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 5592 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _argsIcomments,_argsIcopy,_argsIisMultiline,_argsIpretty) =-                  args_ _argsOcomments _argsOindent _argsOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_PFExprSuffix_ExprIndex :: T_MExpr ->-                              T_PFExprSuffix-sem_PFExprSuffix_ExprIndex index_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _indexOparentOperatorPrecedence :: OperatorLevel-              _indexOparentOperatorAssociative :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOcopy :: PFExprSuffix-              _lhsOcomments :: ([MToken])-              _indexOcomments :: ([MToken])-              _indexOindent :: Int-              _indexOppconf :: PrettyPrintConfig-              _indexIcomments :: ([MToken])-              _indexIcopy :: MExpr-              _indexIisAssociative :: Bool-              _indexIisLiteral :: Bool-              _indexIisMultiline :: Bool-              _indexIpos :: Region-              _indexIprecedence :: OperatorLevel-              _indexIpretty :: Doc-              _indexIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOpretty =-                  ({-# LINE 610 "src/GLua/AG/PrettyPrint.ag" #-}-                   brackets _lhsIppconf _indexIpretty-                   {-# LINE 5626 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _indexOparentOperatorPrecedence =-                  ({-# LINE 611 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 5631 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _indexOparentOperatorAssociative =-                  ({-# LINE 612 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 5636 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   _indexIisAssociative-                   {-# LINE 5641 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _indexIisMultiline-                   {-# LINE 5646 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   _indexIprecedence-                   {-# LINE 5651 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ExprIndex _indexIcopy-                   {-# LINE 5656 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 5661 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _indexIcomments-                   {-# LINE 5666 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _indexOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 5671 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _indexOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 5676 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _indexOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 5681 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _indexIcomments,_indexIcopy,_indexIisAssociative,_indexIisLiteral,_indexIisMultiline,_indexIpos,_indexIprecedence,_indexIpretty,_indexIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  index_ _indexOcomments _indexOindent _indexOparentOperatorAssociative _indexOparentOperatorPrecedence _indexOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))-sem_PFExprSuffix_DotIndex :: MToken ->-                             T_PFExprSuffix-sem_PFExprSuffix_DotIndex index_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOcopy :: PFExprSuffix-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 613 "src/GLua/AG/PrettyPrint.ag" #-}-                   zchr '.' <> tok index_-                   {-# LINE 5701 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5706 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5711 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   OperatorLevel8-                   {-# LINE 5716 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   DotIndex index_-                   {-# LINE 5721 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 5726 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 5731 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))--- PrefixExp ------------------------------------------------------ cata-sem_PrefixExp :: PrefixExp ->-                 T_PrefixExp-sem_PrefixExp (PFVar _name _suffixes) =-    (sem_PrefixExp_PFVar _name (sem_ExprSuffixList _suffixes))-sem_PrefixExp (ExprVar _expr _suffixes) =-    (sem_PrefixExp_ExprVar (sem_MExpr _expr) (sem_ExprSuffixList _suffixes))--- semantic domain-type T_PrefixExp = ([MToken]) ->-                   Int ->-                   Bool ->-                   OperatorLevel ->-                   PrettyPrintConfig ->-                   ( ([MToken]),PrefixExp,Bool,Bool,Bool,Bool,OperatorLevel,Doc)-data Inh_PrefixExp = Inh_PrefixExp {comments_Inh_PrefixExp :: ([MToken]),indent_Inh_PrefixExp :: Int,parentOperatorAssociative_Inh_PrefixExp :: Bool,parentOperatorPrecedence_Inh_PrefixExp :: OperatorLevel,ppconf_Inh_PrefixExp :: PrettyPrintConfig}-data Syn_PrefixExp = Syn_PrefixExp {comments_Syn_PrefixExp :: ([MToken]),copy_Syn_PrefixExp :: PrefixExp,isAssociative_Syn_PrefixExp :: Bool,isLiteral_Syn_PrefixExp :: Bool,isMultiline_Syn_PrefixExp :: Bool,potentiallyAmbiguousAsStatement_Syn_PrefixExp :: Bool,precedence_Syn_PrefixExp :: OperatorLevel,pretty_Syn_PrefixExp :: Doc}-wrap_PrefixExp :: T_PrefixExp ->-                  Inh_PrefixExp ->-                  Syn_PrefixExp-wrap_PrefixExp sem (Inh_PrefixExp _lhsIcomments _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf-     in  (Syn_PrefixExp _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisLiteral _lhsOisMultiline _lhsOpotentiallyAmbiguousAsStatement _lhsOprecedence _lhsOpretty))-sem_PrefixExp_PFVar :: MToken ->-                       T_ExprSuffixList ->-                       T_PrefixExp-sem_PrefixExp_PFVar name_ suffixes_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisLiteral :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOprecedence :: OperatorLevel-              _lhsOcopy :: PrefixExp-              _lhsOcomments :: ([MToken])-              _suffixesOcomments :: ([MToken])-              _suffixesOindent :: Int-              _suffixesOppconf :: PrettyPrintConfig-              _suffixesIcomments :: ([MToken])-              _suffixesIcopy :: ExprSuffixList-              _suffixesIisAssociative :: Bool-              _suffixesIisMultiline :: Bool-              _suffixesIprecedence :: OperatorLevel-              _suffixesIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 570 "src/GLua/AG/PrettyPrint.ag" #-}-                   tok name_ <> _suffixesIpretty-                   {-# LINE 5786 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 571 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5791 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   _suffixesIisAssociative-                   {-# LINE 5796 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _suffixesIisMultiline-                   {-# LINE 5801 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5806 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}-                   _suffixesIprecedence-                   {-# LINE 5811 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   PFVar name_ _suffixesIcopy-                   {-# LINE 5816 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 5821 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _suffixesIcomments-                   {-# LINE 5826 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _suffixesOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 5831 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _suffixesOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 5836 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _suffixesOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 5841 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _suffixesIcomments,_suffixesIcopy,_suffixesIisAssociative,_suffixesIisMultiline,_suffixesIprecedence,_suffixesIpretty) =-                  suffixes_ _suffixesOcomments _suffixesOindent _suffixesOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOprecedence,_lhsOpretty)))-sem_PrefixExp_ExprVar :: T_MExpr ->-                         T_ExprSuffixList ->-                         T_PrefixExp-sem_PrefixExp_ExprVar expr_ suffixes_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIparentOperatorAssociative-       _lhsIparentOperatorPrecedence-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOprecedence :: OperatorLevel-              _lhsOisLiteral :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOisAssociative :: Bool-              _lhsOisMultiline :: Bool-              _lhsOcopy :: PrefixExp-              _lhsOcomments :: ([MToken])-              _exprOcomments :: ([MToken])-              _exprOindent :: Int-              _exprOparentOperatorAssociative :: Bool-              _exprOparentOperatorPrecedence :: OperatorLevel-              _exprOppconf :: PrettyPrintConfig-              _suffixesOcomments :: ([MToken])-              _suffixesOindent :: Int-              _suffixesOppconf :: PrettyPrintConfig-              _exprIcomments :: ([MToken])-              _exprIcopy :: MExpr-              _exprIisAssociative :: Bool-              _exprIisLiteral :: Bool-              _exprIisMultiline :: Bool-              _exprIpos :: Region-              _exprIprecedence :: OperatorLevel-              _exprIpretty :: Doc-              _exprIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _suffixesIcomments :: ([MToken])-              _suffixesIcopy :: ExprSuffixList-              _suffixesIisAssociative :: Bool-              _suffixesIisMultiline :: Bool-              _suffixesIprecedence :: OperatorLevel-              _suffixesIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 572 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if _noparens     then _exprIpretty else parens _lhsIppconf NonEmpty _exprIpretty) <> _suffixesIpretty-                   {-# LINE 5889 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOprecedence =-                  ({-# LINE 573 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _noparens     then _exprIprecedence else OperatorLevel8-                   {-# LINE 5894 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLiteral =-                  ({-# LINE 574 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 5899 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _containsParenthesizedExpr =-                  ({-# LINE 578 "src/GLua/AG/PrettyPrint.ag" #-}-                   case _exprIcopy of-                      MExpr _ (APrefixExpr _) -> True-                      _ -> False-                   {-# LINE 5906 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _noparens =-                  ({-# LINE 581 "src/GLua/AG/PrettyPrint.ag" #-}-                   (removeRedundantParens _lhsIppconf || minimizeParens _lhsIppconf) && (_containsParenthesizedExpr     || (_lhsIparentOperatorPrecedence == TopLevelExpression || _exprIisLiteral) && length _suffixesIcopy == 0) ||-                   (minimizeParens _lhsIppconf && length _suffixesIcopy == 0 &&-                       ( _lhsIparentOperatorPrecedence < _exprIprecedence-                       || assumeOperatorAssociativity _lhsIppconf-                       && _lhsIparentOperatorPrecedence == _exprIprecedence-                       && _lhsIparentOperatorAssociative-                       )-                   )-                   {-# LINE 5918 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 605 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 5923 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisAssociative =-                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}-                   _exprIisAssociative && _suffixesIisAssociative-                   {-# LINE 5928 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _exprIisMultiline || _suffixesIisMultiline-                   {-# LINE 5933 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ExprVar _exprIcopy _suffixesIcopy-                   {-# LINE 5938 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 5943 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _suffixesIcomments-                   {-# LINE 5948 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 5953 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 5958 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprOparentOperatorAssociative =-                  ({-# LINE 243 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIparentOperatorAssociative-                   {-# LINE 5963 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprOparentOperatorPrecedence =-                  ({-# LINE 242 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIparentOperatorPrecedence-                   {-# LINE 5968 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 5973 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _suffixesOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _exprIcomments-                   {-# LINE 5978 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _suffixesOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 5983 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _suffixesOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 5988 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _exprIcomments,_exprIcopy,_exprIisAssociative,_exprIisLiteral,_exprIisMultiline,_exprIpos,_exprIprecedence,_exprIpretty,_exprIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  expr_ _exprOcomments _exprOindent _exprOparentOperatorAssociative _exprOparentOperatorPrecedence _exprOppconf-              ( _suffixesIcomments,_suffixesIcopy,_suffixesIisAssociative,_suffixesIisMultiline,_suffixesIprecedence,_suffixesIpretty) =-                  suffixes_ _suffixesOcomments _suffixesOindent _suffixesOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOprecedence,_lhsOpretty)))--- Stat ----------------------------------------------------------- cata-sem_Stat :: Stat ->-            T_Stat-sem_Stat (Def _vars) =-    (sem_Stat_Def (sem_VarsList _vars))-sem_Stat (LocDef _vars) =-    (sem_Stat_LocDef (sem_VarsList _vars))-sem_Stat (AFuncCall _fn) =-    (sem_Stat_AFuncCall (sem_PrefixExp _fn))-sem_Stat (ALabel _lbl) =-    (sem_Stat_ALabel _lbl)-sem_Stat (ABreak) =-    (sem_Stat_ABreak)-sem_Stat (AContinue) =-    (sem_Stat_AContinue)-sem_Stat (AGoto _lbl) =-    (sem_Stat_AGoto _lbl)-sem_Stat (ADo _body) =-    (sem_Stat_ADo (sem_Block _body))-sem_Stat (AWhile _cond _body) =-    (sem_Stat_AWhile (sem_MExpr _cond) (sem_Block _body))-sem_Stat (ARepeat _body _cond) =-    (sem_Stat_ARepeat (sem_Block _body) (sem_MExpr _cond))-sem_Stat (AIf _cond _body _elifs _els) =-    (sem_Stat_AIf (sem_MExpr _cond) (sem_Block _body) (sem_ElseIfList _elifs) (sem_Else _els))-sem_Stat (ANFor _var _val _to _step _body) =-    (sem_Stat_ANFor _var (sem_MExpr _val) (sem_MExpr _to) (sem_MExpr _step) (sem_Block _body))-sem_Stat (AGFor _vars _vals _body) =-    (sem_Stat_AGFor _vars (sem_MExprList _vals) (sem_Block _body))-sem_Stat (AFunc _name _args _body) =-    (sem_Stat_AFunc (sem_FuncName _name) _args (sem_Block _body))-sem_Stat (ALocFunc _name _args _body) =-    (sem_Stat_ALocFunc (sem_FuncName _name) _args (sem_Block _body))--- semantic domain-type T_Stat = ([MToken]) ->-              Int ->-              Bool ->-              Bool ->-              PrettyPrintConfig ->-              Region ->-              ( ([MToken]),Stat,Bool,Bool,Bool,Doc)-data Inh_Stat = Inh_Stat {comments_Inh_Stat :: ([MToken]),indent_Inh_Stat :: Int,isLastStatement_Inh_Stat :: Bool,potentiallyAmbiguousAsStatement_Inh_Stat :: Bool,ppconf_Inh_Stat :: PrettyPrintConfig,statRegion_Inh_Stat :: Region}-data Syn_Stat = Syn_Stat {comments_Syn_Stat :: ([MToken]),copy_Syn_Stat :: Stat,hasBreaking_Syn_Stat :: Bool,isMultiline_Syn_Stat :: Bool,potentiallyAmbiguousAsStatement_Syn_Stat :: Bool,pretty_Syn_Stat :: Doc}-wrap_Stat :: T_Stat ->-             Inh_Stat ->-             Syn_Stat-wrap_Stat sem (Inh_Stat _lhsIcomments _lhsIindent _lhsIisLastStatement _lhsIpotentiallyAmbiguousAsStatement _lhsIppconf _lhsIstatRegion) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIisLastStatement _lhsIpotentiallyAmbiguousAsStatement _lhsIppconf _lhsIstatRegion-     in  (Syn_Stat _lhsOcomments _lhsOcopy _lhsOhasBreaking _lhsOisMultiline _lhsOpotentiallyAmbiguousAsStatement _lhsOpretty))-sem_Stat_Def :: T_VarsList ->-                T_Stat-sem_Stat_Def vars_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _varsOisHead :: Bool-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _varsOcomments :: ([MToken])-              _varsOindent :: Int-              _varsOppconf :: PrettyPrintConfig-              _varsIcomments :: ([MToken])-              _varsIcopy :: VarsList-              _varsIexprPretty :: Doc-              _varsIisDefined :: Bool-              _varsIisLastDefinedVar :: Bool-              _varsIisMultiline :: Bool-              _varsIpretty :: Doc-              _varsIvarPretty :: Doc-              _varsIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOpretty =-                  ({-# LINE 471 "src/GLua/AG/PrettyPrint.ag" #-}-                   _varsIpretty <> _semicolon-                   {-# LINE 6076 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _semicolon =-                  ({-# LINE 472 "src/GLua/AG/PrettyPrint.ag" #-}-                   if semicolons _lhsIppconf || _wouldBeAmbiguous     then zchr ';' else empty-                   {-# LINE 6081 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _wouldBeAmbiguous =-                  ({-# LINE 473 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIpotentiallyAmbiguousAsStatement && _varsIwouldBeAmbiguousIfNextStatementIsExprVar-                   {-# LINE 6086 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _varsOisHead =-                  ({-# LINE 474 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 6091 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6096 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _varsIisMultiline-                   {-# LINE 6101 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6106 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   Def _varsIcopy-                   {-# LINE 6111 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 6116 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _varsIcomments-                   {-# LINE 6121 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _varsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 6126 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _varsOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 6131 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _varsOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 6136 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _varsIcomments,_varsIcopy,_varsIexprPretty,_varsIisDefined,_varsIisLastDefinedVar,_varsIisMultiline,_varsIpretty,_varsIvarPretty,_varsIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  vars_ _varsOcomments _varsOindent _varsOisHead _varsOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_LocDef :: T_VarsList ->-                   T_Stat-sem_Stat_LocDef vars_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _varsOisHead :: Bool-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _varsOcomments :: ([MToken])-              _varsOindent :: Int-              _varsOppconf :: PrettyPrintConfig-              _varsIcomments :: ([MToken])-              _varsIcopy :: VarsList-              _varsIexprPretty :: Doc-              _varsIisDefined :: Bool-              _varsIisLastDefinedVar :: Bool-              _varsIisMultiline :: Bool-              _varsIpretty :: Doc-              _varsIvarPretty :: Doc-              _varsIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOpretty =-                  ({-# LINE 475 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "local" <-> _varsIpretty <> _semicolon-                   {-# LINE 6172 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _semicolon =-                  ({-# LINE 476 "src/GLua/AG/PrettyPrint.ag" #-}-                   if semicolons _lhsIppconf || _wouldBeAmbiguous     then zchr ';' else empty-                   {-# LINE 6177 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _wouldBeAmbiguous =-                  ({-# LINE 477 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIpotentiallyAmbiguousAsStatement && _varsIwouldBeAmbiguousIfNextStatementIsExprVar-                   {-# LINE 6182 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _varsOisHead =-                  ({-# LINE 478 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 6187 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6192 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _varsIisMultiline-                   {-# LINE 6197 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6202 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   LocDef _varsIcopy-                   {-# LINE 6207 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 6212 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _varsIcomments-                   {-# LINE 6217 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _varsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 6222 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _varsOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 6227 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _varsOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 6232 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _varsIcomments,_varsIcopy,_varsIexprPretty,_varsIisDefined,_varsIisLastDefinedVar,_varsIisMultiline,_varsIpretty,_varsIvarPretty,_varsIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  vars_ _varsOcomments _varsOindent _varsOisHead _varsOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_AFuncCall :: T_PrefixExp ->-                      T_Stat-sem_Stat_AFuncCall fn_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _fnOparentOperatorPrecedence :: OperatorLevel-              _fnOparentOperatorAssociative :: Bool-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _fnOcomments :: ([MToken])-              _fnOindent :: Int-              _fnOppconf :: PrettyPrintConfig-              _fnIcomments :: ([MToken])-              _fnIcopy :: PrefixExp-              _fnIisAssociative :: Bool-              _fnIisLiteral :: Bool-              _fnIisMultiline :: Bool-              _fnIpotentiallyAmbiguousAsStatement :: Bool-              _fnIprecedence :: OperatorLevel-              _fnIpretty :: Doc-              _lhsOpretty =-                  ({-# LINE 479 "src/GLua/AG/PrettyPrint.ag" #-}-                   _fnIpretty <> _semicolon-                   {-# LINE 6268 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _semicolon =-                  ({-# LINE 480 "src/GLua/AG/PrettyPrint.ag" #-}-                   if semicolons _lhsIppconf || _lhsIpotentiallyAmbiguousAsStatement then zchr ';' else empty-                   {-# LINE 6273 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _fnOparentOperatorPrecedence =-                  ({-# LINE 481 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 6278 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _fnOparentOperatorAssociative =-                  ({-# LINE 482 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 6283 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6288 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _fnIisMultiline-                   {-# LINE 6293 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   _fnIpotentiallyAmbiguousAsStatement-                   {-# LINE 6298 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AFuncCall _fnIcopy-                   {-# LINE 6303 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 6308 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _fnIcomments-                   {-# LINE 6313 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _fnOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 6318 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _fnOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 6323 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _fnOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 6328 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _fnIcomments,_fnIcopy,_fnIisAssociative,_fnIisLiteral,_fnIisMultiline,_fnIpotentiallyAmbiguousAsStatement,_fnIprecedence,_fnIpretty) =-                  fn_ _fnOcomments _fnOindent _fnOparentOperatorAssociative _fnOparentOperatorPrecedence _fnOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_ALabel :: MToken ->-                   T_Stat-sem_Stat_ALabel lbl_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 483 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "::" <> _whitespace     <> tok lbl_ <> _whitespace     <> zeroWidthText "::"-                   {-# LINE 6351 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _whitespace =-                  ({-# LINE 484 "src/GLua/AG/PrettyPrint.ag" #-}-                   if spaceAfterLabel _lhsIppconf then zeroWidthText " " else empty-                   {-# LINE 6356 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6361 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6366 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6371 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ALabel lbl_-                   {-# LINE 6376 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 6381 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 6386 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_ABreak :: T_Stat-sem_Stat_ABreak =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 485 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "break" <> _semicolon-                   {-# LINE 6406 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _semicolon =-                  ({-# LINE 486 "src/GLua/AG/PrettyPrint.ag" #-}-                   if semicolons _lhsIppconf then zchr ';' else empty-                   {-# LINE 6411 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 487 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 6416 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6421 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6426 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ABreak-                   {-# LINE 6431 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 6436 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 6441 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_AContinue :: T_Stat-sem_Stat_AContinue =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 488 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "continue" <> _semicolon-                   {-# LINE 6461 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _semicolon =-                  ({-# LINE 489 "src/GLua/AG/PrettyPrint.ag" #-}-                   if semicolons _lhsIppconf then zchr ';' else empty-                   {-# LINE 6466 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 490 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 6471 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6476 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6481 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AContinue-                   {-# LINE 6486 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 6491 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 6496 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_AGoto :: MToken ->-                  T_Stat-sem_Stat_AGoto lbl_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 491 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "goto" <-> tok lbl_ <> _semicolon-                   {-# LINE 6517 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _semicolon =-                  ({-# LINE 492 "src/GLua/AG/PrettyPrint.ag" #-}-                   if semicolons _lhsIppconf then zchr ';' else empty-                   {-# LINE 6522 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6527 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6532 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6537 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AGoto lbl_-                   {-# LINE 6542 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 6547 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 6552 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_ADo :: T_Block ->-                T_Stat-sem_Stat_ADo body_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOisMultiline :: Bool-              _lhsOpretty :: Doc-              _bodyOindent :: Int-              _lhsOhasBreaking :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _bodyOcomments :: ([MToken])-              _bodyOppconf :: PrettyPrintConfig-              _bodyOstatRegion :: Region-              _bodyIcomments :: ([MToken])-              _bodyIcopy :: Block-              _bodyIhasBreaking :: Bool-              _bodyIisMultiline :: Bool-              _bodyIpretty :: Doc-              _bodyIstatementCount :: Int-              _lhsOisMultiline =-                  ({-# LINE 494 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 6583 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 495 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "do" $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")-                   {-# LINE 6588 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOindent =-                  ({-# LINE 496 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent + 1-                   {-# LINE 6593 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 497 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6598 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6603 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ADo _bodyIcopy-                   {-# LINE 6608 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 6613 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIcomments-                   {-# LINE 6618 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 6623 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 6628 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 6633 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =-                  body_ _bodyOcomments _bodyOindent _bodyOppconf _bodyOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_AWhile :: T_MExpr ->-                   T_Block ->-                   T_Stat-sem_Stat_AWhile cond_ body_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOisMultiline :: Bool-              _condOparentOperatorPrecedence :: OperatorLevel-              _condOparentOperatorAssociative :: Bool-              _lhsOpretty :: Doc-              _bodyOindent :: Int-              _lhsOhasBreaking :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _condOcomments :: ([MToken])-              _condOindent :: Int-              _condOppconf :: PrettyPrintConfig-              _bodyOcomments :: ([MToken])-              _bodyOppconf :: PrettyPrintConfig-              _bodyOstatRegion :: Region-              _condIcomments :: ([MToken])-              _condIcopy :: MExpr-              _condIisAssociative :: Bool-              _condIisLiteral :: Bool-              _condIisMultiline :: Bool-              _condIpos :: Region-              _condIprecedence :: OperatorLevel-              _condIpretty :: Doc-              _condIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _bodyIcomments :: ([MToken])-              _bodyIcopy :: Block-              _bodyIhasBreaking :: Bool-              _bodyIisMultiline :: Bool-              _bodyIpretty :: Doc-              _bodyIstatementCount :: Int-              _lhsOisMultiline =-                  ({-# LINE 498 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 6681 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOparentOperatorPrecedence =-                  ({-# LINE 499 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 6686 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOparentOperatorAssociative =-                  ({-# LINE 500 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 6691 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 501 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "while" <-> _condIpretty <-> zeroWidthText "do" $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")-                   {-# LINE 6696 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOindent =-                  ({-# LINE 502 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent + 1-                   {-# LINE 6701 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 503 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6706 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6711 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AWhile _condIcopy _bodyIcopy-                   {-# LINE 6716 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 6721 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIcomments-                   {-# LINE 6726 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 6731 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 6736 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 6741 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _condIcomments-                   {-# LINE 6746 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 6751 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 6756 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _condIcomments,_condIcopy,_condIisAssociative,_condIisLiteral,_condIisMultiline,_condIpos,_condIprecedence,_condIpretty,_condIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  cond_ _condOcomments _condOindent _condOparentOperatorAssociative _condOparentOperatorPrecedence _condOppconf-              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =-                  body_ _bodyOcomments _bodyOindent _bodyOppconf _bodyOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_ARepeat :: T_Block ->-                    T_MExpr ->-                    T_Stat-sem_Stat_ARepeat body_ cond_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOpretty :: Doc-              _bodyOindent :: Int-              _condOparentOperatorPrecedence :: OperatorLevel-              _condOparentOperatorAssociative :: Bool-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _bodyOcomments :: ([MToken])-              _bodyOppconf :: PrettyPrintConfig-              _bodyOstatRegion :: Region-              _condOcomments :: ([MToken])-              _condOindent :: Int-              _condOppconf :: PrettyPrintConfig-              _bodyIcomments :: ([MToken])-              _bodyIcopy :: Block-              _bodyIhasBreaking :: Bool-              _bodyIisMultiline :: Bool-              _bodyIpretty :: Doc-              _bodyIstatementCount :: Int-              _condIcomments :: ([MToken])-              _condIcopy :: MExpr-              _condIisAssociative :: Bool-              _condIisLiteral :: Bool-              _condIisMultiline :: Bool-              _condIpos :: Region-              _condIprecedence :: OperatorLevel-              _condIpretty :: Doc-              _condIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOpretty =-                  ({-# LINE 504 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "repeat" $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "until" <-> _condIpretty)-                   {-# LINE 6806 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOindent =-                  ({-# LINE 505 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent + 1-                   {-# LINE 6811 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOparentOperatorPrecedence =-                  ({-# LINE 506 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 6816 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOparentOperatorAssociative =-                  ({-# LINE 507 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 6821 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 508 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6826 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIisMultiline || _condIisMultiline-                   {-# LINE 6831 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6836 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ARepeat _bodyIcopy _condIcopy-                   {-# LINE 6841 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 6846 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _condIcomments-                   {-# LINE 6851 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 6856 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 6861 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 6866 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIcomments-                   {-# LINE 6871 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 6876 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 6881 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =-                  body_ _bodyOcomments _bodyOindent _bodyOppconf _bodyOstatRegion-              ( _condIcomments,_condIcopy,_condIisAssociative,_condIisLiteral,_condIisMultiline,_condIpos,_condIprecedence,_condIpretty,_condIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  cond_ _condOcomments _condOindent _condOparentOperatorAssociative _condOparentOperatorPrecedence _condOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_AIf :: T_MExpr ->-                T_Block ->-                T_ElseIfList ->-                T_Else ->-                T_Stat-sem_Stat_AIf cond_ body_ elifs_ els_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _condOparentOperatorPrecedence :: OperatorLevel-              _condOparentOperatorAssociative :: Bool-              _bodyOindent :: Int-              _bodyOstatRegion :: Region-              _lhsOpretty :: Doc-              _lhsOhasBreaking :: Bool-              _lhsOisMultiline :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _condOcomments :: ([MToken])-              _condOindent :: Int-              _condOppconf :: PrettyPrintConfig-              _bodyOcomments :: ([MToken])-              _bodyOppconf :: PrettyPrintConfig-              _elifsOcomments :: ([MToken])-              _elifsOindent :: Int-              _elifsOppconf :: PrettyPrintConfig-              _elsOcomments :: ([MToken])-              _elsOindent :: Int-              _elsOppconf :: PrettyPrintConfig-              _elsOstatRegion :: Region-              _condIcomments :: ([MToken])-              _condIcopy :: MExpr-              _condIisAssociative :: Bool-              _condIisLiteral :: Bool-              _condIisMultiline :: Bool-              _condIpos :: Region-              _condIprecedence :: OperatorLevel-              _condIpretty :: Doc-              _condIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _bodyIcomments :: ([MToken])-              _bodyIcopy :: Block-              _bodyIhasBreaking :: Bool-              _bodyIisMultiline :: Bool-              _bodyIpretty :: Doc-              _bodyIstatementCount :: Int-              _elifsIcomments :: ([MToken])-              _elifsIcopy :: ElseIfList-              _elifsIelsesExist :: Bool-              _elifsIisMultiline :: Bool-              _elifsIpos :: Region-              _elifsIpretty :: Doc-              _elsIcomments :: ([MToken])-              _elsIcopy :: Else-              _elsIelsesExist :: Bool-              _elsIisMultiline :: Bool-              _elsIpos :: Region-              _elsIpretty :: Doc-              _isMultiline =-                  ({-# LINE 509 "src/GLua/AG/PrettyPrint.ag" #-}-                   _condIisMultiline || _bodyIisMultiline || _bodyIstatementCount > 1 || _bodyIstatementCount == 1 && not _bodyIhasBreaking || _elifsIelsesExist || _elsIelsesExist-                   {-# LINE 6952 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _singleLinePretty =-                  ({-# LINE 510 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "if" <-> _condIpretty <-> zeroWidthText "then" <-> _bodyIpretty <-> zeroWidthText "end"-                   {-# LINE 6957 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _multilinePretty =-                  ({-# LINE 511 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "if" <-> _condIpretty <-> zeroWidthText "then" $+$ _bodyIpretty $+$ _elifsIpretty $+$ _elsIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")-                   {-# LINE 6962 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOparentOperatorPrecedence =-                  ({-# LINE 512 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 6967 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOparentOperatorAssociative =-                  ({-# LINE 513 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 6972 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOindent =-                  ({-# LINE 514 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _isMultiline     then _lhsIindent + 1 else 0-                   {-# LINE 6977 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOstatRegion =-                  ({-# LINE 515 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion `upto` _elifsIpos `upto` _elsIpos-                   {-# LINE 6982 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 516 "src/GLua/AG/PrettyPrint.ag" #-}-                   if _isMultiline     then _multilinePretty     else _singleLinePretty-                   {-# LINE 6987 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 517 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 6992 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _isMultiline-                   {-# LINE 6997 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7002 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AIf _condIcopy _bodyIcopy _elifsIcopy _elsIcopy-                   {-# LINE 7007 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 7012 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _elsIcomments-                   {-# LINE 7017 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 7022 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 7027 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _condOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7032 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _condIcomments-                   {-# LINE 7037 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7042 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _elifsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIcomments-                   {-# LINE 7047 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _elifsOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 7052 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _elifsOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7057 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _elsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _elifsIcomments-                   {-# LINE 7062 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _elsOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 7067 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _elsOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7072 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _elsOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 7077 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _condIcomments,_condIcopy,_condIisAssociative,_condIisLiteral,_condIisMultiline,_condIpos,_condIprecedence,_condIpretty,_condIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  cond_ _condOcomments _condOindent _condOparentOperatorAssociative _condOparentOperatorPrecedence _condOppconf-              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =-                  body_ _bodyOcomments _bodyOindent _bodyOppconf _bodyOstatRegion-              ( _elifsIcomments,_elifsIcopy,_elifsIelsesExist,_elifsIisMultiline,_elifsIpos,_elifsIpretty) =-                  elifs_ _elifsOcomments _elifsOindent _elifsOppconf-              ( _elsIcomments,_elsIcopy,_elsIelsesExist,_elsIisMultiline,_elsIpos,_elsIpretty) =-                  els_ _elsOcomments _elsOindent _elsOppconf _elsOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_ANFor :: MToken ->-                  T_MExpr ->-                  T_MExpr ->-                  T_MExpr ->-                  T_Block ->-                  T_Stat-sem_Stat_ANFor var_ val_ to_ step_ body_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOisMultiline :: Bool-              _lhsOpretty :: Doc-              _valOparentOperatorPrecedence :: OperatorLevel-              _valOparentOperatorAssociative :: Bool-              _toOparentOperatorPrecedence :: OperatorLevel-              _toOparentOperatorAssociative :: Bool-              _stepOparentOperatorPrecedence :: OperatorLevel-              _stepOparentOperatorAssociative :: Bool-              _bodyOindent :: Int-              _lhsOhasBreaking :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _valOcomments :: ([MToken])-              _valOindent :: Int-              _valOppconf :: PrettyPrintConfig-              _toOcomments :: ([MToken])-              _toOindent :: Int-              _toOppconf :: PrettyPrintConfig-              _stepOcomments :: ([MToken])-              _stepOindent :: Int-              _stepOppconf :: PrettyPrintConfig-              _bodyOcomments :: ([MToken])-              _bodyOppconf :: PrettyPrintConfig-              _bodyOstatRegion :: Region-              _valIcomments :: ([MToken])-              _valIcopy :: MExpr-              _valIisAssociative :: Bool-              _valIisLiteral :: Bool-              _valIisMultiline :: Bool-              _valIpos :: Region-              _valIprecedence :: OperatorLevel-              _valIpretty :: Doc-              _valIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _toIcomments :: ([MToken])-              _toIcopy :: MExpr-              _toIisAssociative :: Bool-              _toIisLiteral :: Bool-              _toIisMultiline :: Bool-              _toIpos :: Region-              _toIprecedence :: OperatorLevel-              _toIpretty :: Doc-              _toIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _stepIcomments :: ([MToken])-              _stepIcopy :: MExpr-              _stepIisAssociative :: Bool-              _stepIisLiteral :: Bool-              _stepIisMultiline :: Bool-              _stepIpos :: Region-              _stepIprecedence :: OperatorLevel-              _stepIpretty :: Doc-              _stepIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _bodyIcomments :: ([MToken])-              _bodyIcopy :: Block-              _bodyIhasBreaking :: Bool-              _bodyIisMultiline :: Bool-              _bodyIpretty :: Doc-              _bodyIstatementCount :: Int-              _lhsOisMultiline =-                  ({-# LINE 518 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 7162 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _step =-                  ({-# LINE 519 "src/GLua/AG/PrettyPrint.ag" #-}-                   case _stepIcopy of-                       MExpr _ (ANumber "1") -> empty-                       _ -> _comma     <> _stepIpretty-                   {-# LINE 7169 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 522 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "for" <-> tok var_ <-> zchr '=' <-> _valIpretty <> _comma     <> _toIpretty <> _step     <-> zeroWidthText "do" $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")-                   {-# LINE 7174 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _comma =-                  ({-# LINE 523 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)-                   {-# LINE 7179 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valOparentOperatorPrecedence =-                  ({-# LINE 524 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 7184 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valOparentOperatorAssociative =-                  ({-# LINE 525 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 7189 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _toOparentOperatorPrecedence =-                  ({-# LINE 526 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 7194 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _toOparentOperatorAssociative =-                  ({-# LINE 527 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 7199 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _stepOparentOperatorPrecedence =-                  ({-# LINE 528 "src/GLua/AG/PrettyPrint.ag" #-}-                   TopLevelExpression-                   {-# LINE 7204 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _stepOparentOperatorAssociative =-                  ({-# LINE 529 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 7209 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOindent =-                  ({-# LINE 530 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent + 1-                   {-# LINE 7214 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 531 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7219 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7224 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ANFor var_ _valIcopy _toIcopy _stepIcopy _bodyIcopy-                   {-# LINE 7229 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 7234 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIcomments-                   {-# LINE 7239 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 7244 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 7249 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7254 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _toOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valIcomments-                   {-# LINE 7259 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _toOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 7264 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _toOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7269 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _stepOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _toIcomments-                   {-# LINE 7274 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _stepOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 7279 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _stepOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7284 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _stepIcomments-                   {-# LINE 7289 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7294 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 7299 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _valIcomments,_valIcopy,_valIisAssociative,_valIisLiteral,_valIisMultiline,_valIpos,_valIprecedence,_valIpretty,_valIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  val_ _valOcomments _valOindent _valOparentOperatorAssociative _valOparentOperatorPrecedence _valOppconf-              ( _toIcomments,_toIcopy,_toIisAssociative,_toIisLiteral,_toIisMultiline,_toIpos,_toIprecedence,_toIpretty,_toIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  to_ _toOcomments _toOindent _toOparentOperatorAssociative _toOparentOperatorPrecedence _toOppconf-              ( _stepIcomments,_stepIcopy,_stepIisAssociative,_stepIisLiteral,_stepIisMultiline,_stepIpos,_stepIprecedence,_stepIpretty,_stepIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  step_ _stepOcomments _stepOindent _stepOparentOperatorAssociative _stepOparentOperatorPrecedence _stepOppconf-              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =-                  body_ _bodyOcomments _bodyOindent _bodyOppconf _bodyOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_AGFor :: ([MToken]) ->-                  T_MExprList ->-                  T_Block ->-                  T_Stat-sem_Stat_AGFor vars_ vals_ body_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOisMultiline :: Bool-              _lhsOpretty :: Doc-              _bodyOindent :: Int-              _valsOisHead :: Bool-              _lhsOhasBreaking :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _valsOcomments :: ([MToken])-              _valsOindent :: Int-              _valsOppconf :: PrettyPrintConfig-              _bodyOcomments :: ([MToken])-              _bodyOppconf :: PrettyPrintConfig-              _bodyOstatRegion :: Region-              _valsIcomments :: ([MToken])-              _valsIcopy :: MExprList-              _valsIisAssociative :: Bool-              _valsIisMultiline :: Bool-              _valsIpos :: Region-              _valsIprecedence :: OperatorLevel-              _valsIpretty :: Doc-              _bodyIcomments :: ([MToken])-              _bodyIcopy :: Block-              _bodyIhasBreaking :: Bool-              _bodyIisMultiline :: Bool-              _bodyIpretty :: Doc-              _bodyIstatementCount :: Int-              _lhsOisMultiline =-                  ({-# LINE 532 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 7351 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 533 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "for" <-> printList tok (render _comma    ) vars_ <-> zeroWidthText "in" <-> _valsIpretty <-> zeroWidthText "do" $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")-                   {-# LINE 7356 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOindent =-                  ({-# LINE 534 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent + 1-                   {-# LINE 7361 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _comma =-                  ({-# LINE 535 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)-                   {-# LINE 7366 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valsOisHead =-                  ({-# LINE 536 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 7371 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 537 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7376 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7381 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AGFor vars_ _valsIcopy _bodyIcopy-                   {-# LINE 7386 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 7391 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIcomments-                   {-# LINE 7396 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 7401 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valsOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 7406 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _valsOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7411 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _valsIcomments-                   {-# LINE 7416 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7421 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 7426 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _valsIcomments,_valsIcopy,_valsIisAssociative,_valsIisMultiline,_valsIpos,_valsIprecedence,_valsIpretty) =-                  vals_ _valsOcomments _valsOindent _valsOisHead _valsOppconf-              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =-                  body_ _bodyOcomments _bodyOindent _bodyOppconf _bodyOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_AFunc :: T_FuncName ->-                  ([MToken]) ->-                  T_Block ->-                  T_Stat-sem_Stat_AFunc name_ args_ body_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOisMultiline :: Bool-              _lhsOpretty :: Doc-              _bodyOindent :: Int-              _lhsOhasBreaking :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _nameOcomments :: ([MToken])-              _nameOindent :: Int-              _nameOppconf :: PrettyPrintConfig-              _bodyOcomments :: ([MToken])-              _bodyOppconf :: PrettyPrintConfig-              _bodyOstatRegion :: Region-              _nameIcomments :: ([MToken])-              _nameIcopy :: FuncName-              _nameIisMultiline :: Bool-              _nameIpretty :: Doc-              _bodyIcomments :: ([MToken])-              _bodyIcopy :: Block-              _bodyIhasBreaking :: Bool-              _bodyIisMultiline :: Bool-              _bodyIpretty :: Doc-              _bodyIstatementCount :: Int-              _lhsOisMultiline =-                  ({-# LINE 538 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 7470 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 539 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "function" <-> _nameIpretty <> parens _lhsIppconf _emptyParams     (printList tok (render _comma    ) args_) $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")-                   {-# LINE 7475 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _emptyParams =-                  ({-# LINE 540 "src/GLua/AG/PrettyPrint.ag" #-}-                   toEmpty $ null args_-                   {-# LINE 7480 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _comma =-                  ({-# LINE 541 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)-                   {-# LINE 7485 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOindent =-                  ({-# LINE 542 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent + 1-                   {-# LINE 7490 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 543 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7495 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7500 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AFunc _nameIcopy args_ _bodyIcopy-                   {-# LINE 7505 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 7510 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIcomments-                   {-# LINE 7515 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _nameOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 7520 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _nameOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 7525 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _nameOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7530 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _nameIcomments-                   {-# LINE 7535 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7540 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 7545 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _nameIcomments,_nameIcopy,_nameIisMultiline,_nameIpretty) =-                  name_ _nameOcomments _nameOindent _nameOppconf-              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =-                  body_ _bodyOcomments _bodyOindent _bodyOppconf _bodyOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))-sem_Stat_ALocFunc :: T_FuncName ->-                     ([MToken]) ->-                     T_Block ->-                     T_Stat-sem_Stat_ALocFunc name_ args_ body_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisLastStatement-       _lhsIpotentiallyAmbiguousAsStatement-       _lhsIppconf-       _lhsIstatRegion ->-         (let _lhsOisMultiline :: Bool-              _lhsOpretty :: Doc-              _bodyOindent :: Int-              _lhsOhasBreaking :: Bool-              _lhsOpotentiallyAmbiguousAsStatement :: Bool-              _lhsOcopy :: Stat-              _lhsOcomments :: ([MToken])-              _nameOcomments :: ([MToken])-              _nameOindent :: Int-              _nameOppconf :: PrettyPrintConfig-              _bodyOcomments :: ([MToken])-              _bodyOppconf :: PrettyPrintConfig-              _bodyOstatRegion :: Region-              _nameIcomments :: ([MToken])-              _nameIcopy :: FuncName-              _nameIisMultiline :: Bool-              _nameIpretty :: Doc-              _bodyIcomments :: ([MToken])-              _bodyIcopy :: Block-              _bodyIhasBreaking :: Bool-              _bodyIisMultiline :: Bool-              _bodyIpretty :: Doc-              _bodyIstatementCount :: Int-              _lhsOisMultiline =-                  ({-# LINE 544 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 7589 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpretty =-                  ({-# LINE 545 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "local function" <-> _nameIpretty <> parens _lhsIppconf _emptyParams     (printList tok (render _comma    ) args_) $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")-                   {-# LINE 7594 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _emptyParams =-                  ({-# LINE 546 "src/GLua/AG/PrettyPrint.ag" #-}-                   toEmpty $ null args_-                   {-# LINE 7599 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _comma =-                  ({-# LINE 547 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)-                   {-# LINE 7604 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOindent =-                  ({-# LINE 548 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent + 1-                   {-# LINE 7609 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOhasBreaking =-                  ({-# LINE 549 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7614 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOpotentiallyAmbiguousAsStatement =-                  ({-# LINE 301 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7619 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ALocFunc _nameIcopy args_ _bodyIcopy-                   {-# LINE 7624 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 7629 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _bodyIcomments-                   {-# LINE 7634 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _nameOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 7639 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _nameOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 7644 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _nameOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7649 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _nameIcomments-                   {-# LINE 7654 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7659 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _bodyOstatRegion =-                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIstatRegion-                   {-# LINE 7664 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _nameIcomments,_nameIcopy,_nameIisMultiline,_nameIpretty) =-                  name_ _nameOcomments _nameOindent _nameOppconf-              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =-                  body_ _bodyOcomments _bodyOindent _bodyOppconf _bodyOstatRegion-          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpotentiallyAmbiguousAsStatement,_lhsOpretty)))--- UnOp ----------------------------------------------------------- cata-sem_UnOp :: UnOp ->-            T_UnOp-sem_UnOp (UnMinus) =-    (sem_UnOp_UnMinus)-sem_UnOp (ANot) =-    (sem_UnOp_ANot)-sem_UnOp (AHash) =-    (sem_UnOp_AHash)--- semantic domain-type T_UnOp = ([MToken]) ->-              Int ->-              PrettyPrintConfig ->-              ( ([MToken]),UnOp,Bool,Doc)-data Inh_UnOp = Inh_UnOp {comments_Inh_UnOp :: ([MToken]),indent_Inh_UnOp :: Int,ppconf_Inh_UnOp :: PrettyPrintConfig}-data Syn_UnOp = Syn_UnOp {comments_Syn_UnOp :: ([MToken]),copy_Syn_UnOp :: UnOp,isMultiline_Syn_UnOp :: Bool,pretty_Syn_UnOp :: Doc}-wrap_UnOp :: T_UnOp ->-             Inh_UnOp ->-             Syn_UnOp-wrap_UnOp sem (Inh_UnOp _lhsIcomments _lhsIindent _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf-     in  (Syn_UnOp _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOpretty))-sem_UnOp_UnMinus :: T_UnOp-sem_UnOp_UnMinus =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisMultiline :: Bool-              _lhsOcopy :: UnOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 750 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "-"-                   {-# LINE 7706 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7711 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   UnMinus-                   {-# LINE 7716 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 7721 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 7726 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))-sem_UnOp_ANot :: T_UnOp-sem_UnOp_ANot =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisMultiline :: Bool-              _lhsOcopy :: UnOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 751 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText (if cStyle _lhsIppconf then "!" else "not ")-                   {-# LINE 7741 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7746 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   ANot-                   {-# LINE 7751 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 7756 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 7761 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))-sem_UnOp_AHash :: T_UnOp-sem_UnOp_AHash =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisMultiline :: Bool-              _lhsOcopy :: UnOp-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 752 "src/GLua/AG/PrettyPrint.ag" #-}-                   zeroWidthText "#"-                   {-# LINE 7776 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7781 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   AHash-                   {-# LINE 7786 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 7791 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 7796 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))--- VarsList ------------------------------------------------------- cata-sem_VarsList :: VarsList ->-                T_VarsList-sem_VarsList list =-    (Prelude.foldr sem_VarsList_Cons sem_VarsList_Nil (Prelude.map sem_Declaration list))--- semantic domain-type T_VarsList = ([MToken]) ->-                  Int ->-                  Bool ->-                  PrettyPrintConfig ->-                  ( ([MToken]),VarsList,Doc,Bool,Bool,Bool,Doc,Doc,Bool)-data Inh_VarsList = Inh_VarsList {comments_Inh_VarsList :: ([MToken]),indent_Inh_VarsList :: Int,isHead_Inh_VarsList :: Bool,ppconf_Inh_VarsList :: PrettyPrintConfig}-data Syn_VarsList = Syn_VarsList {comments_Syn_VarsList :: ([MToken]),copy_Syn_VarsList :: VarsList,exprPretty_Syn_VarsList :: Doc,isDefined_Syn_VarsList :: Bool,isLastDefinedVar_Syn_VarsList :: Bool,isMultiline_Syn_VarsList :: Bool,pretty_Syn_VarsList :: Doc,varPretty_Syn_VarsList :: Doc,wouldBeAmbiguousIfNextStatementIsExprVar_Syn_VarsList :: Bool}-wrap_VarsList :: T_VarsList ->-                 Inh_VarsList ->-                 Syn_VarsList-wrap_VarsList sem (Inh_VarsList _lhsIcomments _lhsIindent _lhsIisHead _lhsIppconf) =-    (let ( _lhsOcomments,_lhsOcopy,_lhsOexprPretty,_lhsOisDefined,_lhsOisLastDefinedVar,_lhsOisMultiline,_lhsOpretty,_lhsOvarPretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar) = sem _lhsIcomments _lhsIindent _lhsIisHead _lhsIppconf-     in  (Syn_VarsList _lhsOcomments _lhsOcopy _lhsOexprPretty _lhsOisDefined _lhsOisLastDefinedVar _lhsOisMultiline _lhsOpretty _lhsOvarPretty _lhsOwouldBeAmbiguousIfNextStatementIsExprVar))-sem_VarsList_Cons :: T_Declaration ->-                     T_VarsList ->-                     T_VarsList-sem_VarsList_Cons hd_ tl_ =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisHead-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _tlOisHead :: Bool-              _lhsOisLastDefinedVar :: Bool-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOexprPretty :: Doc-              _lhsOisDefined :: Bool-              _lhsOisMultiline :: Bool-              _lhsOvarPretty :: Doc-              _lhsOcopy :: VarsList-              _lhsOcomments :: ([MToken])-              _hdOcomments :: ([MToken])-              _hdOindent :: Int-              _hdOppconf :: PrettyPrintConfig-              _tlOcomments :: ([MToken])-              _tlOindent :: Int-              _tlOppconf :: PrettyPrintConfig-              _hdIcomments :: ([MToken])-              _hdIcopy :: Declaration-              _hdIexprPretty :: Doc-              _hdIisDefined :: Bool-              _hdIisMultiline :: Bool-              _hdIpretty :: Doc-              _hdIvarPretty :: Doc-              _hdIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _tlIcomments :: ([MToken])-              _tlIcopy :: VarsList-              _tlIexprPretty :: Doc-              _tlIisDefined :: Bool-              _tlIisLastDefinedVar :: Bool-              _tlIisMultiline :: Bool-              _tlIpretty :: Doc-              _tlIvarPretty :: Doc-              _tlIwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOpretty =-                  ({-# LINE 412 "src/GLua/AG/PrettyPrint.ag" #-}-                   _varPretty     <-> if _isDefined     then zchr '=' <-> _exprPretty     else empty-                   {-# LINE 7863 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _isDefined =-                  ({-# LINE 413 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIisDefined || _tlIisDefined-                   {-# LINE 7868 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _varPretty =-                  ({-# LINE 414 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if _lhsIisHead then empty else _comma    ) <> _hdIvarPretty <> _tlIvarPretty-                   {-# LINE 7873 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _exprPretty =-                  ({-# LINE 415 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if _lhsIisHead || not _hdIisDefined then empty else _comma    ) <> _hdIexprPretty <> _tlIexprPretty-                   {-# LINE 7878 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _comma =-                  ({-# LINE 416 "src/GLua/AG/PrettyPrint.ag" #-}-                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)-                   {-# LINE 7883 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOisHead =-                  ({-# LINE 417 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 7888 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _isLastDefinedVar =-                  ({-# LINE 418 "src/GLua/AG/PrettyPrint.ag" #-}-                   _tlIisLastDefinedVar-                   {-# LINE 7893 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLastDefinedVar =-                  ({-# LINE 419 "src/GLua/AG/PrettyPrint.ag" #-}-                   _isLastDefinedVar     && not _hdIisDefined-                   {-# LINE 7898 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 420 "src/GLua/AG/PrettyPrint.ag" #-}-                   _tlIwouldBeAmbiguousIfNextStatementIsExprVar || _isLastDefinedVar     && _hdIwouldBeAmbiguousIfNextStatementIsExprVar-                   {-# LINE 7903 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOexprPretty =-                  ({-# LINE 256 "src/GLua/AG/PrettyPrint.ag" #-}-                   _exprPretty-                   {-# LINE 7908 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisDefined =-                  ({-# LINE 259 "src/GLua/AG/PrettyPrint.ag" #-}-                   _isDefined-                   {-# LINE 7913 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIisMultiline || _tlIisMultiline-                   {-# LINE 7918 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOvarPretty =-                  ({-# LINE 255 "src/GLua/AG/PrettyPrint.ag" #-}-                   _varPretty-                   {-# LINE 7923 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   (:) _hdIcopy _tlIcopy-                   {-# LINE 7928 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 7933 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _tlIcomments-                   {-# LINE 7938 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 7943 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 7948 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _hdOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7953 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _hdIcomments-                   {-# LINE 7958 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOindent =-                  ({-# LINE 233 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIindent-                   {-# LINE 7963 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _tlOppconf =-                  ({-# LINE 235 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIppconf-                   {-# LINE 7968 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              ( _hdIcomments,_hdIcopy,_hdIexprPretty,_hdIisDefined,_hdIisMultiline,_hdIpretty,_hdIvarPretty,_hdIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  hd_ _hdOcomments _hdOindent _hdOppconf-              ( _tlIcomments,_tlIcopy,_tlIexprPretty,_tlIisDefined,_tlIisLastDefinedVar,_tlIisMultiline,_tlIpretty,_tlIvarPretty,_tlIwouldBeAmbiguousIfNextStatementIsExprVar) =-                  tl_ _tlOcomments _tlOindent _tlOisHead _tlOppconf-          in  ( _lhsOcomments,_lhsOcopy,_lhsOexprPretty,_lhsOisDefined,_lhsOisLastDefinedVar,_lhsOisMultiline,_lhsOpretty,_lhsOvarPretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))-sem_VarsList_Nil :: T_VarsList-sem_VarsList_Nil =-    (\ _lhsIcomments-       _lhsIindent-       _lhsIisHead-       _lhsIppconf ->-         (let _lhsOpretty :: Doc-              _lhsOisLastDefinedVar :: Bool-              _lhsOexprPretty :: Doc-              _lhsOisDefined :: Bool-              _lhsOisMultiline :: Bool-              _lhsOvarPretty :: Doc-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar :: Bool-              _lhsOcopy :: VarsList-              _lhsOcomments :: ([MToken])-              _lhsOpretty =-                  ({-# LINE 422 "src/GLua/AG/PrettyPrint.ag" #-}-                   empty-                   {-# LINE 7993 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisLastDefinedVar =-                  ({-# LINE 423 "src/GLua/AG/PrettyPrint.ag" #-}-                   True-                   {-# LINE 7998 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOexprPretty =-                  ({-# LINE 256 "src/GLua/AG/PrettyPrint.ag" #-}-                   empty-                   {-# LINE 8003 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisDefined =-                  ({-# LINE 259 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 8008 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOisMultiline =-                  ({-# LINE 234 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 8013 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOvarPretty =-                  ({-# LINE 255 "src/GLua/AG/PrettyPrint.ag" #-}-                   empty-                   {-# LINE 8018 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOwouldBeAmbiguousIfNextStatementIsExprVar =-                  ({-# LINE 307 "src/GLua/AG/PrettyPrint.ag" #-}-                   False-                   {-# LINE 8023 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _copy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   []-                   {-# LINE 8028 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcopy =-                  ({-# LINE 236 "src/GLua/AG/PrettyPrint.ag" #-}-                   _copy-                   {-# LINE 8033 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-              _lhsOcomments =-                  ({-# LINE 274 "src/GLua/AG/PrettyPrint.ag" #-}-                   _lhsIcomments-                   {-# LINE 8038 "src/GLua/AG/PrettyPrint.hs" #-}-                   )-          in  ( _lhsOcomments,_lhsOcopy,_lhsOexprPretty,_lhsOisDefined,_lhsOisLastDefinedVar,_lhsOisMultiline,_lhsOpretty,_lhsOvarPretty,_lhsOwouldBeAmbiguousIfNextStatementIsExprVar)))+import Data.List (foldl', isInfixOf)+import GLua.AG.AST+import Text.PrettyPrint hiding (parens, brackets, braces)+import GLua.TokenTypes+import Data.Maybe+import Text.Parsec+import Text.Parsec.Error+import Text.ParserCombinators.UU.BasicInstances hiding (pos)+import Debug.Trace+{-# LINE 29 "src/GLua/AG/PrettyPrint.hs" #-}+{-# LINE 19 "src/GLua/AG/PrettyPrint.ag" #-}+++tok :: MToken -> Doc+tok (MToken _ t) = zeroWidthText . show $ t++printList :: (a -> Doc) -> String -> [a] -> Doc+printList _ _ []       = empty+printList f sep' (e : es) = (f e) <> g es+    where+        g []       = empty+        g (e' : es') = zeroWidthText sep' <> (f e') <> g es'++data IsEmpty = IsEmpty | NonEmpty++fromEmpty :: IsEmpty -> Bool+fromEmpty IsEmpty = True+fromEmpty NonEmpty = False++toEmpty :: Bool -> IsEmpty+toEmpty b = if b then IsEmpty else NonEmpty++data PrettyPrintConfig = PPConfig {+    spaceAfterParens :: Bool,+    spaceAfterBrackets :: Bool,+    spaceAfterBraces :: Bool,+    spaceEmptyParens :: Bool,+    spaceEmptyBraces :: Bool,+    spaceAfterLabel :: Bool,+    spaceBeforeComma :: Bool,+    spaceAfterComma :: Bool,+    semicolons :: Bool,+    cStyle :: Bool,+    removeRedundantParens :: Bool,+    minimizeParens :: Bool,+    assumeOperatorAssociativity :: Bool,+    indentation :: String+}++defaultPPConfig :: PrettyPrintConfig+defaultPPConfig = PPConfig {+    spaceAfterParens = False,+    spaceAfterBrackets = False,+    spaceAfterBraces = False,+    spaceEmptyParens = False,+    spaceEmptyBraces = False,+    spaceAfterLabel = False,+    spaceBeforeComma = False,+    spaceAfterComma = True,+    semicolons = False,+    cStyle = False,+    removeRedundantParens = True,+    assumeOperatorAssociativity = True,+    minimizeParens = False,+    indentation = "    "+}++metaDoc :: Maybe MToken -> Doc+metaDoc (Just m) = zchr ':' <> tok m+metaDoc Nothing  = empty++printVarList :: [(PrefixExp, Maybe MExpr)] -> Doc+printVarList vars = printList pp_prefixexp ", " (map fst vars) <-> zchr '=' <-> printList pp_mexpr ", " (catMaybes . map snd $ vars)++printStats :: [MStat] -> Int -> Doc+printStats [] _ = empty+printStats (x : xs) i = nest (i * 4) (pp_mstat x i) $+$ printStats xs i++printElIfs :: [(MExpr, Block)] -> Int -> Doc+printElIfs [] _ = empty+printElIfs ((e, b) : es) i = zeroWidthText "elseif" <-> pp_mexpr e <-> zeroWidthText "then" $+$ pp_block b i $+$ printElIfs es i++printEls :: Maybe Block -> Int -> Doc+printEls Nothing _ = empty+printEls (Just b) i = zeroWidthText "else" $+$ pp_block b i+++renderPos :: LineColPos -> String+renderPos (LineColPos l c _) = "line " ++ show (succ l) ++ ", column " ++ show (succ c)++renderRegion :: Region -> String+renderRegion (Region l r) = renderPos l ++ " - " ++ renderPos r++renderSourcePos :: SourcePos -> String+renderSourcePos sp = "line " ++ (show . succ . sourceLine $ sp) ++ ", column " ++ (show . succ . sourceColumn $ sp)++getMStatPos :: MStat -> String+getMStatPos (MStat p _) = renderRegion p++getAReturnPos :: AReturn -> String+getAReturnPos (AReturn p _) = renderRegion p+getAReturnPos NoReturn = "<unknown>"++getMExprPos :: MExpr -> String+getMExprPos (MExpr p _) = renderRegion p++renderError :: Error LineColPos -> String+renderError (Inserted str pos strs)       = renderPos pos ++ ": Inserted '" ++ str ++ "'." ++ render_expecting strs+renderError (Deleted str pos strs)        = renderPos pos ++ ": Removed '" ++ str ++ "'. " ++render_expecting strs+renderError (Replaced str1 str2 pos strs) = renderPos pos ++ ": Replaced '" ++ str1 ++ "' with '" ++ str2 ++ "' at " ++ renderPos pos ++ render_expecting strs+renderError (DeletedAtEnd str)            = "Deleted '"  ++ str ++ "' at the end of the Lua file because the parser doesn't know what to do with it."++render_expecting :: [String] -> String+render_expecting [a]    = "Parser expected a " ++ a+render_expecting (a:as) = "Parser expected one of [" ++ a ++ concat (map (", " ++) as) ++ "]"+render_expecting []     = "Parser expected nothing"+++renderPSError :: ParseError -> String+renderPSError ps = map replNL . showErrorMessages "or" "unknown parse error" "expecting" "unexpected" "end of input" . errorMessages $ ps+    where+        replNL '\n' = ' '+        replNL c = c++-- | Render comments on multiple lines+renderMLComments :: PrettyPrintConfig -> Int -> [MToken] -> Doc+renderMLComments conf ind toks = foldl' ($+$) empty . map (indent conf ind . tok . convertComment conf) $ toks++-- | Render comments, and prefer having them on a single line. It may not print comments on the same+-- line if that would cause a syntax error (e.g. a multiline comment after a single line comment)+renderSLComments :: PrettyPrintConfig -> Int -> [MToken] -> Doc+renderSLComments conf ind toks = foldl' combine empty . map (convertComment conf) $ toks+    where+        combine :: Doc -> MToken -> Doc+        combine acc mt@(MToken _pos t) =+          case t of+            -- Block comments after single line comments cannot be printed on the same line, as that+            -- would cause a syntax error, e.g. in this case:++            -- foo = { -- single line comment+            -- --[[multiline+            -- comment+            -- ]]+            -- }+            -- Make sure in these cases the comment is printed on a new line, rather than on the+            -- same line+            DashBlockComment _depth comment | '\n' `elem` comment ->+              acc $+$ (indent conf ind $ tok mt)+            SlashBlockComment comment | '\n' `elem` comment ->+              acc $+$ (indent conf ind $ tok mt)+            _ -> acc <-> tok mt++convertComment :: PrettyPrintConfig -> MToken -> MToken+convertComment conf (MToken p t) = MToken p $ convert' t+    where+        convert' :: Token -> Token+        convert' = if cStyle conf then cComment else luaComment++        luaComment :: Token -> Token+        luaComment (SlashComment s) = DashComment s+        luaComment (SlashBlockComment s) = DashBlockComment (lastBracket s) s+        luaComment t' = t'++        -- converting /*]*/ would end up in --[[]]] when plainly converted+        -- Deepen the block comment by 1 if that's the case+        lastBracket :: String -> Int+        lastBracket [] = 0+        lastBracket s = if last s == ']' then 1 else 0++        cComment :: Token -> Token+        cComment (DashComment s) = SlashComment s+        cComment (DashBlockComment _ s) = SlashBlockComment s+        cComment t' = t'++indent :: PrettyPrintConfig -> Int -> Doc -> Doc+indent conf n = (<>) $ zeroWidthText (concat . replicate n $ indentation conf)++parens :: PrettyPrintConfig -> IsEmpty -> Doc -> Doc+parens conf ie doc = zchr '(' `sep'` doc `sep'` zchr ')'+    where+        sep' :: Doc -> Doc -> Doc+        sep' = if spaceAfterParens conf && (not (fromEmpty ie) || spaceEmptyParens conf) then (<->) else (<>)++brackets :: PrettyPrintConfig -> Doc -> Doc+brackets conf doc = zchr '[' `sep'` doc `sep'` zchr ']'+    where+        sep' :: Doc -> Doc -> Doc+        sep' = if spaceAfterBrackets conf then (<->) else (<>)++braces :: PrettyPrintConfig -> IsEmpty -> Doc -> Doc+braces conf ie doc = zchr '{' `sep'` doc `sep'` zchr '}'+    where+        sep' :: Doc -> Doc -> Doc+        sep' = if spaceAfterBraces conf && (not (fromEmpty ie) || spaceEmptyBraces conf) then (<->) else (<>)++-- Zero width char+zchr :: Char -> Doc+zchr c = zeroWidthText [c]++-- Zero width <+>+infixl 6 <->+(<->) :: Doc -> Doc -> Doc+a <-> b | a == empty = b+        | b == empty = a+        | otherwise  = a <> zchr ' ' <> b++-- Operator levels, where level 1 is the lowest level, and level 8 is the highest one+-- See http://www.lua.org/manual/5.2/manual.html#3.4.7+data OperatorLevel+    -- At the top level, there is no assigned operator level yet. This serves as a bottom value.+    = TopLevelExpression+    | OperatorLevel1+    | OperatorLevel2+    | OperatorLevel3+    | OperatorLevel4+    | OperatorLevel5+    | OperatorLevel6+    | OperatorLevel7+    | OperatorLevel8+    deriving (Eq, Ord)++-- | Returns true when any of the comments contain the string "format: multiline"+commentsForceMultiline :: [MToken] -> Bool+commentsForceMultiline commentTokens = any containsFormatMultiline commentTokens+  where+    containsFormatMultiline :: MToken -> Bool+    containsFormatMultiline (MToken _pos t) = case t of+        DashComment comment -> stringForcesFormat comment+        DashBlockComment _ comment -> stringForcesFormat comment+        SlashComment comment -> stringForcesFormat comment+        SlashBlockComment comment -> stringForcesFormat comment+        _ -> False++    stringForcesFormat :: String -> Bool+    stringForcesFormat s = "format: multiline" `isInfixOf` s++{-# LINE 256 "src/GLua/AG/PrettyPrint.hs" #-}++{-# LINE 881 "src/GLua/AG/PrettyPrint.ag" #-}+++pp_block :: Block -> Int -> Doc+pp_block p i = pretty_Syn_Block (wrap_Block (sem_Block p) (emptyInh_Block {indent_Inh_Block = i}))++pp_mstat :: MStat -> Int -> Doc+pp_mstat p i = pretty_Syn_MStat (wrap_MStat (sem_MStat p) emptyInh_MStat {indent_Inh_MStat = i})++pp_prefixexp :: PrefixExp -> Doc+pp_prefixexp p = pretty_Syn_PrefixExp (wrap_PrefixExp (sem_PrefixExp p) emptyInh_PrefixExp)++pp_pfexprsuffix :: PFExprSuffix -> Doc+pp_pfexprsuffix p = pretty_Syn_PFExprSuffix (wrap_PFExprSuffix (sem_PFExprSuffix p) emptyInh_PFExprSuffix)++pp_field :: Field -> Doc+pp_field p = pretty_Syn_Field (wrap_Field (sem_Field p) emptyInh_Field)++pp_mexpr :: MExpr -> Doc+pp_mexpr p = pretty_Syn_MExpr (wrap_MExpr (sem_MExpr p) emptyInh_MExpr)++prettyprint :: AST -> String+prettyprint p = render $ pretty_Syn_AST (wrap_AST (sem_AST p) emptyInh_AST)++prettyprintConf :: PrettyPrintConfig -> AST -> String+prettyprintConf conf p = render $ pretty_Syn_AST (wrap_AST (sem_AST p) emptyInh_AST {ppconf_Inh_AST = conf})++renderBlock        :: Block -> String+renderBlock p      = render $ pretty_Syn_Block (wrap_Block (sem_Block p) emptyInh_Block)++renderStat         :: Stat -> String+renderStat p       = render $ pretty_Syn_Stat (wrap_Stat (sem_Stat p) emptyInh_Stat)++renderMStat         :: MStat -> String+renderMStat p       = render $ pretty_Syn_MStat (wrap_MStat (sem_MStat p) emptyInh_MStat)++renderAReturn      :: AReturn -> String+renderAReturn p    = render $ pretty_Syn_AReturn (wrap_AReturn (sem_AReturn p) emptyInh_AReturn)++renderFuncName     :: FuncName -> String+renderFuncName p   = render $ pretty_Syn_FuncName (wrap_FuncName (sem_FuncName p) emptyInh_FuncName)++renderPrefixExp    :: PrefixExp -> String+renderPrefixExp p  = render $ pretty_Syn_PrefixExp (wrap_PrefixExp (sem_PrefixExp p) emptyInh_PrefixExp)++renderExpr         :: Expr -> String+renderExpr p       = render $ pretty_Syn_Expr (wrap_Expr (sem_Expr p) emptyInh_Expr)++renderMExpr         :: MExpr -> String+renderMExpr p       = render $ pretty_Syn_MExpr (wrap_MExpr (sem_MExpr p) emptyInh_MExpr)++renderArgs         :: Args -> String+renderArgs p       = render $ pretty_Syn_Args (wrap_Args (sem_Args p) emptyInh_Args)++renderField        :: Field -> String+renderField p      = render $ pretty_Syn_Field (wrap_Field (sem_Field p) emptyInh_Field)++emptyInh_Field :: Inh_Field+emptyInh_Field =+    Inh_Field+      { comments_Inh_Field = []+      , forceMultiline_Inh_Field = False+      , indent_Inh_Field = 0+      , ppconf_Inh_Field = defaultPPConfig+      }++emptyInh_Args :: Inh_Args+emptyInh_Args =+    Inh_Args+      { comments_Inh_Args = []+      , forceMultiline_Inh_Args = False+      , indent_Inh_Args = 0+      , ppconf_Inh_Args = defaultPPConfig+      }++emptyInh_MExpr :: Inh_MExpr+emptyInh_MExpr =+    Inh_MExpr+      { comments_Inh_MExpr = []+      , forceMultiline_Inh_MExpr = False+      , indent_Inh_MExpr = 0+      , parentOperatorAssociative_Inh_MExpr = True+      , parentOperatorPrecedence_Inh_MExpr = TopLevelExpression+      , ppconf_Inh_MExpr = defaultPPConfig+      }++emptyInh_Expr :: Inh_Expr+emptyInh_Expr =+    Inh_Expr+      { comments_Inh_Expr = []+      , forceMultiline_Inh_Expr = False+      , indent_Inh_Expr = 0+      , parentOperatorAssociative_Inh_Expr = True+      , parentOperatorPrecedence_Inh_Expr = TopLevelExpression+      , ppconf_Inh_Expr = defaultPPConfig+      , statRegion_Inh_Expr = emptyRg+      }++emptyInh_PrefixExp :: Inh_PrefixExp+emptyInh_PrefixExp =+    Inh_PrefixExp+      { comments_Inh_PrefixExp = []+      , forceMultiline_Inh_PrefixExp = False+      , indent_Inh_PrefixExp = 0+      , parentOperatorAssociative_Inh_PrefixExp = True+      , parentOperatorPrecedence_Inh_PrefixExp = TopLevelExpression+      , ppconf_Inh_PrefixExp = defaultPPConfig+      }++emptyInh_FuncName :: Inh_FuncName+emptyInh_FuncName =+    Inh_FuncName+      { comments_Inh_FuncName = []+      , indent_Inh_FuncName = 0+      , ppconf_Inh_FuncName = defaultPPConfig+      }++emptyInh_AReturn :: Inh_AReturn+emptyInh_AReturn =+    Inh_AReturn+      { comments_Inh_AReturn = []+      , forceMultiline_Inh_AReturn = False+      , indent_Inh_AReturn = 0+      , ppconf_Inh_AReturn = defaultPPConfig+      }++emptyInh_MStat :: Inh_MStat+emptyInh_MStat =+    Inh_MStat+      { comments_Inh_MStat = []+      , forceMultiline_Inh_MStat = False+      , indent_Inh_MStat = 0+      , isLastStatement_Inh_MStat = False+      , ppconf_Inh_MStat = defaultPPConfig+      , wouldBeAmbiguousWithoutSemicolon_Inh_MStat = False+      }++emptyInh_Stat :: Inh_Stat+emptyInh_Stat =+    Inh_Stat+      { comments_Inh_Stat = []+      , forceMultiline_Inh_Stat = False+      , indent_Inh_Stat = 0+      , isLastStatement_Inh_Stat = False+      , ppconf_Inh_Stat = defaultPPConfig+      , statRegion_Inh_Stat = emptyRg+      , wouldBeAmbiguousWithoutSemicolon_Inh_Stat = False+      }++emptyInh_Block :: Inh_Block+emptyInh_Block =+    Inh_Block+      { comments_Inh_Block = []+      , forceMultiline_Inh_Block = False+      , indent_Inh_Block = 0+      , ppconf_Inh_Block = defaultPPConfig+      , statRegion_Inh_Block = emptyRg+      }++emptyInh_AST :: Inh_AST+emptyInh_AST =+    Inh_AST+      { indent_Inh_AST = 0+      , ppconf_Inh_AST = defaultPPConfig+      }++emptyInh_PFExprSuffix :: Inh_PFExprSuffix+emptyInh_PFExprSuffix =+    Inh_PFExprSuffix+      { comments_Inh_PFExprSuffix = []+      , forceMultiline_Inh_PFExprSuffix = False+      , indent_Inh_PFExprSuffix = 0+      , ppconf_Inh_PFExprSuffix = defaultPPConfig+      }++{-# LINE 433 "src/GLua/AG/PrettyPrint.hs" #-}+-- AReturn -----------------------------------------------------+-- cata+sem_AReturn :: AReturn ->+               T_AReturn+sem_AReturn (AReturn _pos _values) =+    (sem_AReturn_AReturn _pos (sem_MExprList _values))+sem_AReturn (NoReturn) =+    (sem_AReturn_NoReturn)+-- semantic domain+type T_AReturn = ([MToken]) ->+                 Bool ->+                 Int ->+                 PrettyPrintConfig ->+                 ( ([MToken]),AReturn,Bool,Bool,Doc,Int)+data Inh_AReturn = Inh_AReturn {comments_Inh_AReturn :: ([MToken]),forceMultiline_Inh_AReturn :: Bool,indent_Inh_AReturn :: Int,ppconf_Inh_AReturn :: PrettyPrintConfig}+data Syn_AReturn = Syn_AReturn {comments_Syn_AReturn :: ([MToken]),copy_Syn_AReturn :: AReturn,hasBreaking_Syn_AReturn :: Bool,isMultiline_Syn_AReturn :: Bool,pretty_Syn_AReturn :: Doc,statementCount_Syn_AReturn :: Int}+wrap_AReturn :: T_AReturn ->+                Inh_AReturn ->+                Syn_AReturn+wrap_AReturn sem (Inh_AReturn _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstatementCount) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf+     in  (Syn_AReturn _lhsOcomments _lhsOcopy _lhsOhasBreaking _lhsOisMultiline _lhsOpretty _lhsOstatementCount))+sem_AReturn_AReturn :: Region ->+                       T_MExprList ->+                       T_AReturn+sem_AReturn_AReturn pos_ values_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _valuesOcomments :: ([MToken])+              _lhsOcomments :: ([MToken])+              _valuesOisHead :: Bool+              _valuesOforceMultiline :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOstatementCount :: Int+              _lhsOcopy :: AReturn+              _valuesOindent :: Int+              _valuesOppconf :: PrettyPrintConfig+              _valuesIcomments :: ([MToken])+              _valuesIcopy :: MExprList+              _valuesIisAssociative :: Bool+              _valuesIisMultiline :: Bool+              _valuesIpos :: Region+              _valuesIprecedence :: OperatorLevel+              _valuesIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 654 "src/GLua/AG/PrettyPrint.ag" #-}+                   _prettyCommentsBefore     $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "return") <-> _valuesIpretty <> _semicolon     <-> _prettyCommentsAfter+                   {-# LINE 485 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _isMultiline =+                  ({-# LINE 655 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valuesIisMultiline+                   {-# LINE 490 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _semicolon =+                  ({-# LINE 656 "src/GLua/AG/PrettyPrint.ag" #-}+                   if semicolons _lhsIppconf then zchr ';' else empty+                   {-# LINE 495 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettyCommentsBefore =+                  ({-# LINE 657 "src/GLua/AG/PrettyPrint.ag" #-}+                   renderMLComments _lhsIppconf _lhsIindent (fst _commentsBefore    )+                   {-# LINE 500 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettyCommentsAfter =+                  ({-# LINE 658 "src/GLua/AG/PrettyPrint.ag" #-}+                   renderSLComments _lhsIppconf _lhsIindent (fst _commentsAfter    )+                   {-# LINE 505 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _commentsBefore =+                  ({-# LINE 659 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _isMultiline     then span (\(MToken pos _) -> pos `before` pos_) _lhsIcomments else ([], _lhsIcomments)+                   {-# LINE 510 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _commentsAfter =+                  ({-# LINE 660 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _isMultiline     then span (\(MToken pos _) -> pos `beforeOrOnLine` (rgOr _valuesIpos pos_)) (snd _commentsBefore    ) else ([], snd _commentsBefore    )+                   {-# LINE 515 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valuesOcomments =+                  ({-# LINE 661 "src/GLua/AG/PrettyPrint.ag" #-}+                   snd _commentsAfter+                   {-# LINE 520 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 662 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valuesIcomments+                   {-# LINE 525 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valuesOisHead =+                  ({-# LINE 663 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 530 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valuesOforceMultiline =+                  ({-# LINE 667 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 535 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 668 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 540 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _isMultiline+                   {-# LINE 545 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstatementCount =+                  ({-# LINE 303 "src/GLua/AG/PrettyPrint.ag" #-}+                   1+                   {-# LINE 550 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AReturn pos_ _valuesIcopy+                   {-# LINE 555 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 560 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valuesOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 565 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valuesOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 570 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _valuesIcomments,_valuesIcopy,_valuesIisAssociative,_valuesIisMultiline,_valuesIpos,_valuesIprecedence,_valuesIpretty) =+                  values_ _valuesOcomments _valuesOforceMultiline _valuesOindent _valuesOisHead _valuesOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstatementCount)))+sem_AReturn_NoReturn :: T_AReturn+sem_AReturn_NoReturn =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOstatementCount :: Int+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: AReturn+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 669 "src/GLua/AG/PrettyPrint.ag" #-}+                   empty+                   {-# LINE 590 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstatementCount =+                  ({-# LINE 670 "src/GLua/AG/PrettyPrint.ag" #-}+                   0+                   {-# LINE 595 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 306 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 600 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 605 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   NoReturn+                   {-# LINE 610 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 615 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 620 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstatementCount)))+-- AST ---------------------------------------------------------+-- cata+sem_AST :: AST ->+           T_AST+sem_AST (AST _comments _chunk) =+    (sem_AST_AST _comments (sem_Block _chunk))+-- semantic domain+type T_AST = Int ->+             PrettyPrintConfig ->+             ( AST,Bool,Doc)+data Inh_AST = Inh_AST {indent_Inh_AST :: Int,ppconf_Inh_AST :: PrettyPrintConfig}+data Syn_AST = Syn_AST {copy_Syn_AST :: AST,isMultiline_Syn_AST :: Bool,pretty_Syn_AST :: Doc}+wrap_AST :: T_AST ->+            Inh_AST ->+            Syn_AST+wrap_AST sem (Inh_AST _lhsIindent _lhsIppconf) =+    (let ( _lhsOcopy,_lhsOisMultiline,_lhsOpretty) = sem _lhsIindent _lhsIppconf+     in  (Syn_AST _lhsOcopy _lhsOisMultiline _lhsOpretty))+sem_AST_AST :: ([MToken]) ->+               T_Block ->+               T_AST+sem_AST_AST comments_ chunk_ =+    (\ _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _chunkOcomments :: ([MToken])+              _chunkOstatRegion :: Region+              _chunkOforceMultiline :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: AST+              _chunkOindent :: Int+              _chunkOppconf :: PrettyPrintConfig+              _chunkIcomments :: ([MToken])+              _chunkIcopy :: Block+              _chunkIhasBreaking :: Bool+              _chunkIisMultiline :: Bool+              _chunkIpretty :: Doc+              _chunkIstatementCount :: Int+              _lhsOpretty =+                  ({-# LINE 530 "src/GLua/AG/PrettyPrint.ag" #-}+                   _chunkIpretty $+$ _prettyComments+                   {-# LINE 664 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettyComments =+                  ({-# LINE 531 "src/GLua/AG/PrettyPrint.ag" #-}+                   renderMLComments _lhsIppconf _lhsIindent _chunkIcomments+                   {-# LINE 669 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _chunkOcomments =+                  ({-# LINE 532 "src/GLua/AG/PrettyPrint.ag" #-}+                   comments_+                   {-# LINE 674 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _chunkOstatRegion =+                  ({-# LINE 533 "src/GLua/AG/PrettyPrint.ag" #-}+                   emptyRg+                   {-# LINE 679 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _chunkOforceMultiline =+                  ({-# LINE 534 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 684 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _chunkIisMultiline+                   {-# LINE 689 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AST comments_ _chunkIcopy+                   {-# LINE 694 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 699 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _chunkOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 704 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _chunkOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 709 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _chunkIcomments,_chunkIcopy,_chunkIhasBreaking,_chunkIisMultiline,_chunkIpretty,_chunkIstatementCount) =+                  chunk_ _chunkOcomments _chunkOforceMultiline _chunkOindent _chunkOppconf _chunkOstatRegion+          in  ( _lhsOcopy,_lhsOisMultiline,_lhsOpretty)))+-- Args --------------------------------------------------------+-- cata+sem_Args :: Args ->+            T_Args+sem_Args (ListArgs _args) =+    (sem_Args_ListArgs (sem_MExprList _args))+sem_Args (TableArg _arg) =+    (sem_Args_TableArg (sem_FieldList _arg))+sem_Args (StringArg _arg) =+    (sem_Args_StringArg _arg)+-- semantic domain+type T_Args = ([MToken]) ->+              Bool ->+              Int ->+              PrettyPrintConfig ->+              ( ([MToken]),Args,Bool,Doc)+data Inh_Args = Inh_Args {comments_Inh_Args :: ([MToken]),forceMultiline_Inh_Args :: Bool,indent_Inh_Args :: Int,ppconf_Inh_Args :: PrettyPrintConfig}+data Syn_Args = Syn_Args {comments_Syn_Args :: ([MToken]),copy_Syn_Args :: Args,isMultiline_Syn_Args :: Bool,pretty_Syn_Args :: Doc}+wrap_Args :: T_Args ->+             Inh_Args ->+             Syn_Args+wrap_Args sem (Inh_Args _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf+     in  (Syn_Args _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOpretty))+sem_Args_ListArgs :: T_MExprList ->+                     T_Args+sem_Args_ListArgs args_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _argsOisHead :: Bool+              _argsOindent :: Int+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Args+              _lhsOcomments :: ([MToken])+              _argsOcomments :: ([MToken])+              _argsOforceMultiline :: Bool+              _argsOppconf :: PrettyPrintConfig+              _argsIcomments :: ([MToken])+              _argsIcopy :: MExprList+              _argsIisAssociative :: Bool+              _argsIisMultiline :: Bool+              _argsIpos :: Region+              _argsIprecedence :: OperatorLevel+              _argsIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 782 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _argsIisMultiline then+                       zchr '(' $+$+                       indent _lhsIppconf (_lhsIindent + 1) _argsIpretty $+$+                       indent _lhsIppconf _lhsIindent (zchr ')')+                   else+                       parens _lhsIppconf _emptyParams     _argsIpretty+                   {-# LINE 769 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _emptyParams =+                  ({-# LINE 789 "src/GLua/AG/PrettyPrint.ag" #-}+                   toEmpty $ null _argsIcopy+                   {-# LINE 774 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOisHead =+                  ({-# LINE 790 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 779 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOindent =+                  ({-# LINE 791 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _argsIisMultiline then _lhsIindent + 1 else 0+                   {-# LINE 784 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _argsIisMultiline+                   {-# LINE 789 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ListArgs _argsIcopy+                   {-# LINE 794 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 799 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _argsIcomments+                   {-# LINE 804 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 809 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 814 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 819 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _argsIcomments,_argsIcopy,_argsIisAssociative,_argsIisMultiline,_argsIpos,_argsIprecedence,_argsIpretty) =+                  args_ _argsOcomments _argsOforceMultiline _argsOindent _argsOisHead _argsOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))+sem_Args_TableArg :: T_FieldList ->+                     T_Args+sem_Args_TableArg arg_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _argOindent :: Int+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Args+              _lhsOcomments :: ([MToken])+              _argOcomments :: ([MToken])+              _argOforceMultiline :: Bool+              _argOppconf :: PrettyPrintConfig+              _argIcanFitOnSameLine :: Bool+              _argIcomments :: ([MToken])+              _argIcopy :: FieldList+              _argIisMultiline :: Bool+              _argIisNil :: Bool+              _argIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 792 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _argIisMultiline then _prettyMulti     else _prettySingle+                   {-# LINE 848 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettyMulti =+                  ({-# LINE 793 "src/GLua/AG/PrettyPrint.ag" #-}+                   zchr '{' $+$ indent _lhsIppconf (_lhsIindent + 1) _argIpretty $+$ indent _lhsIppconf _lhsIindent (zchr '}')+                   {-# LINE 853 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettySingle =+                  ({-# LINE 794 "src/GLua/AG/PrettyPrint.ag" #-}+                   braces _lhsIppconf _emptyContents     _argIpretty+                   {-# LINE 858 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _emptyContents =+                  ({-# LINE 795 "src/GLua/AG/PrettyPrint.ag" #-}+                   toEmpty $ null _argIcopy+                   {-# LINE 863 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argOindent =+                  ({-# LINE 796 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent + (if _argIisMultiline then 1 else 0)+                   {-# LINE 868 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _argIisMultiline+                   {-# LINE 873 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   TableArg _argIcopy+                   {-# LINE 878 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 883 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _argIcomments+                   {-# LINE 888 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 893 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 898 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 903 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _argIcanFitOnSameLine,_argIcomments,_argIcopy,_argIisMultiline,_argIisNil,_argIpretty) =+                  arg_ _argOcomments _argOforceMultiline _argOindent _argOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))+sem_Args_StringArg :: MToken ->+                      T_Args+sem_Args_StringArg arg_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Args+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 797 "src/GLua/AG/PrettyPrint.ag" #-}+                   tok arg_+                   {-# LINE 922 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 927 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   StringArg arg_+                   {-# LINE 932 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 937 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 942 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))+-- BinOp -------------------------------------------------------+-- cata+sem_BinOp :: BinOp ->+             T_BinOp+sem_BinOp (AOr) =+    (sem_BinOp_AOr)+sem_BinOp (AAnd) =+    (sem_BinOp_AAnd)+sem_BinOp (ALT) =+    (sem_BinOp_ALT)+sem_BinOp (AGT) =+    (sem_BinOp_AGT)+sem_BinOp (ALEQ) =+    (sem_BinOp_ALEQ)+sem_BinOp (AGEQ) =+    (sem_BinOp_AGEQ)+sem_BinOp (ANEq) =+    (sem_BinOp_ANEq)+sem_BinOp (AEq) =+    (sem_BinOp_AEq)+sem_BinOp (AConcatenate) =+    (sem_BinOp_AConcatenate)+sem_BinOp (APlus) =+    (sem_BinOp_APlus)+sem_BinOp (BinMinus) =+    (sem_BinOp_BinMinus)+sem_BinOp (AMultiply) =+    (sem_BinOp_AMultiply)+sem_BinOp (ADivide) =+    (sem_BinOp_ADivide)+sem_BinOp (AModulus) =+    (sem_BinOp_AModulus)+sem_BinOp (APower) =+    (sem_BinOp_APower)+-- semantic domain+type T_BinOp = ([MToken]) ->+               Int ->+               PrettyPrintConfig ->+               ( ([MToken]),BinOp,Bool,Bool,OperatorLevel,Doc)+data Inh_BinOp = Inh_BinOp {comments_Inh_BinOp :: ([MToken]),indent_Inh_BinOp :: Int,ppconf_Inh_BinOp :: PrettyPrintConfig}+data Syn_BinOp = Syn_BinOp {comments_Syn_BinOp :: ([MToken]),copy_Syn_BinOp :: BinOp,isAssociative_Syn_BinOp :: Bool,isMultiline_Syn_BinOp :: Bool,precedence_Syn_BinOp :: OperatorLevel,pretty_Syn_BinOp :: Doc}+wrap_BinOp :: T_BinOp ->+              Inh_BinOp ->+              Syn_BinOp+wrap_BinOp sem (Inh_BinOp _lhsIcomments _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf+     in  (Syn_BinOp _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisMultiline _lhsOprecedence _lhsOpretty))+sem_BinOp_AOr :: T_BinOp+sem_BinOp_AOr =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 872 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText (if cStyle _lhsIppconf then "||" else "or")+                   {-# LINE 1006 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 873 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel1+                   {-# LINE 1011 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 874 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1016 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1021 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AOr+                   {-# LINE 1026 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1031 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1036 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_AAnd :: T_BinOp+sem_BinOp_AAnd =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 869 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText (if cStyle _lhsIppconf then "&&" else "and")+                   {-# LINE 1053 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 870 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel2+                   {-# LINE 1058 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 871 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1063 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1068 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AAnd+                   {-# LINE 1073 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1078 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1083 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_ALT :: T_BinOp+sem_BinOp_ALT =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 851 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "<"+                   {-# LINE 1100 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 852 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel3+                   {-# LINE 1105 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 853 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1110 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1115 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ALT+                   {-# LINE 1120 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1125 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1130 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_AGT :: T_BinOp+sem_BinOp_AGT =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 857 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText ">"+                   {-# LINE 1147 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 858 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel3+                   {-# LINE 1152 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 859 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1157 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1162 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AGT+                   {-# LINE 1167 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1172 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1177 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_ALEQ :: T_BinOp+sem_BinOp_ALEQ =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 854 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "<="+                   {-# LINE 1194 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 855 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel3+                   {-# LINE 1199 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 856 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1204 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1209 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ALEQ+                   {-# LINE 1214 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1219 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1224 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_AGEQ :: T_BinOp+sem_BinOp_AGEQ =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 860 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText ">="+                   {-# LINE 1241 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 861 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel3+                   {-# LINE 1246 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 862 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1251 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1256 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AGEQ+                   {-# LINE 1261 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1266 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1271 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_ANEq :: T_BinOp+sem_BinOp_ANEq =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 866 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText (if cStyle _lhsIppconf then "!=" else "~=")+                   {-# LINE 1288 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 867 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel3+                   {-# LINE 1293 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 868 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1298 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1303 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ANEq+                   {-# LINE 1308 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1313 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1318 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_AEq :: T_BinOp+sem_BinOp_AEq =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 863 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "=="+                   {-# LINE 1335 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 864 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel3+                   {-# LINE 1340 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 865 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1345 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1350 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AEq+                   {-# LINE 1355 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1360 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1365 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_AConcatenate :: T_BinOp+sem_BinOp_AConcatenate =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 848 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText ".."+                   {-# LINE 1382 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 849 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel4+                   {-# LINE 1387 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 850 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1392 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1397 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AConcatenate+                   {-# LINE 1402 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1407 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1412 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_APlus :: T_BinOp+sem_BinOp_APlus =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 830 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "+"+                   {-# LINE 1429 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 831 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel5+                   {-# LINE 1434 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 832 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1439 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1444 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   APlus+                   {-# LINE 1449 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1454 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1459 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_BinMinus :: T_BinOp+sem_BinOp_BinMinus =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 833 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "-"+                   {-# LINE 1476 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 834 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel5+                   {-# LINE 1481 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 835 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1486 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1491 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   BinMinus+                   {-# LINE 1496 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1501 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1506 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_AMultiply :: T_BinOp+sem_BinOp_AMultiply =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 836 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "*"+                   {-# LINE 1523 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 837 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel6+                   {-# LINE 1528 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 838 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1533 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1538 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AMultiply+                   {-# LINE 1543 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1548 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1553 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_ADivide :: T_BinOp+sem_BinOp_ADivide =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 839 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "/"+                   {-# LINE 1570 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 840 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel6+                   {-# LINE 1575 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 841 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1580 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1585 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ADivide+                   {-# LINE 1590 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1595 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1600 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_AModulus :: T_BinOp+sem_BinOp_AModulus =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 842 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "%"+                   {-# LINE 1617 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 843 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel6+                   {-# LINE 1622 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 844 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1627 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1632 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AModulus+                   {-# LINE 1637 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1642 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1647 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_BinOp_APower :: T_BinOp+sem_BinOp_APower =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: BinOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 845 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "^"+                   {-# LINE 1664 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 846 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 1669 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 847 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1674 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 1679 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   APower+                   {-# LINE 1684 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1689 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1694 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+-- Block -------------------------------------------------------+-- cata+sem_Block :: Block ->+             T_Block+sem_Block (Block _stats _ret) =+    (sem_Block_Block (sem_MStatList _stats) (sem_AReturn _ret))+-- semantic domain+type T_Block = ([MToken]) ->+               Bool ->+               Int ->+               PrettyPrintConfig ->+               Region ->+               ( ([MToken]),Block,Bool,Bool,Doc,Int)+data Inh_Block = Inh_Block {comments_Inh_Block :: ([MToken]),forceMultiline_Inh_Block :: Bool,indent_Inh_Block :: Int,ppconf_Inh_Block :: PrettyPrintConfig,statRegion_Inh_Block :: Region}+data Syn_Block = Syn_Block {comments_Syn_Block :: ([MToken]),copy_Syn_Block :: Block,hasBreaking_Syn_Block :: Bool,isMultiline_Syn_Block :: Bool,pretty_Syn_Block :: Doc,statementCount_Syn_Block :: Int}+wrap_Block :: T_Block ->+              Inh_Block ->+              Syn_Block+wrap_Block sem (Inh_Block _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf _lhsIstatRegion) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstatementCount) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf _lhsIstatRegion+     in  (Syn_Block _lhsOcomments _lhsOcopy _lhsOhasBreaking _lhsOisMultiline _lhsOpretty _lhsOstatementCount))+sem_Block_Block :: T_MStatList ->+                   T_AReturn ->+                   T_Block+sem_Block_Block stats_ ret_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _statsOisHead :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOstatementCount :: Int+              _lhsOcopy :: Block+              _lhsOcomments :: ([MToken])+              _statsOcomments :: ([MToken])+              _statsOforceMultiline :: Bool+              _statsOindent :: Int+              _statsOppconf :: PrettyPrintConfig+              _statsOstatRegion :: Region+              _retOcomments :: ([MToken])+              _retOforceMultiline :: Bool+              _retOindent :: Int+              _retOppconf :: PrettyPrintConfig+              _statsIcomments :: ([MToken])+              _statsIcopy :: MStatList+              _statsIhasBreaking :: Bool+              _statsIisLast :: Bool+              _statsIisMultiline :: Bool+              _statsIpretty :: Doc+              _statsIstartsWithExprPrefixExpression :: Bool+              _statsIstatementCount :: Int+              _retIcomments :: ([MToken])+              _retIcopy :: AReturn+              _retIhasBreaking :: Bool+              _retIisMultiline :: Bool+              _retIpretty :: Doc+              _retIstatementCount :: Int+              _newl =+                  ({-# LINE 537 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _statsIstatementCount > 0 && _retIhasBreaking then zchr '\n' else empty+                   {-# LINE 1760 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 538 "src/GLua/AG/PrettyPrint.ag" #-}+                   _statsIpretty <> _newl     $+$ _retIpretty+                   {-# LINE 1765 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statsOisHead =+                  ({-# LINE 539 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1770 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 306 "src/GLua/AG/PrettyPrint.ag" #-}+                   _statsIhasBreaking || _retIhasBreaking+                   {-# LINE 1775 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _statsIisMultiline || _retIisMultiline+                   {-# LINE 1780 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstatementCount =+                  ({-# LINE 303 "src/GLua/AG/PrettyPrint.ag" #-}+                   _statsIstatementCount + _retIstatementCount+                   {-# LINE 1785 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   Block _statsIcopy _retIcopy+                   {-# LINE 1790 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1795 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _retIcomments+                   {-# LINE 1800 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1805 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statsOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 1810 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statsOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 1815 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statsOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 1820 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statsOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 1825 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _retOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _statsIcomments+                   {-# LINE 1830 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _retOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 1835 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _retOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 1840 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _retOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 1845 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _statsIcomments,_statsIcopy,_statsIhasBreaking,_statsIisLast,_statsIisMultiline,_statsIpretty,_statsIstartsWithExprPrefixExpression,_statsIstatementCount) =+                  stats_ _statsOcomments _statsOforceMultiline _statsOindent _statsOisHead _statsOppconf _statsOstatRegion+              ( _retIcomments,_retIcopy,_retIhasBreaking,_retIisMultiline,_retIpretty,_retIstatementCount) =+                  ret_ _retOcomments _retOforceMultiline _retOindent _retOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstatementCount)))+-- Declaration -------------------------------------------------+-- cata+sem_Declaration :: Declaration ->+                   T_Declaration+sem_Declaration ( x1,x2) =+    (sem_Declaration_Tuple (sem_PrefixExp x1) (sem_MaybeMExpr x2))+-- semantic domain+type T_Declaration = ([MToken]) ->+                     Bool ->+                     Int ->+                     PrettyPrintConfig ->+                     ( ([MToken]),Declaration,Bool,Doc,Bool,Bool,Doc,Bool,Doc)+data Inh_Declaration = Inh_Declaration {comments_Inh_Declaration :: ([MToken]),forceMultiline_Inh_Declaration :: Bool,indent_Inh_Declaration :: Int,ppconf_Inh_Declaration :: PrettyPrintConfig}+data Syn_Declaration = Syn_Declaration {comments_Syn_Declaration :: ([MToken]),copy_Syn_Declaration :: Declaration,endsWithPrefixExpression_Syn_Declaration :: Bool,exprPretty_Syn_Declaration :: Doc,isDefined_Syn_Declaration :: Bool,isMultiline_Syn_Declaration :: Bool,pretty_Syn_Declaration :: Doc,startsWithExprPrefixExpression_Syn_Declaration :: Bool,varPretty_Syn_Declaration :: Doc}+wrap_Declaration :: T_Declaration ->+                    Inh_Declaration ->+                    Syn_Declaration+wrap_Declaration sem (Inh_Declaration _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOexprPretty,_lhsOisDefined,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression,_lhsOvarPretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf+     in  (Syn_Declaration _lhsOcomments _lhsOcopy _lhsOendsWithPrefixExpression _lhsOexprPretty _lhsOisDefined _lhsOisMultiline _lhsOpretty _lhsOstartsWithExprPrefixExpression _lhsOvarPretty))+sem_Declaration_Tuple :: T_PrefixExp ->+                         T_MaybeMExpr ->+                         T_Declaration+sem_Declaration_Tuple x1_ x2_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOvarPretty :: Doc+              _lhsOexprPretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _x1OparentOperatorPrecedence :: OperatorLevel+              _x1OparentOperatorAssociative :: Bool+              _lhsOisDefined :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Declaration+              _lhsOcomments :: ([MToken])+              _lhsOpretty :: Doc+              _x1Ocomments :: ([MToken])+              _x1OforceMultiline :: Bool+              _x1Oindent :: Int+              _x1Oppconf :: PrettyPrintConfig+              _x2Ocomments :: ([MToken])+              _x2OforceMultiline :: Bool+              _x2Oindent :: Int+              _x2Oppconf :: PrettyPrintConfig+              _x1Icomments :: ([MToken])+              _x1Icopy :: PrefixExp+              _x1IisAssociative :: Bool+              _x1IisLiteral :: Bool+              _x1IisMultiline :: Bool+              _x1Iprecedence :: OperatorLevel+              _x1Ipretty :: Doc+              _x1IstartsWithExprPrefixExpression :: Bool+              _x2Icomments :: ([MToken])+              _x2Icopy :: MaybeMExpr+              _x2IendsWithPrefixExpression :: Bool+              _x2IisAssociative :: Bool+              _x2IisDefined :: Bool+              _x2IisMultiline :: Bool+              _x2Iprecedence :: OperatorLevel+              _x2Ipretty :: Doc+              _lhsOvarPretty =+                  ({-# LINE 468 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x1Ipretty+                   {-# LINE 1918 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOexprPretty =+                  ({-# LINE 469 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x2Ipretty+                   {-# LINE 1923 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 470 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x1IstartsWithExprPrefixExpression+                   {-# LINE 1928 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 471 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x2IendsWithPrefixExpression+                   {-# LINE 1933 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1OparentOperatorPrecedence =+                  ({-# LINE 472 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 1938 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1OparentOperatorAssociative =+                  ({-# LINE 473 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 1943 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisDefined =+                  ({-# LINE 275 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x2IisDefined+                   {-# LINE 1948 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x1IisMultiline || _x2IisMultiline+                   {-# LINE 1953 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   (_x1Icopy,_x2Icopy)+                   {-# LINE 1958 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 1963 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x2Icomments+                   {-# LINE 1968 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 248 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x2Ipretty+                   {-# LINE 1973 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1Ocomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 1978 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1OforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 1983 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1Oindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 1988 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1Oppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 1993 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x2Ocomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x1Icomments+                   {-# LINE 1998 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x2OforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 2003 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x2Oindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 2008 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x2Oppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 2013 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _x1Icomments,_x1Icopy,_x1IisAssociative,_x1IisLiteral,_x1IisMultiline,_x1Iprecedence,_x1Ipretty,_x1IstartsWithExprPrefixExpression) =+                  x1_ _x1Ocomments _x1OforceMultiline _x1Oindent _x1OparentOperatorAssociative _x1OparentOperatorPrecedence _x1Oppconf+              ( _x2Icomments,_x2Icopy,_x2IendsWithPrefixExpression,_x2IisAssociative,_x2IisDefined,_x2IisMultiline,_x2Iprecedence,_x2Ipretty) =+                  x2_ _x2Ocomments _x2OforceMultiline _x2Oindent _x2Oppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOexprPretty,_lhsOisDefined,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression,_lhsOvarPretty)))+-- Else --------------------------------------------------------+-- cata+sem_Else :: Else ->+            T_Else+sem_Else (Prelude.Just x) =+    (sem_Else_Just (sem_MElse x))+sem_Else Prelude.Nothing =+    sem_Else_Nothing+-- semantic domain+type T_Else = ([MToken]) ->+              Bool ->+              Int ->+              PrettyPrintConfig ->+              Region ->+              ( ([MToken]),Else,Bool,Bool,Region,Doc)+data Inh_Else = Inh_Else {comments_Inh_Else :: ([MToken]),forceMultiline_Inh_Else :: Bool,indent_Inh_Else :: Int,ppconf_Inh_Else :: PrettyPrintConfig,statRegion_Inh_Else :: Region}+data Syn_Else = Syn_Else {comments_Syn_Else :: ([MToken]),copy_Syn_Else :: Else,elsesExist_Syn_Else :: Bool,isMultiline_Syn_Else :: Bool,pos_Syn_Else :: Region,pretty_Syn_Else :: Doc}+wrap_Else :: T_Else ->+             Inh_Else ->+             Syn_Else+wrap_Else sem (Inh_Else _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf _lhsIstatRegion) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf _lhsIstatRegion+     in  (Syn_Else _lhsOcomments _lhsOcopy _lhsOelsesExist _lhsOisMultiline _lhsOpos _lhsOpretty))+sem_Else_Just :: T_MElse ->+                 T_Else+sem_Else_Just just_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOelsesExist :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Else+              _lhsOcomments :: ([MToken])+              _lhsOpos :: Region+              _lhsOpretty :: Doc+              _justOcomments :: ([MToken])+              _justOforceMultiline :: Bool+              _justOindent :: Int+              _justOppconf :: PrettyPrintConfig+              _justOstatRegion :: Region+              _justIcomments :: ([MToken])+              _justIcopy :: MElse+              _justIelsesExist :: Bool+              _justIisMultiline :: Bool+              _justIpos :: Region+              _justIpretty :: Doc+              _lhsOelsesExist =+                  ({-# LINE 513 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 2071 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _justIisMultiline+                   {-# LINE 2076 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   Just _justIcopy+                   {-# LINE 2081 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 2086 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _justIcomments+                   {-# LINE 2091 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpos =+                  ({-# LINE 287 "src/GLua/AG/PrettyPrint.ag" #-}+                   _justIpos+                   {-# LINE 2096 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 248 "src/GLua/AG/PrettyPrint.ag" #-}+                   _justIpretty+                   {-# LINE 2101 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _justOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 2106 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _justOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 2111 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _justOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 2116 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _justOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 2121 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _justOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 2126 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _justIcomments,_justIcopy,_justIelsesExist,_justIisMultiline,_justIpos,_justIpretty) =+                  just_ _justOcomments _justOforceMultiline _justOindent _justOppconf _justOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))+sem_Else_Nothing :: T_Else+sem_Else_Nothing =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOpos :: Region+              _lhsOelsesExist :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Else+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 514 "src/GLua/AG/PrettyPrint.ag" #-}+                   empty+                   {-# LINE 2147 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpos =+                  ({-# LINE 515 "src/GLua/AG/PrettyPrint.ag" #-}+                   emptyRg+                   {-# LINE 2152 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOelsesExist =+                  ({-# LINE 309 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2157 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2162 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   Nothing+                   {-# LINE 2167 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 2172 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 2177 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))+-- ElseIf ------------------------------------------------------+-- cata+sem_ElseIf :: ElseIf ->+              T_ElseIf+sem_ElseIf ( x1,x2) =+    (sem_ElseIf_Tuple (sem_MExpr x1) (sem_Block x2))+-- semantic domain+type T_ElseIf = ([MToken]) ->+                Bool ->+                Int ->+                PrettyPrintConfig ->+                ( ([MToken]),ElseIf,Bool,Doc)+data Inh_ElseIf = Inh_ElseIf {comments_Inh_ElseIf :: ([MToken]),forceMultiline_Inh_ElseIf :: Bool,indent_Inh_ElseIf :: Int,ppconf_Inh_ElseIf :: PrettyPrintConfig}+data Syn_ElseIf = Syn_ElseIf {comments_Syn_ElseIf :: ([MToken]),copy_Syn_ElseIf :: ElseIf,isMultiline_Syn_ElseIf :: Bool,pretty_Syn_ElseIf :: Doc}+wrap_ElseIf :: T_ElseIf ->+               Inh_ElseIf ->+               Syn_ElseIf+wrap_ElseIf sem (Inh_ElseIf _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf+     in  (Syn_ElseIf _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOpretty))+sem_ElseIf_Tuple :: T_MExpr ->+                    T_Block ->+                    T_ElseIf+sem_ElseIf_Tuple x1_ x2_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _x2Oindent :: Int+              _x2OstatRegion :: Region+              _x1OparentOperatorPrecedence :: OperatorLevel+              _x1OparentOperatorAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: ElseIf+              _lhsOcomments :: ([MToken])+              _x1Ocomments :: ([MToken])+              _x1OforceMultiline :: Bool+              _x1Oindent :: Int+              _x1Oppconf :: PrettyPrintConfig+              _x2Ocomments :: ([MToken])+              _x2OforceMultiline :: Bool+              _x2Oppconf :: PrettyPrintConfig+              _x1Icomments :: ([MToken])+              _x1Icopy :: MExpr+              _x1IendsWithPrefixExpression :: Bool+              _x1IisAssociative :: Bool+              _x1IisLiteral :: Bool+              _x1IisMultiline :: Bool+              _x1Ipos :: Region+              _x1Iprecedence :: OperatorLevel+              _x1Ipretty :: Doc+              _x2Icomments :: ([MToken])+              _x2Icopy :: Block+              _x2IhasBreaking :: Bool+              _x2IisMultiline :: Bool+              _x2Ipretty :: Doc+              _x2IstatementCount :: Int+              _lhsOpretty =+                  ({-# LINE 496 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "elseif" <-> _x1Ipretty <-> zeroWidthText "then" $+$ _x2Ipretty+                   {-# LINE 2241 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x2Oindent =+                  ({-# LINE 497 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent + 1+                   {-# LINE 2246 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x2OstatRegion =+                  ({-# LINE 498 "src/GLua/AG/PrettyPrint.ag" #-}+                   emptyRg+                   {-# LINE 2251 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1OparentOperatorPrecedence =+                  ({-# LINE 499 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 2256 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1OparentOperatorAssociative =+                  ({-# LINE 500 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 2261 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x1IisMultiline || _x2IisMultiline+                   {-# LINE 2266 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   (_x1Icopy,_x2Icopy)+                   {-# LINE 2271 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 2276 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x2Icomments+                   {-# LINE 2281 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1Ocomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 2286 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1OforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 2291 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1Oindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 2296 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x1Oppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 2301 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x2Ocomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _x1Icomments+                   {-# LINE 2306 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x2OforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 2311 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _x2Oppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 2316 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _x1Icomments,_x1Icopy,_x1IendsWithPrefixExpression,_x1IisAssociative,_x1IisLiteral,_x1IisMultiline,_x1Ipos,_x1Iprecedence,_x1Ipretty) =+                  x1_ _x1Ocomments _x1OforceMultiline _x1Oindent _x1OparentOperatorAssociative _x1OparentOperatorPrecedence _x1Oppconf+              ( _x2Icomments,_x2Icopy,_x2IhasBreaking,_x2IisMultiline,_x2Ipretty,_x2IstatementCount) =+                  x2_ _x2Ocomments _x2OforceMultiline _x2Oindent _x2Oppconf _x2OstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))+-- ElseIfList --------------------------------------------------+-- cata+sem_ElseIfList :: ElseIfList ->+                  T_ElseIfList+sem_ElseIfList list =+    (Prelude.foldr sem_ElseIfList_Cons sem_ElseIfList_Nil (Prelude.map sem_MElseIf list))+-- semantic domain+type T_ElseIfList = ([MToken]) ->+                    Bool ->+                    Int ->+                    PrettyPrintConfig ->+                    ( ([MToken]),ElseIfList,Bool,Bool,Region,Doc)+data Inh_ElseIfList = Inh_ElseIfList {comments_Inh_ElseIfList :: ([MToken]),forceMultiline_Inh_ElseIfList :: Bool,indent_Inh_ElseIfList :: Int,ppconf_Inh_ElseIfList :: PrettyPrintConfig}+data Syn_ElseIfList = Syn_ElseIfList {comments_Syn_ElseIfList :: ([MToken]),copy_Syn_ElseIfList :: ElseIfList,elsesExist_Syn_ElseIfList :: Bool,isMultiline_Syn_ElseIfList :: Bool,pos_Syn_ElseIfList :: Region,pretty_Syn_ElseIfList :: Doc}+wrap_ElseIfList :: T_ElseIfList ->+                   Inh_ElseIfList ->+                   Syn_ElseIfList+wrap_ElseIfList sem (Inh_ElseIfList _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf+     in  (Syn_ElseIfList _lhsOcomments _lhsOcopy _lhsOelsesExist _lhsOisMultiline _lhsOpos _lhsOpretty))+sem_ElseIfList_Cons :: T_MElseIf ->+                       T_ElseIfList ->+                       T_ElseIfList+sem_ElseIfList_Cons hd_ tl_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOelsesExist :: Bool+              _lhsOpos :: Region+              _lhsOisMultiline :: Bool+              _lhsOcopy :: ElseIfList+              _lhsOcomments :: ([MToken])+              _hdOcomments :: ([MToken])+              _hdOforceMultiline :: Bool+              _hdOindent :: Int+              _hdOppconf :: PrettyPrintConfig+              _tlOcomments :: ([MToken])+              _tlOforceMultiline :: Bool+              _tlOindent :: Int+              _tlOppconf :: PrettyPrintConfig+              _hdIcomments :: ([MToken])+              _hdIcopy :: MElseIf+              _hdIisMultiline :: Bool+              _hdIpos :: Region+              _hdIpretty :: Doc+              _tlIcomments :: ([MToken])+              _tlIcopy :: ElseIfList+              _tlIelsesExist :: Bool+              _tlIisMultiline :: Bool+              _tlIpos :: Region+              _tlIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 506 "src/GLua/AG/PrettyPrint.ag" #-}+                   indent _lhsIppconf _lhsIindent _hdIpretty $+$ _tlIpretty+                   {-# LINE 2379 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOelsesExist =+                  ({-# LINE 507 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 2384 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpos =+                  ({-# LINE 508 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIpos+                   {-# LINE 2389 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIisMultiline || _tlIisMultiline+                   {-# LINE 2394 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   (:) _hdIcopy _tlIcopy+                   {-# LINE 2399 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 2404 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _tlIcomments+                   {-# LINE 2409 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 2414 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 2419 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 2424 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 2429 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIcomments+                   {-# LINE 2434 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 2439 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 2444 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 2449 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _hdIcomments,_hdIcopy,_hdIisMultiline,_hdIpos,_hdIpretty) =+                  hd_ _hdOcomments _hdOforceMultiline _hdOindent _hdOppconf+              ( _tlIcomments,_tlIcopy,_tlIelsesExist,_tlIisMultiline,_tlIpos,_tlIpretty) =+                  tl_ _tlOcomments _tlOforceMultiline _tlOindent _tlOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))+sem_ElseIfList_Nil :: T_ElseIfList+sem_ElseIfList_Nil =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOpos :: Region+              _lhsOelsesExist :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: ElseIfList+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 509 "src/GLua/AG/PrettyPrint.ag" #-}+                   empty+                   {-# LINE 2471 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpos =+                  ({-# LINE 510 "src/GLua/AG/PrettyPrint.ag" #-}+                   emptyRg+                   {-# LINE 2476 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOelsesExist =+                  ({-# LINE 309 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2481 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2486 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   []+                   {-# LINE 2491 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 2496 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 2501 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))+-- Expr --------------------------------------------------------+-- cata+sem_Expr :: Expr ->+            T_Expr+sem_Expr (ANil) =+    (sem_Expr_ANil)+sem_Expr (AFalse) =+    (sem_Expr_AFalse)+sem_Expr (ATrue) =+    (sem_Expr_ATrue)+sem_Expr (ANumber _num) =+    (sem_Expr_ANumber _num)+sem_Expr (AString _str) =+    (sem_Expr_AString _str)+sem_Expr (AVarArg) =+    (sem_Expr_AVarArg)+sem_Expr (AnonymousFunc _pars _body) =+    (sem_Expr_AnonymousFunc _pars (sem_Block _body))+sem_Expr (APrefixExpr _pexpr) =+    (sem_Expr_APrefixExpr (sem_PrefixExp _pexpr))+sem_Expr (ATableConstructor _fields) =+    (sem_Expr_ATableConstructor (sem_FieldList _fields))+sem_Expr (BinOpExpr _op _left _right) =+    (sem_Expr_BinOpExpr (sem_BinOp _op) (sem_MExpr _left) (sem_MExpr _right))+sem_Expr (UnOpExpr _op _right) =+    (sem_Expr_UnOpExpr (sem_UnOp _op) (sem_MExpr _right))+-- semantic domain+type T_Expr = ([MToken]) ->+              Bool ->+              Int ->+              Bool ->+              OperatorLevel ->+              PrettyPrintConfig ->+              Region ->+              ( ([MToken]),Expr,Bool,Bool,Bool,Bool,OperatorLevel,Doc)+data Inh_Expr = Inh_Expr {comments_Inh_Expr :: ([MToken]),forceMultiline_Inh_Expr :: Bool,indent_Inh_Expr :: Int,parentOperatorAssociative_Inh_Expr :: Bool,parentOperatorPrecedence_Inh_Expr :: OperatorLevel,ppconf_Inh_Expr :: PrettyPrintConfig,statRegion_Inh_Expr :: Region}+data Syn_Expr = Syn_Expr {comments_Syn_Expr :: ([MToken]),copy_Syn_Expr :: Expr,endsWithPrefixExpression_Syn_Expr :: Bool,isAssociative_Syn_Expr :: Bool,isLiteral_Syn_Expr :: Bool,isMultiline_Syn_Expr :: Bool,precedence_Syn_Expr :: OperatorLevel,pretty_Syn_Expr :: Doc}+wrap_Expr :: T_Expr ->+             Inh_Expr ->+             Syn_Expr+wrap_Expr sem (Inh_Expr _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf _lhsIstatRegion) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf _lhsIstatRegion+     in  (Syn_Expr _lhsOcomments _lhsOcopy _lhsOendsWithPrefixExpression _lhsOisAssociative _lhsOisLiteral _lhsOisMultiline _lhsOprecedence _lhsOpretty))+sem_Expr_ANil :: T_Expr+sem_Expr_ANil =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOisLiteral :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: Expr+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 730 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "nil"+                   {-# LINE 2567 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 731 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 2572 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 732 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2577 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2582 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2587 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 2592 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ANil+                   {-# LINE 2597 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 2602 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 2607 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_Expr_AFalse :: T_Expr+sem_Expr_AFalse =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOisLiteral :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: Expr+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 733 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "false"+                   {-# LINE 2630 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 734 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 2635 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 735 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2640 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2645 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2650 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 2655 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AFalse+                   {-# LINE 2660 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 2665 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 2670 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_Expr_ATrue :: T_Expr+sem_Expr_ATrue =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOisLiteral :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: Expr+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 736 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "true"+                   {-# LINE 2693 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 737 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 2698 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 738 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2703 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2708 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2713 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 2718 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ATrue+                   {-# LINE 2723 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 2728 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 2733 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_Expr_ANumber :: String ->+                    T_Expr+sem_Expr_ANumber num_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOisLiteral :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: Expr+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 739 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText num_+                   {-# LINE 2757 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 740 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 2762 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 741 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2767 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2772 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2777 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 2782 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ANumber num_+                   {-# LINE 2787 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 2792 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 2797 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_Expr_AString :: MToken ->+                    T_Expr+sem_Expr_AString str_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOisLiteral :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: Expr+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 742 "src/GLua/AG/PrettyPrint.ag" #-}+                   tok str_+                   {-# LINE 2821 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 743 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 2826 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 744 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2831 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2836 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2841 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 2846 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AString str_+                   {-# LINE 2851 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 2856 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 2861 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_Expr_AVarArg :: T_Expr+sem_Expr_AVarArg =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOisLiteral :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: Expr+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 745 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "..."+                   {-# LINE 2884 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 746 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 2889 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 747 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2894 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2899 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2904 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 2909 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AVarArg+                   {-# LINE 2914 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 2919 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 2924 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_Expr_AnonymousFunc :: ([MToken]) ->+                          T_Block ->+                          T_Expr+sem_Expr_AnonymousFunc pars_ body_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOendsWithPrefixExpression :: Bool+              _bodyOindent :: Int+              _lhsOpretty :: Doc+              _lhsOisAssociative :: Bool+              _lhsOisLiteral :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: Expr+              _lhsOcomments :: ([MToken])+              _bodyOcomments :: ([MToken])+              _bodyOforceMultiline :: Bool+              _bodyOppconf :: PrettyPrintConfig+              _bodyOstatRegion :: Region+              _bodyIcomments :: ([MToken])+              _bodyIcopy :: Block+              _bodyIhasBreaking :: Bool+              _bodyIisMultiline :: Bool+              _bodyIpretty :: Doc+              _bodyIstatementCount :: Int+              _isMultiline =+                  ({-# LINE 748 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline || _bodyIisMultiline || _bodyIstatementCount > 1 || (_bodyIstatementCount == 1 && not _bodyIhasBreaking)+                   {-# LINE 2960 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 749 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 2965 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _singleLinePretty =+                  ({-# LINE 750 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "function" <> parens _lhsIppconf _emptyParams     (printList tok (render _comma    ) pars_) <-> _bodyIpretty <-> zeroWidthText "end"+                   {-# LINE 2970 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _multilinePretty =+                  ({-# LINE 751 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "function" <> parens _lhsIppconf _emptyParams     (printList tok (render _comma    ) pars_) $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")+                   {-# LINE 2975 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _comma =+                  ({-# LINE 752 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)+                   {-# LINE 2980 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _emptyParams =+                  ({-# LINE 753 "src/GLua/AG/PrettyPrint.ag" #-}+                   toEmpty $ null pars_+                   {-# LINE 2985 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOindent =+                  ({-# LINE 754 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _isMultiline     then _lhsIindent + 1 else 0+                   {-# LINE 2990 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 755 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _isMultiline     then _multilinePretty     else _singleLinePretty+                   {-# LINE 2995 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 3000 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 262 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 3005 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _isMultiline+                   {-# LINE 3010 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 3015 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AnonymousFunc pars_ _bodyIcopy+                   {-# LINE 3020 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 3025 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIcomments+                   {-# LINE 3030 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 3035 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 3040 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3045 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 3050 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =+                  body_ _bodyOcomments _bodyOforceMultiline _bodyOindent _bodyOppconf _bodyOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_Expr_APrefixExpr :: T_PrefixExp ->+                        T_Expr+sem_Expr_APrefixExpr pexpr_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisLiteral :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: Expr+              _lhsOcomments :: ([MToken])+              _pexprOcomments :: ([MToken])+              _pexprOforceMultiline :: Bool+              _pexprOindent :: Int+              _pexprOparentOperatorAssociative :: Bool+              _pexprOparentOperatorPrecedence :: OperatorLevel+              _pexprOppconf :: PrettyPrintConfig+              _pexprIcomments :: ([MToken])+              _pexprIcopy :: PrefixExp+              _pexprIisAssociative :: Bool+              _pexprIisLiteral :: Bool+              _pexprIisMultiline :: Bool+              _pexprIprecedence :: OperatorLevel+              _pexprIpretty :: Doc+              _pexprIstartsWithExprPrefixExpression :: Bool+              _lhsOpretty =+                  ({-# LINE 756 "src/GLua/AG/PrettyPrint.ag" #-}+                   _pexprIpretty+                   {-# LINE 3090 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 757 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 3095 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   _pexprIisAssociative+                   {-# LINE 3100 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 262 "src/GLua/AG/PrettyPrint.ag" #-}+                   _pexprIisLiteral+                   {-# LINE 3105 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _pexprIisMultiline+                   {-# LINE 3110 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   _pexprIprecedence+                   {-# LINE 3115 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   APrefixExpr _pexprIcopy+                   {-# LINE 3120 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 3125 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _pexprIcomments+                   {-# LINE 3130 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _pexprOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 3135 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _pexprOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 3140 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _pexprOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 3145 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _pexprOparentOperatorAssociative =+                  ({-# LINE 259 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIparentOperatorAssociative+                   {-# LINE 3150 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _pexprOparentOperatorPrecedence =+                  ({-# LINE 258 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIparentOperatorPrecedence+                   {-# LINE 3155 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _pexprOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3160 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _pexprIcomments,_pexprIcopy,_pexprIisAssociative,_pexprIisLiteral,_pexprIisMultiline,_pexprIprecedence,_pexprIpretty,_pexprIstartsWithExprPrefixExpression) =+                  pexpr_ _pexprOcomments _pexprOforceMultiline _pexprOindent _pexprOparentOperatorAssociative _pexprOparentOperatorPrecedence _pexprOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_Expr_ATableConstructor :: T_FieldList ->+                              T_Expr+sem_Expr_ATableConstructor fields_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOisLiteral :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _fieldsOindent :: Int+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: Expr+              _lhsOcomments :: ([MToken])+              _fieldsOcomments :: ([MToken])+              _fieldsOforceMultiline :: Bool+              _fieldsOppconf :: PrettyPrintConfig+              _fieldsIcanFitOnSameLine :: Bool+              _fieldsIcomments :: ([MToken])+              _fieldsIcopy :: FieldList+              _fieldsIisMultiline :: Bool+              _fieldsIisNil :: Bool+              _fieldsIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 759 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _isMultiline     then _prettyMulti     else _prettySingle+                   {-# LINE 3196 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _isMultiline =+                  ({-# LINE 760 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline || _fieldsIisMultiline+                   {-# LINE 3201 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 761 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 3206 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 762 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 3211 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettyMulti =+                  ({-# LINE 763 "src/GLua/AG/PrettyPrint.ag" #-}+                   zchr '{' $+$ indent _lhsIppconf (_lhsIindent + 1) _fieldsIpretty $+$ indent _lhsIppconf _lhsIindent (zchr '}')+                   {-# LINE 3216 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettySingle =+                  ({-# LINE 764 "src/GLua/AG/PrettyPrint.ag" #-}+                   braces _lhsIppconf _emptyContents     _fieldsIpretty+                   {-# LINE 3221 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _emptyContents =+                  ({-# LINE 765 "src/GLua/AG/PrettyPrint.ag" #-}+                   toEmpty $ null _fieldsIcopy+                   {-# LINE 3226 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _fieldsOindent =+                  ({-# LINE 766 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent + (if _fieldsIisMultiline then 1 else 0)+                   {-# LINE 3231 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 3236 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _isMultiline+                   {-# LINE 3241 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 3246 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ATableConstructor _fieldsIcopy+                   {-# LINE 3251 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 3256 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _fieldsIcomments+                   {-# LINE 3261 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _fieldsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 3266 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _fieldsOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 3271 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _fieldsOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3276 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _fieldsIcanFitOnSameLine,_fieldsIcomments,_fieldsIcopy,_fieldsIisMultiline,_fieldsIisNil,_fieldsIpretty) =+                  fields_ _fieldsOcomments _fieldsOforceMultiline _fieldsOindent _fieldsOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_Expr_BinOpExpr :: T_BinOp ->+                      T_MExpr ->+                      T_MExpr ->+                      T_Expr+sem_Expr_BinOpExpr op_ left_ right_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOprecedence :: OperatorLevel+              _leftOparentOperatorPrecedence :: OperatorLevel+              _rightOparentOperatorPrecedence :: OperatorLevel+              _leftOparentOperatorAssociative :: Bool+              _rightOparentOperatorAssociative :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisLiteral :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Expr+              _lhsOcomments :: ([MToken])+              _opOcomments :: ([MToken])+              _opOindent :: Int+              _opOppconf :: PrettyPrintConfig+              _leftOcomments :: ([MToken])+              _leftOforceMultiline :: Bool+              _leftOindent :: Int+              _leftOppconf :: PrettyPrintConfig+              _rightOcomments :: ([MToken])+              _rightOforceMultiline :: Bool+              _rightOindent :: Int+              _rightOppconf :: PrettyPrintConfig+              _opIcomments :: ([MToken])+              _opIcopy :: BinOp+              _opIisAssociative :: Bool+              _opIisMultiline :: Bool+              _opIprecedence :: OperatorLevel+              _opIpretty :: Doc+              _leftIcomments :: ([MToken])+              _leftIcopy :: MExpr+              _leftIendsWithPrefixExpression :: Bool+              _leftIisAssociative :: Bool+              _leftIisLiteral :: Bool+              _leftIisMultiline :: Bool+              _leftIpos :: Region+              _leftIprecedence :: OperatorLevel+              _leftIpretty :: Doc+              _rightIcomments :: ([MToken])+              _rightIcopy :: MExpr+              _rightIendsWithPrefixExpression :: Bool+              _rightIisAssociative :: Bool+              _rightIisLiteral :: Bool+              _rightIisMultiline :: Bool+              _rightIpos :: Region+              _rightIprecedence :: OperatorLevel+              _rightIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 767 "src/GLua/AG/PrettyPrint.ag" #-}+                   _leftIpretty <-> _opIpretty <-> _rightIpretty+                   {-# LINE 3343 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 768 "src/GLua/AG/PrettyPrint.ag" #-}+                   _rightIendsWithPrefixExpression+                   {-# LINE 3348 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 771 "src/GLua/AG/PrettyPrint.ag" #-}+                   min _opIprecedence $ min _leftIprecedence _rightIprecedence+                   {-# LINE 3353 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _leftOparentOperatorPrecedence =+                  ({-# LINE 772 "src/GLua/AG/PrettyPrint.ag" #-}+                   _opIprecedence+                   {-# LINE 3358 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOparentOperatorPrecedence =+                  ({-# LINE 773 "src/GLua/AG/PrettyPrint.ag" #-}+                   _opIprecedence+                   {-# LINE 3363 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _leftOparentOperatorAssociative =+                  ({-# LINE 774 "src/GLua/AG/PrettyPrint.ag" #-}+                   _opIisAssociative+                   {-# LINE 3368 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOparentOperatorAssociative =+                  ({-# LINE 775 "src/GLua/AG/PrettyPrint.ag" #-}+                   _opIisAssociative+                   {-# LINE 3373 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   _opIisAssociative && _leftIisAssociative && _rightIisAssociative+                   {-# LINE 3378 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 262 "src/GLua/AG/PrettyPrint.ag" #-}+                   ((\_ _ -> False) _leftIisLiteral _rightIisLiteral)+                   {-# LINE 3383 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _opIisMultiline || _leftIisMultiline || _rightIisMultiline+                   {-# LINE 3388 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   BinOpExpr _opIcopy _leftIcopy _rightIcopy+                   {-# LINE 3393 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 3398 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _rightIcomments+                   {-# LINE 3403 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _opOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 3408 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _opOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 3413 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _opOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3418 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _leftOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _opIcomments+                   {-# LINE 3423 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _leftOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 3428 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _leftOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 3433 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _leftOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3438 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _leftIcomments+                   {-# LINE 3443 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 3448 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 3453 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3458 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _opIcomments,_opIcopy,_opIisAssociative,_opIisMultiline,_opIprecedence,_opIpretty) =+                  op_ _opOcomments _opOindent _opOppconf+              ( _leftIcomments,_leftIcopy,_leftIendsWithPrefixExpression,_leftIisAssociative,_leftIisLiteral,_leftIisMultiline,_leftIpos,_leftIprecedence,_leftIpretty) =+                  left_ _leftOcomments _leftOforceMultiline _leftOindent _leftOparentOperatorAssociative _leftOparentOperatorPrecedence _leftOppconf+              ( _rightIcomments,_rightIcopy,_rightIendsWithPrefixExpression,_rightIisAssociative,_rightIisLiteral,_rightIisMultiline,_rightIpos,_rightIprecedence,_rightIpretty) =+                  right_ _rightOcomments _rightOforceMultiline _rightOindent _rightOparentOperatorAssociative _rightOparentOperatorPrecedence _rightOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_Expr_UnOpExpr :: T_UnOp ->+                     T_MExpr ->+                     T_Expr+sem_Expr_UnOpExpr op_ right_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOendsWithPrefixExpression :: Bool+              _rightOparentOperatorPrecedence :: OperatorLevel+              _lhsOisAssociative :: Bool+              _lhsOisLiteral :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Expr+              _lhsOcomments :: ([MToken])+              _opOcomments :: ([MToken])+              _opOindent :: Int+              _opOppconf :: PrettyPrintConfig+              _rightOcomments :: ([MToken])+              _rightOforceMultiline :: Bool+              _rightOindent :: Int+              _rightOparentOperatorAssociative :: Bool+              _rightOppconf :: PrettyPrintConfig+              _opIcomments :: ([MToken])+              _opIcopy :: UnOp+              _opIisMultiline :: Bool+              _opIpretty :: Doc+              _rightIcomments :: ([MToken])+              _rightIcopy :: MExpr+              _rightIendsWithPrefixExpression :: Bool+              _rightIisAssociative :: Bool+              _rightIisLiteral :: Bool+              _rightIisMultiline :: Bool+              _rightIpos :: Region+              _rightIprecedence :: OperatorLevel+              _rightIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 776 "src/GLua/AG/PrettyPrint.ag" #-}+                   _opIpretty <> _rightIpretty+                   {-# LINE 3511 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 777 "src/GLua/AG/PrettyPrint.ag" #-}+                   min _rightIprecedence OperatorLevel7+                   {-# LINE 3516 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 778 "src/GLua/AG/PrettyPrint.ag" #-}+                   _rightIendsWithPrefixExpression+                   {-# LINE 3521 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOparentOperatorPrecedence =+                  ({-# LINE 779 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel7+                   {-# LINE 3526 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   _rightIisAssociative+                   {-# LINE 3531 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 262 "src/GLua/AG/PrettyPrint.ag" #-}+                   _rightIisLiteral+                   {-# LINE 3536 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _opIisMultiline || _rightIisMultiline+                   {-# LINE 3541 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   UnOpExpr _opIcopy _rightIcopy+                   {-# LINE 3546 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 3551 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _rightIcomments+                   {-# LINE 3556 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _opOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 3561 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _opOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 3566 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _opOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3571 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _opIcomments+                   {-# LINE 3576 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 3581 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 3586 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOparentOperatorAssociative =+                  ({-# LINE 259 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIparentOperatorAssociative+                   {-# LINE 3591 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _rightOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3596 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _opIcomments,_opIcopy,_opIisMultiline,_opIpretty) =+                  op_ _opOcomments _opOindent _opOppconf+              ( _rightIcomments,_rightIcopy,_rightIendsWithPrefixExpression,_rightIisAssociative,_rightIisLiteral,_rightIisMultiline,_rightIpos,_rightIprecedence,_rightIpretty) =+                  right_ _rightOcomments _rightOforceMultiline _rightOindent _rightOparentOperatorAssociative _rightOparentOperatorPrecedence _rightOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+-- ExprSuffixList ----------------------------------------------+-- cata+sem_ExprSuffixList :: ExprSuffixList ->+                      T_ExprSuffixList+sem_ExprSuffixList list =+    (Prelude.foldr sem_ExprSuffixList_Cons sem_ExprSuffixList_Nil (Prelude.map sem_PFExprSuffix list))+-- semantic domain+type T_ExprSuffixList = ([MToken]) ->+                        Bool ->+                        Int ->+                        PrettyPrintConfig ->+                        ( ([MToken]),ExprSuffixList,Bool,Bool,OperatorLevel,Doc)+data Inh_ExprSuffixList = Inh_ExprSuffixList {comments_Inh_ExprSuffixList :: ([MToken]),forceMultiline_Inh_ExprSuffixList :: Bool,indent_Inh_ExprSuffixList :: Int,ppconf_Inh_ExprSuffixList :: PrettyPrintConfig}+data Syn_ExprSuffixList = Syn_ExprSuffixList {comments_Syn_ExprSuffixList :: ([MToken]),copy_Syn_ExprSuffixList :: ExprSuffixList,isAssociative_Syn_ExprSuffixList :: Bool,isMultiline_Syn_ExprSuffixList :: Bool,precedence_Syn_ExprSuffixList :: OperatorLevel,pretty_Syn_ExprSuffixList :: Doc}+wrap_ExprSuffixList :: T_ExprSuffixList ->+                       Inh_ExprSuffixList ->+                       Syn_ExprSuffixList+wrap_ExprSuffixList sem (Inh_ExprSuffixList _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf+     in  (Syn_ExprSuffixList _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisMultiline _lhsOprecedence _lhsOpretty))+sem_ExprSuffixList_Cons :: T_PFExprSuffix ->+                           T_ExprSuffixList ->+                           T_ExprSuffixList+sem_ExprSuffixList_Cons hd_ tl_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: ExprSuffixList+              _lhsOcomments :: ([MToken])+              _hdOcomments :: ([MToken])+              _hdOforceMultiline :: Bool+              _hdOindent :: Int+              _hdOppconf :: PrettyPrintConfig+              _tlOcomments :: ([MToken])+              _tlOforceMultiline :: Bool+              _tlOindent :: Int+              _tlOppconf :: PrettyPrintConfig+              _hdIcomments :: ([MToken])+              _hdIcopy :: PFExprSuffix+              _hdIisAssociative :: Bool+              _hdIisMultiline :: Bool+              _hdIprecedence :: OperatorLevel+              _hdIpretty :: Doc+              _tlIcomments :: ([MToken])+              _tlIcopy :: ExprSuffixList+              _tlIisAssociative :: Bool+              _tlIisMultiline :: Bool+              _tlIprecedence :: OperatorLevel+              _tlIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 526 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIpretty <> _tlIpretty+                   {-# LINE 3660 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIisAssociative && _tlIisAssociative+                   {-# LINE 3665 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIisMultiline || _tlIisMultiline+                   {-# LINE 3670 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   (min _hdIprecedence _tlIprecedence)+                   {-# LINE 3675 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   (:) _hdIcopy _tlIcopy+                   {-# LINE 3680 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 3685 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _tlIcomments+                   {-# LINE 3690 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 3695 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 3700 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 3705 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3710 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIcomments+                   {-# LINE 3715 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 3720 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 3725 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3730 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _hdIcomments,_hdIcopy,_hdIisAssociative,_hdIisMultiline,_hdIprecedence,_hdIpretty) =+                  hd_ _hdOcomments _hdOforceMultiline _hdOindent _hdOppconf+              ( _tlIcomments,_tlIcopy,_tlIisAssociative,_tlIisMultiline,_tlIprecedence,_tlIpretty) =+                  tl_ _tlOcomments _tlOforceMultiline _tlOindent _tlOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_ExprSuffixList_Nil :: T_ExprSuffixList+sem_ExprSuffixList_Nil =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: ExprSuffixList+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 527 "src/GLua/AG/PrettyPrint.ag" #-}+                   empty+                   {-# LINE 3752 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 3757 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 3762 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 3767 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   []+                   {-# LINE 3772 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 3777 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 3782 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+-- Field -------------------------------------------------------+-- cata+sem_Field :: Field ->+             T_Field+sem_Field (ExprField _key _value _sep) =+    (sem_Field_ExprField (sem_MExpr _key) (sem_MExpr _value) (sem_FieldSep _sep))+sem_Field (NamedField _key _value _sep) =+    (sem_Field_NamedField _key (sem_MExpr _value) (sem_FieldSep _sep))+sem_Field (UnnamedField _value _sep) =+    (sem_Field_UnnamedField (sem_MExpr _value) (sem_FieldSep _sep))+-- semantic domain+type T_Field = ([MToken]) ->+               Bool ->+               Int ->+               PrettyPrintConfig ->+               ( Bool,([MToken]),Field,Bool,Bool,Region,Doc)+data Inh_Field = Inh_Field {comments_Inh_Field :: ([MToken]),forceMultiline_Inh_Field :: Bool,indent_Inh_Field :: Int,ppconf_Inh_Field :: PrettyPrintConfig}+data Syn_Field = Syn_Field {canFitOnSameLine_Syn_Field :: Bool,comments_Syn_Field :: ([MToken]),copy_Syn_Field :: Field,isMultiline_Syn_Field :: Bool,isSemiColon_Syn_Field :: Bool,pos_Syn_Field :: Region,pretty_Syn_Field :: Doc}+wrap_Field :: T_Field ->+              Inh_Field ->+              Syn_Field+wrap_Field sem (Inh_Field _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf) =+    (let ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpos,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf+     in  (Syn_Field _lhsOcanFitOnSameLine _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOisSemiColon _lhsOpos _lhsOpretty))+sem_Field_ExprField :: T_MExpr ->+                       T_MExpr ->+                       T_FieldSep ->+                       T_Field+sem_Field_ExprField key_ value_ sep_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisMultiline :: Bool+              _lhsOcanFitOnSameLine :: Bool+              _keyOparentOperatorPrecedence :: OperatorLevel+              _keyOparentOperatorAssociative :: Bool+              _valueOparentOperatorPrecedence :: OperatorLevel+              _valueOparentOperatorAssociative :: Bool+              _lhsOisSemiColon :: Bool+              _lhsOcopy :: Field+              _lhsOcomments :: ([MToken])+              _lhsOpos :: Region+              _keyOcomments :: ([MToken])+              _keyOforceMultiline :: Bool+              _keyOindent :: Int+              _keyOppconf :: PrettyPrintConfig+              _valueOcomments :: ([MToken])+              _valueOforceMultiline :: Bool+              _valueOindent :: Int+              _valueOppconf :: PrettyPrintConfig+              _sepOindent :: Int+              _sepOppconf :: PrettyPrintConfig+              _keyIcomments :: ([MToken])+              _keyIcopy :: MExpr+              _keyIendsWithPrefixExpression :: Bool+              _keyIisAssociative :: Bool+              _keyIisLiteral :: Bool+              _keyIisMultiline :: Bool+              _keyIpos :: Region+              _keyIprecedence :: OperatorLevel+              _keyIpretty :: Doc+              _valueIcomments :: ([MToken])+              _valueIcopy :: MExpr+              _valueIendsWithPrefixExpression :: Bool+              _valueIisAssociative :: Bool+              _valueIisLiteral :: Bool+              _valueIisMultiline :: Bool+              _valueIpos :: Region+              _valueIprecedence :: OperatorLevel+              _valueIpretty :: Doc+              _sepIcanFitOnSameLine :: Bool+              _sepIcopy :: FieldSep+              _sepIisMultiline :: Bool+              _sepIisSemiColon :: Bool+              _sepIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 800 "src/GLua/AG/PrettyPrint.ag" #-}+                   brackets _lhsIppconf _keyIpretty <-> zchr '=' <-> _valueIpretty <> _sepIpretty+                   {-# LINE 3865 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 801 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 3870 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcanFitOnSameLine =+                  ({-# LINE 802 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 3875 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _keyOparentOperatorPrecedence =+                  ({-# LINE 803 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 3880 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _keyOparentOperatorAssociative =+                  ({-# LINE 804 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 3885 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOparentOperatorPrecedence =+                  ({-# LINE 805 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 3890 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOparentOperatorAssociative =+                  ({-# LINE 806 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 3895 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisSemiColon =+                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}+                   _sepIisSemiColon+                   {-# LINE 3900 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ExprField _keyIcopy _valueIcopy _sepIcopy+                   {-# LINE 3905 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 3910 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valueIcomments+                   {-# LINE 3915 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpos =+                  ({-# LINE 287 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valueIpos+                   {-# LINE 3920 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _keyOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 3925 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _keyOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 3930 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _keyOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 3935 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _keyOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3940 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _keyIcomments+                   {-# LINE 3945 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 3950 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 3955 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3960 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _sepOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 3965 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _sepOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 3970 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _keyIcomments,_keyIcopy,_keyIendsWithPrefixExpression,_keyIisAssociative,_keyIisLiteral,_keyIisMultiline,_keyIpos,_keyIprecedence,_keyIpretty) =+                  key_ _keyOcomments _keyOforceMultiline _keyOindent _keyOparentOperatorAssociative _keyOparentOperatorPrecedence _keyOppconf+              ( _valueIcomments,_valueIcopy,_valueIendsWithPrefixExpression,_valueIisAssociative,_valueIisLiteral,_valueIisMultiline,_valueIpos,_valueIprecedence,_valueIpretty) =+                  value_ _valueOcomments _valueOforceMultiline _valueOindent _valueOparentOperatorAssociative _valueOparentOperatorPrecedence _valueOppconf+              ( _sepIcanFitOnSameLine,_sepIcopy,_sepIisMultiline,_sepIisSemiColon,_sepIpretty) =+                  sep_ _sepOindent _sepOppconf+          in  ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpos,_lhsOpretty)))+sem_Field_NamedField :: MToken ->+                        T_MExpr ->+                        T_FieldSep ->+                        T_Field+sem_Field_NamedField key_ value_ sep_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisMultiline :: Bool+              _lhsOcanFitOnSameLine :: Bool+              _valueOparentOperatorPrecedence :: OperatorLevel+              _valueOparentOperatorAssociative :: Bool+              _lhsOisSemiColon :: Bool+              _lhsOcopy :: Field+              _lhsOcomments :: ([MToken])+              _lhsOpos :: Region+              _valueOcomments :: ([MToken])+              _valueOforceMultiline :: Bool+              _valueOindent :: Int+              _valueOppconf :: PrettyPrintConfig+              _sepOindent :: Int+              _sepOppconf :: PrettyPrintConfig+              _valueIcomments :: ([MToken])+              _valueIcopy :: MExpr+              _valueIendsWithPrefixExpression :: Bool+              _valueIisAssociative :: Bool+              _valueIisLiteral :: Bool+              _valueIisMultiline :: Bool+              _valueIpos :: Region+              _valueIprecedence :: OperatorLevel+              _valueIpretty :: Doc+              _sepIcanFitOnSameLine :: Bool+              _sepIcopy :: FieldSep+              _sepIisMultiline :: Bool+              _sepIisSemiColon :: Bool+              _sepIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 807 "src/GLua/AG/PrettyPrint.ag" #-}+                   tok key_ <-> zchr '=' <-> _valueIpretty <> _sepIpretty+                   {-# LINE 4020 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 808 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 4025 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcanFitOnSameLine =+                  ({-# LINE 809 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 4030 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOparentOperatorPrecedence =+                  ({-# LINE 810 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 4035 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOparentOperatorAssociative =+                  ({-# LINE 811 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 4040 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisSemiColon =+                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}+                   _sepIisSemiColon+                   {-# LINE 4045 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   NamedField key_ _valueIcopy _sepIcopy+                   {-# LINE 4050 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 4055 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valueIcomments+                   {-# LINE 4060 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpos =+                  ({-# LINE 287 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valueIpos+                   {-# LINE 4065 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 4070 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 4075 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 4080 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 4085 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _sepOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 4090 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _sepOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 4095 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _valueIcomments,_valueIcopy,_valueIendsWithPrefixExpression,_valueIisAssociative,_valueIisLiteral,_valueIisMultiline,_valueIpos,_valueIprecedence,_valueIpretty) =+                  value_ _valueOcomments _valueOforceMultiline _valueOindent _valueOparentOperatorAssociative _valueOparentOperatorPrecedence _valueOppconf+              ( _sepIcanFitOnSameLine,_sepIcopy,_sepIisMultiline,_sepIisSemiColon,_sepIpretty) =+                  sep_ _sepOindent _sepOppconf+          in  ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpos,_lhsOpretty)))+sem_Field_UnnamedField :: T_MExpr ->+                          T_FieldSep ->+                          T_Field+sem_Field_UnnamedField value_ sep_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOcanFitOnSameLine :: Bool+              _valueOparentOperatorPrecedence :: OperatorLevel+              _valueOparentOperatorAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOisSemiColon :: Bool+              _lhsOcopy :: Field+              _lhsOcomments :: ([MToken])+              _lhsOpos :: Region+              _valueOcomments :: ([MToken])+              _valueOforceMultiline :: Bool+              _valueOindent :: Int+              _valueOppconf :: PrettyPrintConfig+              _sepOindent :: Int+              _sepOppconf :: PrettyPrintConfig+              _valueIcomments :: ([MToken])+              _valueIcopy :: MExpr+              _valueIendsWithPrefixExpression :: Bool+              _valueIisAssociative :: Bool+              _valueIisLiteral :: Bool+              _valueIisMultiline :: Bool+              _valueIpos :: Region+              _valueIprecedence :: OperatorLevel+              _valueIpretty :: Doc+              _sepIcanFitOnSameLine :: Bool+              _sepIcopy :: FieldSep+              _sepIisMultiline :: Bool+              _sepIisSemiColon :: Bool+              _sepIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 812 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valueIpretty <> _sepIpretty+                   {-# LINE 4142 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcanFitOnSameLine =+                  ({-# LINE 813 "src/GLua/AG/PrettyPrint.ag" #-}+                   _sepIcanFitOnSameLine && not _valueIisMultiline+                   {-# LINE 4147 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOparentOperatorPrecedence =+                  ({-# LINE 814 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 4152 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOparentOperatorAssociative =+                  ({-# LINE 815 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 4157 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valueIisMultiline || _sepIisMultiline+                   {-# LINE 4162 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisSemiColon =+                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}+                   _sepIisSemiColon+                   {-# LINE 4167 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   UnnamedField _valueIcopy _sepIcopy+                   {-# LINE 4172 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 4177 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valueIcomments+                   {-# LINE 4182 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpos =+                  ({-# LINE 287 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valueIpos+                   {-# LINE 4187 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 4192 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 4197 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 4202 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valueOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 4207 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _sepOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 4212 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _sepOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 4217 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _valueIcomments,_valueIcopy,_valueIendsWithPrefixExpression,_valueIisAssociative,_valueIisLiteral,_valueIisMultiline,_valueIpos,_valueIprecedence,_valueIpretty) =+                  value_ _valueOcomments _valueOforceMultiline _valueOindent _valueOparentOperatorAssociative _valueOparentOperatorPrecedence _valueOppconf+              ( _sepIcanFitOnSameLine,_sepIcopy,_sepIisMultiline,_sepIisSemiColon,_sepIpretty) =+                  sep_ _sepOindent _sepOppconf+          in  ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpos,_lhsOpretty)))+-- FieldList ---------------------------------------------------+-- cata+sem_FieldList :: FieldList ->+                 T_FieldList+sem_FieldList list =+    (Prelude.foldr sem_FieldList_Cons sem_FieldList_Nil (Prelude.map sem_Field list))+-- semantic domain+type T_FieldList = ([MToken]) ->+                   Bool ->+                   Int ->+                   PrettyPrintConfig ->+                   ( Bool,([MToken]),FieldList,Bool,Bool,Doc)+data Inh_FieldList = Inh_FieldList {comments_Inh_FieldList :: ([MToken]),forceMultiline_Inh_FieldList :: Bool,indent_Inh_FieldList :: Int,ppconf_Inh_FieldList :: PrettyPrintConfig}+data Syn_FieldList = Syn_FieldList {canFitOnSameLine_Syn_FieldList :: Bool,comments_Syn_FieldList :: ([MToken]),copy_Syn_FieldList :: FieldList,isMultiline_Syn_FieldList :: Bool,isNil_Syn_FieldList :: Bool,pretty_Syn_FieldList :: Doc}+wrap_FieldList :: T_FieldList ->+                  Inh_FieldList ->+                  Syn_FieldList+wrap_FieldList sem (Inh_FieldList _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf) =+    (let ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisNil,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf+     in  (Syn_FieldList _lhsOcanFitOnSameLine _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOisNil _lhsOpretty))+sem_FieldList_Cons :: T_Field ->+                      T_FieldList ->+                      T_FieldList+sem_FieldList_Cons hd_ tl_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOcanFitOnSameLine :: Bool+              _lhsOisNil :: Bool+              _hdOcomments :: ([MToken])+              _lhsOisMultiline :: Bool+              _lhsOcopy :: FieldList+              _lhsOcomments :: ([MToken])+              _hdOforceMultiline :: Bool+              _hdOindent :: Int+              _hdOppconf :: PrettyPrintConfig+              _tlOcomments :: ([MToken])+              _tlOforceMultiline :: Bool+              _tlOindent :: Int+              _tlOppconf :: PrettyPrintConfig+              _hdIcanFitOnSameLine :: Bool+              _hdIcomments :: ([MToken])+              _hdIcopy :: Field+              _hdIisMultiline :: Bool+              _hdIisSemiColon :: Bool+              _hdIpos :: Region+              _hdIpretty :: Doc+              _tlIcanFitOnSameLine :: Bool+              _tlIcomments :: ([MToken])+              _tlIcopy :: FieldList+              _tlIisMultiline :: Bool+              _tlIisNil :: Bool+              _tlIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 423 "src/GLua/AG/PrettyPrint.ag" #-}+                   _prettyCommentsBefore     $+$ _indentAfterComment     (_hdIpretty <-> _prettyCommentsAfter    ) `_sep    ` _ind     _tlIpretty+                   {-# LINE 4282 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcanFitOnSameLine =+                  ({-# LINE 424 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIcanFitOnSameLine+                   {-# LINE 4287 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisNil =+                  ({-# LINE 425 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 4292 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOcomments =+                  ({-# LINE 427 "src/GLua/AG/PrettyPrint.ag" #-}+                   snd _commentsAfter+                   {-# LINE 4297 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _sep =+                  ({-# LINE 429 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _onSameLine     then _optionalSpaceAfterSep     else ($+$)+                   {-# LINE 4302 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _ind =+                  ({-# LINE 430 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _onSameLine     then id else indent _lhsIppconf _lhsIindent+                   {-# LINE 4307 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _onSameLine =+                  ({-# LINE 431 "src/GLua/AG/PrettyPrint.ag" #-}+                   (_hdIcanFitOnSameLine && null (fst _commentsAfter    ) && not _isMultiline    ) || _tlIisNil+                   {-# LINE 4312 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _optionalSpaceAfterSep =+                  ({-# LINE 433 "src/GLua/AG/PrettyPrint.ag" #-}+                   if spaceAfterComma _lhsIppconf then (<->) else (<>)+                   {-# LINE 4317 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _indentAfterComment =+                  ({-# LINE 434 "src/GLua/AG/PrettyPrint.ag" #-}+                   if null $ fst _commentsBefore     then id else indent _lhsIppconf _lhsIindent+                   {-# LINE 4322 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _isMultiline =+                  ({-# LINE 436 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline || _hdIisMultiline || _tlIisMultiline+                   {-# LINE 4327 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettyCommentsBefore =+                  ({-# LINE 438 "src/GLua/AG/PrettyPrint.ag" #-}+                   renderSLComments _lhsIppconf _lhsIindent (fst _commentsBefore    )+                   {-# LINE 4332 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettyCommentsAfter =+                  ({-# LINE 439 "src/GLua/AG/PrettyPrint.ag" #-}+                   renderSLComments _lhsIppconf _lhsIindent (fst _commentsAfter    )+                   {-# LINE 4337 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _commentsBefore =+                  ({-# LINE 440 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _isMultiline     then+                       span (\(MToken pos _) -> pos `before` _hdIpos) _lhsIcomments+                   else+                       ([], _lhsIcomments)+                   {-# LINE 4345 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _commentsAfter =+                  ({-# LINE 446 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _isMultiline     then+                       span (\(MToken pos _) -> pos `beforeOrOnLine` _hdIpos) (snd _commentsBefore    )+                   else+                       _commentsBefore+                   {-# LINE 4353 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _isMultiline+                   {-# LINE 4358 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   (:) _hdIcopy _tlIcopy+                   {-# LINE 4363 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 4368 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _tlIcomments+                   {-# LINE 4373 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 4378 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 4383 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 4388 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIcomments+                   {-# LINE 4393 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 4398 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 4403 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 4408 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _hdIcanFitOnSameLine,_hdIcomments,_hdIcopy,_hdIisMultiline,_hdIisSemiColon,_hdIpos,_hdIpretty) =+                  hd_ _hdOcomments _hdOforceMultiline _hdOindent _hdOppconf+              ( _tlIcanFitOnSameLine,_tlIcomments,_tlIcopy,_tlIisMultiline,_tlIisNil,_tlIpretty) =+                  tl_ _tlOcomments _tlOforceMultiline _tlOindent _tlOppconf+          in  ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisNil,_lhsOpretty)))+sem_FieldList_Nil :: T_FieldList+sem_FieldList_Nil =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisNil :: Bool+              _lhsOcanFitOnSameLine :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: FieldList+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 451 "src/GLua/AG/PrettyPrint.ag" #-}+                   empty+                   {-# LINE 4430 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisNil =+                  ({-# LINE 452 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 4435 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcanFitOnSameLine =+                  ({-# LINE 453 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 4440 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 4445 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   []+                   {-# LINE 4450 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 4455 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 4460 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcanFitOnSameLine,_lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOisNil,_lhsOpretty)))+-- FieldSep ----------------------------------------------------+-- cata+sem_FieldSep :: FieldSep ->+                T_FieldSep+sem_FieldSep (CommaSep) =+    (sem_FieldSep_CommaSep)+sem_FieldSep (SemicolonSep) =+    (sem_FieldSep_SemicolonSep)+sem_FieldSep (NoSep) =+    (sem_FieldSep_NoSep)+-- semantic domain+type T_FieldSep = Int ->+                  PrettyPrintConfig ->+                  ( Bool,FieldSep,Bool,Bool,Doc)+data Inh_FieldSep = Inh_FieldSep {indent_Inh_FieldSep :: Int,ppconf_Inh_FieldSep :: PrettyPrintConfig}+data Syn_FieldSep = Syn_FieldSep {canFitOnSameLine_Syn_FieldSep :: Bool,copy_Syn_FieldSep :: FieldSep,isMultiline_Syn_FieldSep :: Bool,isSemiColon_Syn_FieldSep :: Bool,pretty_Syn_FieldSep :: Doc}+wrap_FieldSep :: T_FieldSep ->+                 Inh_FieldSep ->+                 Syn_FieldSep+wrap_FieldSep sem (Inh_FieldSep _lhsIindent _lhsIppconf) =+    (let ( _lhsOcanFitOnSameLine,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpretty) = sem _lhsIindent _lhsIppconf+     in  (Syn_FieldSep _lhsOcanFitOnSameLine _lhsOcopy _lhsOisMultiline _lhsOisSemiColon _lhsOpretty))+sem_FieldSep_CommaSep :: T_FieldSep+sem_FieldSep_CommaSep =+    (\ _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOcanFitOnSameLine :: Bool+              _lhsOisMultiline :: Bool+              _lhsOisSemiColon :: Bool+              _lhsOcopy :: FieldSep+              _lhsOpretty =+                  ({-# LINE 818 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ','+                   {-# LINE 4497 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcanFitOnSameLine =+                  ({-# LINE 819 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 4502 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 4507 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisSemiColon =+                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 4512 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   CommaSep+                   {-# LINE 4517 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 4522 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcanFitOnSameLine,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpretty)))+sem_FieldSep_SemicolonSep :: T_FieldSep+sem_FieldSep_SemicolonSep =+    (\ _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisSemiColon :: Bool+              _lhsOcanFitOnSameLine :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: FieldSep+              _lhsOpretty =+                  ({-# LINE 820 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ';'+                   {-# LINE 4537 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisSemiColon =+                  ({-# LINE 821 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 4542 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcanFitOnSameLine =+                  ({-# LINE 824 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 4547 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 825 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 4552 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   SemicolonSep+                   {-# LINE 4557 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 4562 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcanFitOnSameLine,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpretty)))+sem_FieldSep_NoSep :: T_FieldSep+sem_FieldSep_NoSep =+    (\ _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOcanFitOnSameLine :: Bool+              _lhsOisMultiline :: Bool+              _lhsOisSemiColon :: Bool+              _lhsOcopy :: FieldSep+              _lhsOpretty =+                  ({-# LINE 826 "src/GLua/AG/PrettyPrint.ag" #-}+                   empty+                   {-# LINE 4577 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcanFitOnSameLine =+                  ({-# LINE 827 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 4582 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 4587 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisSemiColon =+                  ({-# LINE 296 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 4592 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   NoSep+                   {-# LINE 4597 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 4602 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcanFitOnSameLine,_lhsOcopy,_lhsOisMultiline,_lhsOisSemiColon,_lhsOpretty)))+-- FuncName ----------------------------------------------------+-- cata+sem_FuncName :: FuncName ->+                T_FuncName+sem_FuncName (FuncName _names _meta) =+    (sem_FuncName_FuncName _names _meta)+-- semantic domain+type T_FuncName = ([MToken]) ->+                  Int ->+                  PrettyPrintConfig ->+                  ( ([MToken]),FuncName,Bool,Doc)+data Inh_FuncName = Inh_FuncName {comments_Inh_FuncName :: ([MToken]),indent_Inh_FuncName :: Int,ppconf_Inh_FuncName :: PrettyPrintConfig}+data Syn_FuncName = Syn_FuncName {comments_Syn_FuncName :: ([MToken]),copy_Syn_FuncName :: FuncName,isMultiline_Syn_FuncName :: Bool,pretty_Syn_FuncName :: Doc}+wrap_FuncName :: T_FuncName ->+                 Inh_FuncName ->+                 Syn_FuncName+wrap_FuncName sem (Inh_FuncName _lhsIcomments _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf+     in  (Syn_FuncName _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOpretty))+sem_FuncName_FuncName :: ([MToken]) ->+                         (Maybe MToken) ->+                         T_FuncName+sem_FuncName_FuncName names_ meta_ =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisMultiline :: Bool+              _lhsOcopy :: FuncName+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 673 "src/GLua/AG/PrettyPrint.ag" #-}+                   printList tok "." names_ <> metaDoc meta_+                   {-# LINE 4638 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 4643 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   FuncName names_ meta_+                   {-# LINE 4648 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 4653 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 4658 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))+-- MElse -------------------------------------------------------+-- cata+sem_MElse :: MElse ->+             T_MElse+sem_MElse (MElse _pos _body) =+    (sem_MElse_MElse _pos (sem_Block _body))+-- semantic domain+type T_MElse = ([MToken]) ->+               Bool ->+               Int ->+               PrettyPrintConfig ->+               Region ->+               ( ([MToken]),MElse,Bool,Bool,Region,Doc)+data Inh_MElse = Inh_MElse {comments_Inh_MElse :: ([MToken]),forceMultiline_Inh_MElse :: Bool,indent_Inh_MElse :: Int,ppconf_Inh_MElse :: PrettyPrintConfig,statRegion_Inh_MElse :: Region}+data Syn_MElse = Syn_MElse {comments_Syn_MElse :: ([MToken]),copy_Syn_MElse :: MElse,elsesExist_Syn_MElse :: Bool,isMultiline_Syn_MElse :: Bool,pos_Syn_MElse :: Region,pretty_Syn_MElse :: Doc}+wrap_MElse :: T_MElse ->+              Inh_MElse ->+              Syn_MElse+wrap_MElse sem (Inh_MElse _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf _lhsIstatRegion) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf _lhsIstatRegion+     in  (Syn_MElse _lhsOcomments _lhsOcopy _lhsOelsesExist _lhsOisMultiline _lhsOpos _lhsOpretty))+sem_MElse_MElse :: Region ->+                   T_Block ->+                   T_MElse+sem_MElse_MElse pos_ body_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _bodyOindent :: Int+              _lhsOpos :: Region+              _bodyOcomments :: ([MToken])+              _lhsOelsesExist :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: MElse+              _lhsOcomments :: ([MToken])+              _bodyOforceMultiline :: Bool+              _bodyOppconf :: PrettyPrintConfig+              _bodyOstatRegion :: Region+              _bodyIcomments :: ([MToken])+              _bodyIcopy :: Block+              _bodyIhasBreaking :: Bool+              _bodyIisMultiline :: Bool+              _bodyIpretty :: Doc+              _bodyIstatementCount :: Int+              _lhsOpretty =+                  ({-# LINE 518 "src/GLua/AG/PrettyPrint.ag" #-}+                   indent _lhsIppconf _lhsIindent (zeroWidthText "else") <-> _prettyCommentsAfter     $+$ _bodyIpretty+                   {-# LINE 4711 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOindent =+                  ({-# LINE 519 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent + 1+                   {-# LINE 4716 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettyCommentsAfter =+                  ({-# LINE 520 "src/GLua/AG/PrettyPrint.ag" #-}+                   renderSLComments _lhsIppconf _lhsIindent (fst _commentsAfter    )+                   {-# LINE 4721 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _commentsAfter =+                  ({-# LINE 521 "src/GLua/AG/PrettyPrint.ag" #-}+                   span (\(MToken pos _) -> pos `beforeOrOnLine` pos_) _lhsIcomments+                   {-# LINE 4726 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpos =+                  ({-# LINE 522 "src/GLua/AG/PrettyPrint.ag" #-}+                   pos_+                   {-# LINE 4731 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOcomments =+                  ({-# LINE 523 "src/GLua/AG/PrettyPrint.ag" #-}+                   snd _commentsAfter+                   {-# LINE 4736 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOelsesExist =+                  ({-# LINE 309 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 4741 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIisMultiline+                   {-# LINE 4746 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   MElse pos_ _bodyIcopy+                   {-# LINE 4751 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 4756 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIcomments+                   {-# LINE 4761 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 4766 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 4771 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 4776 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =+                  body_ _bodyOcomments _bodyOforceMultiline _bodyOindent _bodyOppconf _bodyOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOelsesExist,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))+-- MElseIf -----------------------------------------------------+-- cata+sem_MElseIf :: MElseIf ->+               T_MElseIf+sem_MElseIf (MElseIf _pos _elif) =+    (sem_MElseIf_MElseIf _pos (sem_ElseIf _elif))+-- semantic domain+type T_MElseIf = ([MToken]) ->+                 Bool ->+                 Int ->+                 PrettyPrintConfig ->+                 ( ([MToken]),MElseIf,Bool,Region,Doc)+data Inh_MElseIf = Inh_MElseIf {comments_Inh_MElseIf :: ([MToken]),forceMultiline_Inh_MElseIf :: Bool,indent_Inh_MElseIf :: Int,ppconf_Inh_MElseIf :: PrettyPrintConfig}+data Syn_MElseIf = Syn_MElseIf {comments_Syn_MElseIf :: ([MToken]),copy_Syn_MElseIf :: MElseIf,isMultiline_Syn_MElseIf :: Bool,pos_Syn_MElseIf :: Region,pretty_Syn_MElseIf :: Doc}+wrap_MElseIf :: T_MElseIf ->+                Inh_MElseIf ->+                Syn_MElseIf+wrap_MElseIf sem (Inh_MElseIf _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpos,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf+     in  (Syn_MElseIf _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOpos _lhsOpretty))+sem_MElseIf_MElseIf :: Region ->+                       T_ElseIf ->+                       T_MElseIf+sem_MElseIf_MElseIf pos_ elif_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpos :: Region+              _lhsOisMultiline :: Bool+              _lhsOcopy :: MElseIf+              _lhsOcomments :: ([MToken])+              _lhsOpretty :: Doc+              _elifOcomments :: ([MToken])+              _elifOforceMultiline :: Bool+              _elifOindent :: Int+              _elifOppconf :: PrettyPrintConfig+              _elifIcomments :: ([MToken])+              _elifIcopy :: ElseIf+              _elifIisMultiline :: Bool+              _elifIpretty :: Doc+              _lhsOpos =+                  ({-# LINE 503 "src/GLua/AG/PrettyPrint.ag" #-}+                   pos_+                   {-# LINE 4825 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _elifIisMultiline+                   {-# LINE 4830 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   MElseIf pos_ _elifIcopy+                   {-# LINE 4835 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 4840 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _elifIcomments+                   {-# LINE 4845 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 248 "src/GLua/AG/PrettyPrint.ag" #-}+                   _elifIpretty+                   {-# LINE 4850 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elifOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 4855 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elifOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 4860 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elifOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 4865 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elifOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 4870 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _elifIcomments,_elifIcopy,_elifIisMultiline,_elifIpretty) =+                  elif_ _elifOcomments _elifOforceMultiline _elifOindent _elifOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpos,_lhsOpretty)))+-- MExpr -------------------------------------------------------+-- cata+sem_MExpr :: MExpr ->+             T_MExpr+sem_MExpr (MExpr _pos _expr) =+    (sem_MExpr_MExpr _pos (sem_Expr _expr))+-- semantic domain+type T_MExpr = ([MToken]) ->+               Bool ->+               Int ->+               Bool ->+               OperatorLevel ->+               PrettyPrintConfig ->+               ( ([MToken]),MExpr,Bool,Bool,Bool,Bool,Region,OperatorLevel,Doc)+data Inh_MExpr = Inh_MExpr {comments_Inh_MExpr :: ([MToken]),forceMultiline_Inh_MExpr :: Bool,indent_Inh_MExpr :: Int,parentOperatorAssociative_Inh_MExpr :: Bool,parentOperatorPrecedence_Inh_MExpr :: OperatorLevel,ppconf_Inh_MExpr :: PrettyPrintConfig}+data Syn_MExpr = Syn_MExpr {comments_Syn_MExpr :: ([MToken]),copy_Syn_MExpr :: MExpr,endsWithPrefixExpression_Syn_MExpr :: Bool,isAssociative_Syn_MExpr :: Bool,isLiteral_Syn_MExpr :: Bool,isMultiline_Syn_MExpr :: Bool,pos_Syn_MExpr :: Region,precedence_Syn_MExpr :: OperatorLevel,pretty_Syn_MExpr :: Doc}+wrap_MExpr :: T_MExpr ->+              Inh_MExpr ->+              Syn_MExpr+wrap_MExpr sem (Inh_MExpr _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOpos,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf+     in  (Syn_MExpr _lhsOcomments _lhsOcopy _lhsOendsWithPrefixExpression _lhsOisAssociative _lhsOisLiteral _lhsOisMultiline _lhsOpos _lhsOprecedence _lhsOpretty))+sem_MExpr_MExpr :: Region ->+                   T_Expr ->+                   T_MExpr+sem_MExpr_MExpr pos_ expr_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf ->+         (let _lhsOpos :: Region+              _lhsOendsWithPrefixExpression :: Bool+              _exprOstatRegion :: Region+              _lhsOisAssociative :: Bool+              _lhsOisLiteral :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: MExpr+              _lhsOcomments :: ([MToken])+              _lhsOpretty :: Doc+              _exprOcomments :: ([MToken])+              _exprOforceMultiline :: Bool+              _exprOindent :: Int+              _exprOparentOperatorAssociative :: Bool+              _exprOparentOperatorPrecedence :: OperatorLevel+              _exprOppconf :: PrettyPrintConfig+              _exprIcomments :: ([MToken])+              _exprIcopy :: Expr+              _exprIendsWithPrefixExpression :: Bool+              _exprIisAssociative :: Bool+              _exprIisLiteral :: Bool+              _exprIisMultiline :: Bool+              _exprIprecedence :: OperatorLevel+              _exprIpretty :: Doc+              _lhsOpos =+                  ({-# LINE 725 "src/GLua/AG/PrettyPrint.ag" #-}+                   pos_+                   {-# LINE 4934 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 726 "src/GLua/AG/PrettyPrint.ag" #-}+                   _exprIendsWithPrefixExpression+                   {-# LINE 4939 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOstatRegion =+                  ({-# LINE 727 "src/GLua/AG/PrettyPrint.ag" #-}+                   pos_+                   {-# LINE 4944 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   _exprIisAssociative+                   {-# LINE 4949 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 262 "src/GLua/AG/PrettyPrint.ag" #-}+                   _exprIisLiteral+                   {-# LINE 4954 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _exprIisMultiline+                   {-# LINE 4959 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   _exprIprecedence+                   {-# LINE 4964 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   MExpr pos_ _exprIcopy+                   {-# LINE 4969 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 4974 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _exprIcomments+                   {-# LINE 4979 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 248 "src/GLua/AG/PrettyPrint.ag" #-}+                   _exprIpretty+                   {-# LINE 4984 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 4989 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 4994 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 4999 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOparentOperatorAssociative =+                  ({-# LINE 259 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIparentOperatorAssociative+                   {-# LINE 5004 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOparentOperatorPrecedence =+                  ({-# LINE 258 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIparentOperatorPrecedence+                   {-# LINE 5009 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 5014 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _exprIcomments,_exprIcopy,_exprIendsWithPrefixExpression,_exprIisAssociative,_exprIisLiteral,_exprIisMultiline,_exprIprecedence,_exprIpretty) =+                  expr_ _exprOcomments _exprOforceMultiline _exprOindent _exprOparentOperatorAssociative _exprOparentOperatorPrecedence _exprOppconf _exprOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOpos,_lhsOprecedence,_lhsOpretty)))+-- MExprList ---------------------------------------------------+-- cata+sem_MExprList :: MExprList ->+                 T_MExprList+sem_MExprList list =+    (Prelude.foldr sem_MExprList_Cons sem_MExprList_Nil (Prelude.map sem_MExpr list))+-- semantic domain+type T_MExprList = ([MToken]) ->+                   Bool ->+                   Int ->+                   Bool ->+                   PrettyPrintConfig ->+                   ( ([MToken]),MExprList,Bool,Bool,Region,OperatorLevel,Doc)+data Inh_MExprList = Inh_MExprList {comments_Inh_MExprList :: ([MToken]),forceMultiline_Inh_MExprList :: Bool,indent_Inh_MExprList :: Int,isHead_Inh_MExprList :: Bool,ppconf_Inh_MExprList :: PrettyPrintConfig}+data Syn_MExprList = Syn_MExprList {comments_Syn_MExprList :: ([MToken]),copy_Syn_MExprList :: MExprList,isAssociative_Syn_MExprList :: Bool,isMultiline_Syn_MExprList :: Bool,pos_Syn_MExprList :: Region,precedence_Syn_MExprList :: OperatorLevel,pretty_Syn_MExprList :: Doc}+wrap_MExprList :: T_MExprList ->+                  Inh_MExprList ->+                  Syn_MExprList+wrap_MExprList sem (Inh_MExprList _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIisHead _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOpos,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIisHead _lhsIppconf+     in  (Syn_MExprList _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisMultiline _lhsOpos _lhsOprecedence _lhsOpretty))+sem_MExprList_Cons :: T_MExpr ->+                      T_MExprList ->+                      T_MExprList+sem_MExprList_Cons hd_ tl_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisHead+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _tlOisHead :: Bool+              _lhsOpos :: Region+              _hdOparentOperatorPrecedence :: OperatorLevel+              _hdOparentOperatorAssociative :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: MExprList+              _lhsOcomments :: ([MToken])+              _hdOcomments :: ([MToken])+              _hdOforceMultiline :: Bool+              _hdOindent :: Int+              _hdOppconf :: PrettyPrintConfig+              _tlOcomments :: ([MToken])+              _tlOforceMultiline :: Bool+              _tlOindent :: Int+              _tlOppconf :: PrettyPrintConfig+              _hdIcomments :: ([MToken])+              _hdIcopy :: MExpr+              _hdIendsWithPrefixExpression :: Bool+              _hdIisAssociative :: Bool+              _hdIisLiteral :: Bool+              _hdIisMultiline :: Bool+              _hdIpos :: Region+              _hdIprecedence :: OperatorLevel+              _hdIpretty :: Doc+              _tlIcomments :: ([MToken])+              _tlIcopy :: MExprList+              _tlIisAssociative :: Bool+              _tlIisMultiline :: Bool+              _tlIpos :: Region+              _tlIprecedence :: OperatorLevel+              _tlIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 398 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _lhsIisHead then+                       _hdIpretty <> _tlIpretty+                   else+                       if _isMultiline     then _prettyMultiLine     else _prettySingleLine+                   {-# LINE 5089 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettySingleLine =+                  ({-# LINE 403 "src/GLua/AG/PrettyPrint.ag" #-}+                   _comma     <>+                   (if spaceAfterComma _lhsIppconf then zchr ' ' else empty) <>+                   _hdIpretty <>+                   _tlIpretty+                   {-# LINE 5097 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettyMultiLine =+                  ({-# LINE 408 "src/GLua/AG/PrettyPrint.ag" #-}+                   _comma     $+$+                   indent _lhsIppconf _lhsIindent _hdIpretty <>+                   _tlIpretty+                   {-# LINE 5104 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _comma =+                  ({-# LINE 412 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ','+                   {-# LINE 5109 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOisHead =+                  ({-# LINE 414 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5114 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpos =+                  ({-# LINE 415 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIpos+                   {-# LINE 5119 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOparentOperatorPrecedence =+                  ({-# LINE 416 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 5124 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOparentOperatorAssociative =+                  ({-# LINE 417 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 5129 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _isMultiline =+                  ({-# LINE 418 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline || _hdIisMultiline || _tlIisMultiline+                   {-# LINE 5134 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIisAssociative && _tlIisAssociative+                   {-# LINE 5139 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _isMultiline+                   {-# LINE 5144 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   (min _hdIprecedence _tlIprecedence)+                   {-# LINE 5149 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   (:) _hdIcopy _tlIcopy+                   {-# LINE 5154 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 5159 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _tlIcomments+                   {-# LINE 5164 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 5169 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 5174 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 5179 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 5184 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIcomments+                   {-# LINE 5189 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 5194 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 5199 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 5204 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _hdIcomments,_hdIcopy,_hdIendsWithPrefixExpression,_hdIisAssociative,_hdIisLiteral,_hdIisMultiline,_hdIpos,_hdIprecedence,_hdIpretty) =+                  hd_ _hdOcomments _hdOforceMultiline _hdOindent _hdOparentOperatorAssociative _hdOparentOperatorPrecedence _hdOppconf+              ( _tlIcomments,_tlIcopy,_tlIisAssociative,_tlIisMultiline,_tlIpos,_tlIprecedence,_tlIpretty) =+                  tl_ _tlOcomments _tlOforceMultiline _tlOindent _tlOisHead _tlOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOpos,_lhsOprecedence,_lhsOpretty)))+sem_MExprList_Nil :: T_MExprList+sem_MExprList_Nil =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisHead+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOpos :: Region+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: MExprList+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 419 "src/GLua/AG/PrettyPrint.ag" #-}+                   empty+                   {-# LINE 5228 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpos =+                  ({-# LINE 420 "src/GLua/AG/PrettyPrint.ag" #-}+                   emptyRg+                   {-# LINE 5233 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5238 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5243 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 5248 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   []+                   {-# LINE 5253 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 5258 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 5263 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOpos,_lhsOprecedence,_lhsOpretty)))+-- MStat -------------------------------------------------------+-- cata+sem_MStat :: MStat ->+             T_MStat+sem_MStat (MStat _pos _stat) =+    (sem_MStat_MStat _pos (sem_Stat _stat))+-- semantic domain+type T_MStat = ([MToken]) ->+               Bool ->+               Int ->+               Bool ->+               PrettyPrintConfig ->+               Bool ->+               ( ([MToken]),MStat,Bool,Bool,Bool,Region,Doc,Bool,Int)+data Inh_MStat = Inh_MStat {comments_Inh_MStat :: ([MToken]),forceMultiline_Inh_MStat :: Bool,indent_Inh_MStat :: Int,isLastStatement_Inh_MStat :: Bool,ppconf_Inh_MStat :: PrettyPrintConfig,wouldBeAmbiguousWithoutSemicolon_Inh_MStat :: Bool}+data Syn_MStat = Syn_MStat {comments_Syn_MStat :: ([MToken]),copy_Syn_MStat :: MStat,endsWithPrefixExpression_Syn_MStat :: Bool,hasBreaking_Syn_MStat :: Bool,isMultiline_Syn_MStat :: Bool,pos_Syn_MStat :: Region,pretty_Syn_MStat :: Doc,startsWithExprPrefixExpression_Syn_MStat :: Bool,statementCount_Syn_MStat :: Int}+wrap_MStat :: T_MStat ->+              Inh_MStat ->+              Syn_MStat+wrap_MStat sem (Inh_MStat _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIisLastStatement _lhsIppconf _lhsIwouldBeAmbiguousWithoutSemicolon) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpos,_lhsOpretty,_lhsOstartsWithExprPrefixExpression,_lhsOstatementCount) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIisLastStatement _lhsIppconf _lhsIwouldBeAmbiguousWithoutSemicolon+     in  (Syn_MStat _lhsOcomments _lhsOcopy _lhsOendsWithPrefixExpression _lhsOhasBreaking _lhsOisMultiline _lhsOpos _lhsOpretty _lhsOstartsWithExprPrefixExpression _lhsOstatementCount))+sem_MStat_MStat :: Region ->+                   T_Stat ->+                   T_MStat+sem_MStat_MStat pos_ stat_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOpos :: Region+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _statOstatRegion :: Region+              _statOwouldBeAmbiguousWithoutSemicolon :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOstatementCount :: Int+              _lhsOcopy :: MStat+              _lhsOcomments :: ([MToken])+              _lhsOpretty :: Doc+              _statOcomments :: ([MToken])+              _statOforceMultiline :: Bool+              _statOindent :: Int+              _statOisLastStatement :: Bool+              _statOppconf :: PrettyPrintConfig+              _statIcomments :: ([MToken])+              _statIcopy :: Stat+              _statIendsWithPrefixExpression :: Bool+              _statIhasBreaking :: Bool+              _statIisMultiline :: Bool+              _statIpretty :: Doc+              _statIstartsWithExprPrefixExpression :: Bool+              _lhsOpos =+                  ({-# LINE 391 "src/GLua/AG/PrettyPrint.ag" #-}+                   pos_+                   {-# LINE 5324 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 392 "src/GLua/AG/PrettyPrint.ag" #-}+                   _statIstartsWithExprPrefixExpression+                   {-# LINE 5329 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 393 "src/GLua/AG/PrettyPrint.ag" #-}+                   _statIendsWithPrefixExpression+                   {-# LINE 5334 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statOstatRegion =+                  ({-# LINE 394 "src/GLua/AG/PrettyPrint.ag" #-}+                   pos_+                   {-# LINE 5339 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statOwouldBeAmbiguousWithoutSemicolon =+                  ({-# LINE 395 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIwouldBeAmbiguousWithoutSemicolon+                   {-# LINE 5344 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 306 "src/GLua/AG/PrettyPrint.ag" #-}+                   _statIhasBreaking+                   {-# LINE 5349 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _statIisMultiline+                   {-# LINE 5354 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstatementCount =+                  ({-# LINE 303 "src/GLua/AG/PrettyPrint.ag" #-}+                   1+                   {-# LINE 5359 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   MStat pos_ _statIcopy+                   {-# LINE 5364 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 5369 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _statIcomments+                   {-# LINE 5374 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 248 "src/GLua/AG/PrettyPrint.ag" #-}+                   _statIpretty+                   {-# LINE 5379 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 5384 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 5389 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 5394 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statOisLastStatement =+                  ({-# LINE 284 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIisLastStatement+                   {-# LINE 5399 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _statOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 5404 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _statIcomments,_statIcopy,_statIendsWithPrefixExpression,_statIhasBreaking,_statIisMultiline,_statIpretty,_statIstartsWithExprPrefixExpression) =+                  stat_ _statOcomments _statOforceMultiline _statOindent _statOisLastStatement _statOppconf _statOstatRegion _statOwouldBeAmbiguousWithoutSemicolon+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpos,_lhsOpretty,_lhsOstartsWithExprPrefixExpression,_lhsOstatementCount)))+-- MStatList ---------------------------------------------------+-- cata+sem_MStatList :: MStatList ->+                 T_MStatList+sem_MStatList list =+    (Prelude.foldr sem_MStatList_Cons sem_MStatList_Nil (Prelude.map sem_MStat list))+-- semantic domain+type T_MStatList = ([MToken]) ->+                   Bool ->+                   Int ->+                   Bool ->+                   PrettyPrintConfig ->+                   Region ->+                   ( ([MToken]),MStatList,Bool,Bool,Bool,Doc,Bool,Int)+data Inh_MStatList = Inh_MStatList {comments_Inh_MStatList :: ([MToken]),forceMultiline_Inh_MStatList :: Bool,indent_Inh_MStatList :: Int,isHead_Inh_MStatList :: Bool,ppconf_Inh_MStatList :: PrettyPrintConfig,statRegion_Inh_MStatList :: Region}+data Syn_MStatList = Syn_MStatList {comments_Syn_MStatList :: ([MToken]),copy_Syn_MStatList :: MStatList,hasBreaking_Syn_MStatList :: Bool,isLast_Syn_MStatList :: Bool,isMultiline_Syn_MStatList :: Bool,pretty_Syn_MStatList :: Doc,startsWithExprPrefixExpression_Syn_MStatList :: Bool,statementCount_Syn_MStatList :: Int}+wrap_MStatList :: T_MStatList ->+                  Inh_MStatList ->+                  Syn_MStatList+wrap_MStatList sem (Inh_MStatList _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIisHead _lhsIppconf _lhsIstatRegion) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisLast,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression,_lhsOstatementCount) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIisHead _lhsIppconf _lhsIstatRegion+     in  (Syn_MStatList _lhsOcomments _lhsOcopy _lhsOhasBreaking _lhsOisLast _lhsOisMultiline _lhsOpretty _lhsOstartsWithExprPrefixExpression _lhsOstatementCount))+sem_MStatList_Cons :: T_MStat ->+                      T_MStatList ->+                      T_MStatList+sem_MStatList_Cons hd_ tl_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisHead+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOisMultiline :: Bool+              _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _hdOcomments :: ([MToken])+              _tlOcomments :: ([MToken])+              _tlOisHead :: Bool+              _hdOisLastStatement :: Bool+              _hdOwouldBeAmbiguousWithoutSemicolon :: Bool+              _hdOforceMultiline :: Bool+              _lhsOisLast :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOstatementCount :: Int+              _lhsOcopy :: MStatList+              _lhsOcomments :: ([MToken])+              _hdOindent :: Int+              _hdOppconf :: PrettyPrintConfig+              _tlOforceMultiline :: Bool+              _tlOindent :: Int+              _tlOppconf :: PrettyPrintConfig+              _tlOstatRegion :: Region+              _hdIcomments :: ([MToken])+              _hdIcopy :: MStat+              _hdIendsWithPrefixExpression :: Bool+              _hdIhasBreaking :: Bool+              _hdIisMultiline :: Bool+              _hdIpos :: Region+              _hdIpretty :: Doc+              _hdIstartsWithExprPrefixExpression :: Bool+              _hdIstatementCount :: Int+              _tlIcomments :: ([MToken])+              _tlIcopy :: MStatList+              _tlIhasBreaking :: Bool+              _tlIisLast :: Bool+              _tlIisMultiline :: Bool+              _tlIpretty :: Doc+              _tlIstartsWithExprPrefixExpression :: Bool+              _tlIstatementCount :: Int+              _lhsOisMultiline =+                  ({-# LINE 348 "src/GLua/AG/PrettyPrint.ag" #-}+                   _tlIisMultiline+                   {-# LINE 5481 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _addNewline =+                  ({-# LINE 349 "src/GLua/AG/PrettyPrint.ag" #-}+                   if not _tlIisLast && (_hdIisMultiline || _tlIisMultiline) then zchr '\n' else empty+                   {-# LINE 5486 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 350 "src/GLua/AG/PrettyPrint.ag" #-}+                   _prettyCommentsBefore+                   $+$ indent _lhsIppconf _lhsIindent _hdIpretty+                   <-> _prettyCommentsAfter     <> _addNewline+                   $+$ _tlIpretty+                   {-# LINE 5494 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 355 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIstartsWithExprPrefixExpression+                   {-# LINE 5499 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettyCommentsBefore =+                  ({-# LINE 357 "src/GLua/AG/PrettyPrint.ag" #-}+                   renderMLComments _lhsIppconf _lhsIindent (fst _commentsBefore    )+                   {-# LINE 5504 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _prettyCommentsAfter =+                  ({-# LINE 358 "src/GLua/AG/PrettyPrint.ag" #-}+                   renderSLComments _lhsIppconf _lhsIindent (fst _commentsAfter    )+                   {-# LINE 5509 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _commentsBefore =+                  ({-# LINE 359 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _hdIisMultiline+                   then span (\(MToken pos' _) -> pos' `beforeOrOnLine` _hdIpos) _lhsIcomments+                   else _commentsBeforeLine+                   {-# LINE 5516 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _commentsAfter =+                  ({-# LINE 363 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _hdIisMultiline+                   then span (\(MToken pos' _) -> pos' `beforeOrOnLine` _hdIpos) (snd _commentsBefore    )+                   else span (\(MToken pos' _) -> pos' `beforeEndLine`  _hdIpos) (snd _commentsBefore    )+                   {-# LINE 5523 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _commentsBeforeLine =+                  ({-# LINE 367 "src/GLua/AG/PrettyPrint.ag" #-}+                   span (\(MToken pos' _) -> pos' `before` _hdIpos) _lhsIcomments+                   {-# LINE 5528 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOcomments =+                  ({-# LINE 368 "src/GLua/AG/PrettyPrint.ag" #-}+                   snd _commentsAfter+                   {-# LINE 5533 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOcomments =+                  ({-# LINE 369 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIcomments+                   {-# LINE 5538 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOisHead =+                  ({-# LINE 371 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5543 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOisLastStatement =+                  ({-# LINE 372 "src/GLua/AG/PrettyPrint.ag" #-}+                   _tlIisLast+                   {-# LINE 5548 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOwouldBeAmbiguousWithoutSemicolon =+                  ({-# LINE 377 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIendsWithPrefixExpression && _tlIstartsWithExprPrefixExpression+                   {-# LINE 5553 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOforceMultiline =+                  ({-# LINE 379 "src/GLua/AG/PrettyPrint.ag" #-}+                   commentsForceMultiline $ fst _commentsBeforeLine+                   {-# LINE 5558 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLast =+                  ({-# LINE 380 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5563 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 306 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIhasBreaking || _tlIhasBreaking+                   {-# LINE 5568 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstatementCount =+                  ({-# LINE 303 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIstatementCount + _tlIstatementCount+                   {-# LINE 5573 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   (:) _hdIcopy _tlIcopy+                   {-# LINE 5578 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 5583 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _tlIcomments+                   {-# LINE 5588 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 5593 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 5598 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 5603 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 5608 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 5613 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 5618 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _hdIcomments,_hdIcopy,_hdIendsWithPrefixExpression,_hdIhasBreaking,_hdIisMultiline,_hdIpos,_hdIpretty,_hdIstartsWithExprPrefixExpression,_hdIstatementCount) =+                  hd_ _hdOcomments _hdOforceMultiline _hdOindent _hdOisLastStatement _hdOppconf _hdOwouldBeAmbiguousWithoutSemicolon+              ( _tlIcomments,_tlIcopy,_tlIhasBreaking,_tlIisLast,_tlIisMultiline,_tlIpretty,_tlIstartsWithExprPrefixExpression,_tlIstatementCount) =+                  tl_ _tlOcomments _tlOforceMultiline _tlOindent _tlOisHead _tlOppconf _tlOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisLast,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression,_lhsOstatementCount)))+sem_MStatList_Nil :: T_MStatList+sem_MStatList_Nil =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisHead+       _lhsIppconf+       _lhsIstatRegion ->+         (let _lhsOpretty :: Doc+              _lhsOstatementCount :: Int+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOcomments :: ([MToken])+              _lhsOhasBreaking :: Bool+              _lhsOisLast :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: MStatList+              _lhsOpretty =+                  ({-# LINE 381 "src/GLua/AG/PrettyPrint.ag" #-}+                   _renderedComments+                   {-# LINE 5644 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstatementCount =+                  ({-# LINE 382 "src/GLua/AG/PrettyPrint.ag" #-}+                   0+                   {-# LINE 5649 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 383 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5654 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _renderedComments =+                  ({-# LINE 384 "src/GLua/AG/PrettyPrint.ag" #-}+                   renderMLComments _lhsIppconf _lhsIindent $ fst _commentsBeforeEnd+                   {-# LINE 5659 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _commentsBeforeEnd =+                  ({-# LINE 387 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _lhsIisHead then ([], _lhsIcomments) else span (\(MToken pos' _tok) -> pos' `beforeEnd` _lhsIstatRegion) _lhsIcomments+                   {-# LINE 5664 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 388 "src/GLua/AG/PrettyPrint.ag" #-}+                   snd _commentsBeforeEnd+                   {-# LINE 5669 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 306 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5674 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLast =+                  ({-# LINE 281 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 5679 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5684 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   []+                   {-# LINE 5689 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 5694 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOhasBreaking,_lhsOisLast,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression,_lhsOstatementCount)))+-- MaybeMExpr --------------------------------------------------+-- cata+sem_MaybeMExpr :: MaybeMExpr ->+                  T_MaybeMExpr+sem_MaybeMExpr (Prelude.Just x) =+    (sem_MaybeMExpr_Just (sem_MExpr x))+sem_MaybeMExpr Prelude.Nothing =+    sem_MaybeMExpr_Nothing+-- semantic domain+type T_MaybeMExpr = ([MToken]) ->+                    Bool ->+                    Int ->+                    PrettyPrintConfig ->+                    ( ([MToken]),MaybeMExpr,Bool,Bool,Bool,Bool,OperatorLevel,Doc)+data Inh_MaybeMExpr = Inh_MaybeMExpr {comments_Inh_MaybeMExpr :: ([MToken]),forceMultiline_Inh_MaybeMExpr :: Bool,indent_Inh_MaybeMExpr :: Int,ppconf_Inh_MaybeMExpr :: PrettyPrintConfig}+data Syn_MaybeMExpr = Syn_MaybeMExpr {comments_Syn_MaybeMExpr :: ([MToken]),copy_Syn_MaybeMExpr :: MaybeMExpr,endsWithPrefixExpression_Syn_MaybeMExpr :: Bool,isAssociative_Syn_MaybeMExpr :: Bool,isDefined_Syn_MaybeMExpr :: Bool,isMultiline_Syn_MaybeMExpr :: Bool,precedence_Syn_MaybeMExpr :: OperatorLevel,pretty_Syn_MaybeMExpr :: Doc}+wrap_MaybeMExpr :: T_MaybeMExpr ->+                   Inh_MaybeMExpr ->+                   Syn_MaybeMExpr+wrap_MaybeMExpr sem (Inh_MaybeMExpr _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisDefined,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf+     in  (Syn_MaybeMExpr _lhsOcomments _lhsOcopy _lhsOendsWithPrefixExpression _lhsOisAssociative _lhsOisDefined _lhsOisMultiline _lhsOprecedence _lhsOpretty))+sem_MaybeMExpr_Just :: T_MExpr ->+                       T_MaybeMExpr+sem_MaybeMExpr_Just just_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisDefined :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _justOparentOperatorPrecedence :: OperatorLevel+              _justOparentOperatorAssociative :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: MaybeMExpr+              _lhsOcomments :: ([MToken])+              _justOcomments :: ([MToken])+              _justOforceMultiline :: Bool+              _justOindent :: Int+              _justOppconf :: PrettyPrintConfig+              _justIcomments :: ([MToken])+              _justIcopy :: MExpr+              _justIendsWithPrefixExpression :: Bool+              _justIisAssociative :: Bool+              _justIisLiteral :: Bool+              _justIisMultiline :: Bool+              _justIpos :: Region+              _justIprecedence :: OperatorLevel+              _justIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 457 "src/GLua/AG/PrettyPrint.ag" #-}+                   _justIpretty+                   {-# LINE 5752 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisDefined =+                  ({-# LINE 458 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 5757 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 459 "src/GLua/AG/PrettyPrint.ag" #-}+                   _justIendsWithPrefixExpression+                   {-# LINE 5762 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _justOparentOperatorPrecedence =+                  ({-# LINE 460 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 5767 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _justOparentOperatorAssociative =+                  ({-# LINE 461 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 5772 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   _justIisAssociative+                   {-# LINE 5777 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _justIisMultiline+                   {-# LINE 5782 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   _justIprecedence+                   {-# LINE 5787 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   Just _justIcopy+                   {-# LINE 5792 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 5797 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _justIcomments+                   {-# LINE 5802 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _justOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 5807 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _justOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 5812 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _justOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 5817 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _justOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 5822 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _justIcomments,_justIcopy,_justIendsWithPrefixExpression,_justIisAssociative,_justIisLiteral,_justIisMultiline,_justIpos,_justIprecedence,_justIpretty) =+                  just_ _justOcomments _justOforceMultiline _justOindent _justOparentOperatorAssociative _justOparentOperatorPrecedence _justOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisDefined,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_MaybeMExpr_Nothing :: T_MaybeMExpr+sem_MaybeMExpr_Nothing =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisDefined :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: MaybeMExpr+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 463 "src/GLua/AG/PrettyPrint.ag" #-}+                   empty+                   {-# LINE 5844 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisDefined =+                  ({-# LINE 464 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5849 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 465 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5854 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5859 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5864 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 5869 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   Nothing+                   {-# LINE 5874 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 5879 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 5884 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOisAssociative,_lhsOisDefined,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+-- PFExprSuffix ------------------------------------------------+-- cata+sem_PFExprSuffix :: PFExprSuffix ->+                    T_PFExprSuffix+sem_PFExprSuffix (Call _args) =+    (sem_PFExprSuffix_Call (sem_Args _args))+sem_PFExprSuffix (MetaCall _fn _args) =+    (sem_PFExprSuffix_MetaCall _fn (sem_Args _args))+sem_PFExprSuffix (ExprIndex _index) =+    (sem_PFExprSuffix_ExprIndex (sem_MExpr _index))+sem_PFExprSuffix (DotIndex _index) =+    (sem_PFExprSuffix_DotIndex _index)+-- semantic domain+type T_PFExprSuffix = ([MToken]) ->+                      Bool ->+                      Int ->+                      PrettyPrintConfig ->+                      ( ([MToken]),PFExprSuffix,Bool,Bool,OperatorLevel,Doc)+data Inh_PFExprSuffix = Inh_PFExprSuffix {comments_Inh_PFExprSuffix :: ([MToken]),forceMultiline_Inh_PFExprSuffix :: Bool,indent_Inh_PFExprSuffix :: Int,ppconf_Inh_PFExprSuffix :: PrettyPrintConfig}+data Syn_PFExprSuffix = Syn_PFExprSuffix {comments_Syn_PFExprSuffix :: ([MToken]),copy_Syn_PFExprSuffix :: PFExprSuffix,isAssociative_Syn_PFExprSuffix :: Bool,isMultiline_Syn_PFExprSuffix :: Bool,precedence_Syn_PFExprSuffix :: OperatorLevel,pretty_Syn_PFExprSuffix :: Doc}+wrap_PFExprSuffix :: T_PFExprSuffix ->+                     Inh_PFExprSuffix ->+                     Syn_PFExprSuffix+wrap_PFExprSuffix sem (Inh_PFExprSuffix _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIppconf+     in  (Syn_PFExprSuffix _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisMultiline _lhsOprecedence _lhsOpretty))+sem_PFExprSuffix_Call :: T_Args ->+                         T_PFExprSuffix+sem_PFExprSuffix_Call args_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: PFExprSuffix+              _lhsOcomments :: ([MToken])+              _argsOcomments :: ([MToken])+              _argsOforceMultiline :: Bool+              _argsOindent :: Int+              _argsOppconf :: PrettyPrintConfig+              _argsIcomments :: ([MToken])+              _argsIcopy :: Args+              _argsIisMultiline :: Bool+              _argsIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 717 "src/GLua/AG/PrettyPrint.ag" #-}+                   _argsIpretty+                   {-# LINE 5937 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 5942 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _argsIisMultiline+                   {-# LINE 5947 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 5952 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   Call _argsIcopy+                   {-# LINE 5957 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 5962 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _argsIcomments+                   {-# LINE 5967 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 5972 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 5977 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 5982 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 5987 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _argsIcomments,_argsIcopy,_argsIisMultiline,_argsIpretty) =+                  args_ _argsOcomments _argsOforceMultiline _argsOindent _argsOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_PFExprSuffix_MetaCall :: MToken ->+                             T_Args ->+                             T_PFExprSuffix+sem_PFExprSuffix_MetaCall fn_ args_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: PFExprSuffix+              _lhsOcomments :: ([MToken])+              _argsOcomments :: ([MToken])+              _argsOforceMultiline :: Bool+              _argsOindent :: Int+              _argsOppconf :: PrettyPrintConfig+              _argsIcomments :: ([MToken])+              _argsIcopy :: Args+              _argsIisMultiline :: Bool+              _argsIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 718 "src/GLua/AG/PrettyPrint.ag" #-}+                   zchr ':' <> tok fn_ <> _argsIpretty+                   {-# LINE 6017 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6022 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _argsIisMultiline+                   {-# LINE 6027 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 6032 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   MetaCall fn_ _argsIcopy+                   {-# LINE 6037 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 6042 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _argsIcomments+                   {-# LINE 6047 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 6052 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 6057 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 6062 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _argsOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 6067 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _argsIcomments,_argsIcopy,_argsIisMultiline,_argsIpretty) =+                  args_ _argsOcomments _argsOforceMultiline _argsOindent _argsOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_PFExprSuffix_ExprIndex :: T_MExpr ->+                              T_PFExprSuffix+sem_PFExprSuffix_ExprIndex index_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _indexOparentOperatorPrecedence :: OperatorLevel+              _indexOparentOperatorAssociative :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: PFExprSuffix+              _lhsOcomments :: ([MToken])+              _indexOcomments :: ([MToken])+              _indexOforceMultiline :: Bool+              _indexOindent :: Int+              _indexOppconf :: PrettyPrintConfig+              _indexIcomments :: ([MToken])+              _indexIcopy :: MExpr+              _indexIendsWithPrefixExpression :: Bool+              _indexIisAssociative :: Bool+              _indexIisLiteral :: Bool+              _indexIisMultiline :: Bool+              _indexIpos :: Region+              _indexIprecedence :: OperatorLevel+              _indexIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 719 "src/GLua/AG/PrettyPrint.ag" #-}+                   brackets _lhsIppconf _indexIpretty+                   {-# LINE 6103 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _indexOparentOperatorPrecedence =+                  ({-# LINE 720 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 6108 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _indexOparentOperatorAssociative =+                  ({-# LINE 721 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 6113 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   _indexIisAssociative+                   {-# LINE 6118 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _indexIisMultiline+                   {-# LINE 6123 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   _indexIprecedence+                   {-# LINE 6128 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ExprIndex _indexIcopy+                   {-# LINE 6133 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 6138 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _indexIcomments+                   {-# LINE 6143 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _indexOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 6148 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _indexOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 6153 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _indexOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 6158 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _indexOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 6163 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _indexIcomments,_indexIcopy,_indexIendsWithPrefixExpression,_indexIisAssociative,_indexIisLiteral,_indexIisMultiline,_indexIpos,_indexIprecedence,_indexIpretty) =+                  index_ _indexOcomments _indexOforceMultiline _indexOindent _indexOparentOperatorAssociative _indexOparentOperatorPrecedence _indexOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+sem_PFExprSuffix_DotIndex :: MToken ->+                             T_PFExprSuffix+sem_PFExprSuffix_DotIndex index_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: PFExprSuffix+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 722 "src/GLua/AG/PrettyPrint.ag" #-}+                   zchr '.' <> tok index_+                   {-# LINE 6184 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6189 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6194 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   OperatorLevel8+                   {-# LINE 6199 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   DotIndex index_+                   {-# LINE 6204 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 6209 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 6214 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty)))+-- PrefixExp ---------------------------------------------------+-- cata+sem_PrefixExp :: PrefixExp ->+                 T_PrefixExp+sem_PrefixExp (PFVar _name _suffixes) =+    (sem_PrefixExp_PFVar _name (sem_ExprSuffixList _suffixes))+sem_PrefixExp (ExprVar _expr _suffixes) =+    (sem_PrefixExp_ExprVar (sem_MExpr _expr) (sem_ExprSuffixList _suffixes))+-- semantic domain+type T_PrefixExp = ([MToken]) ->+                   Bool ->+                   Int ->+                   Bool ->+                   OperatorLevel ->+                   PrettyPrintConfig ->+                   ( ([MToken]),PrefixExp,Bool,Bool,Bool,OperatorLevel,Doc,Bool)+data Inh_PrefixExp = Inh_PrefixExp {comments_Inh_PrefixExp :: ([MToken]),forceMultiline_Inh_PrefixExp :: Bool,indent_Inh_PrefixExp :: Int,parentOperatorAssociative_Inh_PrefixExp :: Bool,parentOperatorPrecedence_Inh_PrefixExp :: OperatorLevel,ppconf_Inh_PrefixExp :: PrettyPrintConfig}+data Syn_PrefixExp = Syn_PrefixExp {comments_Syn_PrefixExp :: ([MToken]),copy_Syn_PrefixExp :: PrefixExp,isAssociative_Syn_PrefixExp :: Bool,isLiteral_Syn_PrefixExp :: Bool,isMultiline_Syn_PrefixExp :: Bool,precedence_Syn_PrefixExp :: OperatorLevel,pretty_Syn_PrefixExp :: Doc,startsWithExprPrefixExpression_Syn_PrefixExp :: Bool}+wrap_PrefixExp :: T_PrefixExp ->+                  Inh_PrefixExp ->+                  Syn_PrefixExp+wrap_PrefixExp sem (Inh_PrefixExp _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOstartsWithExprPrefixExpression) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIparentOperatorAssociative _lhsIparentOperatorPrecedence _lhsIppconf+     in  (Syn_PrefixExp _lhsOcomments _lhsOcopy _lhsOisAssociative _lhsOisLiteral _lhsOisMultiline _lhsOprecedence _lhsOpretty _lhsOstartsWithExprPrefixExpression))+sem_PrefixExp_PFVar :: MToken ->+                       T_ExprSuffixList ->+                       T_PrefixExp+sem_PrefixExp_PFVar name_ suffixes_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisLiteral :: Bool+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOprecedence :: OperatorLevel+              _lhsOcopy :: PrefixExp+              _lhsOcomments :: ([MToken])+              _suffixesOcomments :: ([MToken])+              _suffixesOforceMultiline :: Bool+              _suffixesOindent :: Int+              _suffixesOppconf :: PrettyPrintConfig+              _suffixesIcomments :: ([MToken])+              _suffixesIcopy :: ExprSuffixList+              _suffixesIisAssociative :: Bool+              _suffixesIisMultiline :: Bool+              _suffixesIprecedence :: OperatorLevel+              _suffixesIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 676 "src/GLua/AG/PrettyPrint.ag" #-}+                   tok name_ <> _suffixesIpretty+                   {-# LINE 6272 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 677 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6277 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 678 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6282 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   _suffixesIisAssociative+                   {-# LINE 6287 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _suffixesIisMultiline+                   {-# LINE 6292 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 266 "src/GLua/AG/PrettyPrint.ag" #-}+                   _suffixesIprecedence+                   {-# LINE 6297 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   PFVar name_ _suffixesIcopy+                   {-# LINE 6302 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 6307 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _suffixesIcomments+                   {-# LINE 6312 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _suffixesOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 6317 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _suffixesOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 6322 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _suffixesOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 6327 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _suffixesOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 6332 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _suffixesIcomments,_suffixesIcopy,_suffixesIisAssociative,_suffixesIisMultiline,_suffixesIprecedence,_suffixesIpretty) =+                  suffixes_ _suffixesOcomments _suffixesOforceMultiline _suffixesOindent _suffixesOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_PrefixExp_ExprVar :: T_MExpr ->+                         T_ExprSuffixList ->+                         T_PrefixExp+sem_PrefixExp_ExprVar expr_ suffixes_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIparentOperatorAssociative+       _lhsIparentOperatorPrecedence+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOprecedence :: OperatorLevel+              _lhsOisLiteral :: Bool+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOisAssociative :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: PrefixExp+              _lhsOcomments :: ([MToken])+              _exprOcomments :: ([MToken])+              _exprOforceMultiline :: Bool+              _exprOindent :: Int+              _exprOparentOperatorAssociative :: Bool+              _exprOparentOperatorPrecedence :: OperatorLevel+              _exprOppconf :: PrettyPrintConfig+              _suffixesOcomments :: ([MToken])+              _suffixesOforceMultiline :: Bool+              _suffixesOindent :: Int+              _suffixesOppconf :: PrettyPrintConfig+              _exprIcomments :: ([MToken])+              _exprIcopy :: MExpr+              _exprIendsWithPrefixExpression :: Bool+              _exprIisAssociative :: Bool+              _exprIisLiteral :: Bool+              _exprIisMultiline :: Bool+              _exprIpos :: Region+              _exprIprecedence :: OperatorLevel+              _exprIpretty :: Doc+              _suffixesIcomments :: ([MToken])+              _suffixesIcopy :: ExprSuffixList+              _suffixesIisAssociative :: Bool+              _suffixesIisMultiline :: Bool+              _suffixesIprecedence :: OperatorLevel+              _suffixesIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 679 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if _noparens     then _exprIpretty else parens _lhsIppconf NonEmpty _exprIpretty) <> _suffixesIpretty+                   {-# LINE 6383 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOprecedence =+                  ({-# LINE 680 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _noparens     then _exprIprecedence else OperatorLevel8+                   {-# LINE 6388 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisLiteral =+                  ({-# LINE 681 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6393 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 682 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 6398 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _containsParenthesizedExpr =+                  ({-# LINE 686 "src/GLua/AG/PrettyPrint.ag" #-}+                   case _exprIcopy of+                      MExpr _ (APrefixExpr (ExprVar (MExpr _ AVarArg) _)) -> False+                      MExpr _ (APrefixExpr _) -> True+                      _ -> False+                   {-# LINE 6406 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _noparens =+                  ({-# LINE 691 "src/GLua/AG/PrettyPrint.ag" #-}+                   (removeRedundantParens _lhsIppconf || minimizeParens _lhsIppconf) && (_containsParenthesizedExpr     || (_lhsIparentOperatorPrecedence == TopLevelExpression || _exprIisLiteral) && length _suffixesIcopy == 0) ||+                   (minimizeParens _lhsIppconf && length _suffixesIcopy == 0 &&+                       ( _lhsIparentOperatorPrecedence < _exprIprecedence+                       || assumeOperatorAssociativity _lhsIppconf+                       && _lhsIparentOperatorPrecedence == _exprIprecedence+                       && _lhsIparentOperatorAssociative+                       )+                   )+                   {-# LINE 6418 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisAssociative =+                  ({-# LINE 268 "src/GLua/AG/PrettyPrint.ag" #-}+                   _exprIisAssociative && _suffixesIisAssociative+                   {-# LINE 6423 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _exprIisMultiline || _suffixesIisMultiline+                   {-# LINE 6428 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ExprVar _exprIcopy _suffixesIcopy+                   {-# LINE 6433 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 6438 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _suffixesIcomments+                   {-# LINE 6443 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 6448 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 6453 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 6458 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOparentOperatorAssociative =+                  ({-# LINE 259 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIparentOperatorAssociative+                   {-# LINE 6463 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOparentOperatorPrecedence =+                  ({-# LINE 258 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIparentOperatorPrecedence+                   {-# LINE 6468 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 6473 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _suffixesOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _exprIcomments+                   {-# LINE 6478 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _suffixesOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 6483 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _suffixesOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 6488 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _suffixesOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 6493 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _exprIcomments,_exprIcopy,_exprIendsWithPrefixExpression,_exprIisAssociative,_exprIisLiteral,_exprIisMultiline,_exprIpos,_exprIprecedence,_exprIpretty) =+                  expr_ _exprOcomments _exprOforceMultiline _exprOindent _exprOparentOperatorAssociative _exprOparentOperatorPrecedence _exprOppconf+              ( _suffixesIcomments,_suffixesIcopy,_suffixesIisAssociative,_suffixesIisMultiline,_suffixesIprecedence,_suffixesIpretty) =+                  suffixes_ _suffixesOcomments _suffixesOforceMultiline _suffixesOindent _suffixesOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisAssociative,_lhsOisLiteral,_lhsOisMultiline,_lhsOprecedence,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+-- Stat --------------------------------------------------------+-- cata+sem_Stat :: Stat ->+            T_Stat+sem_Stat (Def _vars) =+    (sem_Stat_Def (sem_VarsList _vars))+sem_Stat (LocDef _vars) =+    (sem_Stat_LocDef (sem_VarsList _vars))+sem_Stat (AFuncCall _fn) =+    (sem_Stat_AFuncCall (sem_PrefixExp _fn))+sem_Stat (ALabel _lbl) =+    (sem_Stat_ALabel _lbl)+sem_Stat (ABreak) =+    (sem_Stat_ABreak)+sem_Stat (AContinue) =+    (sem_Stat_AContinue)+sem_Stat (AGoto _lbl) =+    (sem_Stat_AGoto _lbl)+sem_Stat (ADo _body) =+    (sem_Stat_ADo (sem_Block _body))+sem_Stat (AWhile _cond _body) =+    (sem_Stat_AWhile (sem_MExpr _cond) (sem_Block _body))+sem_Stat (ARepeat _body _cond) =+    (sem_Stat_ARepeat (sem_Block _body) (sem_MExpr _cond))+sem_Stat (AIf _cond _body _elifs _els) =+    (sem_Stat_AIf (sem_MExpr _cond) (sem_Block _body) (sem_ElseIfList _elifs) (sem_Else _els))+sem_Stat (ANFor _var _val _to _step _body) =+    (sem_Stat_ANFor _var (sem_MExpr _val) (sem_MExpr _to) (sem_MExpr _step) (sem_Block _body))+sem_Stat (AGFor _vars _vals _body) =+    (sem_Stat_AGFor _vars (sem_MExprList _vals) (sem_Block _body))+sem_Stat (AFunc _name _args _body) =+    (sem_Stat_AFunc (sem_FuncName _name) _args (sem_Block _body))+sem_Stat (ALocFunc _name _args _body) =+    (sem_Stat_ALocFunc (sem_FuncName _name) _args (sem_Block _body))+-- semantic domain+type T_Stat = ([MToken]) ->+              Bool ->+              Int ->+              Bool ->+              PrettyPrintConfig ->+              Region ->+              Bool ->+              ( ([MToken]),Stat,Bool,Bool,Bool,Doc,Bool)+data Inh_Stat = Inh_Stat {comments_Inh_Stat :: ([MToken]),forceMultiline_Inh_Stat :: Bool,indent_Inh_Stat :: Int,isLastStatement_Inh_Stat :: Bool,ppconf_Inh_Stat :: PrettyPrintConfig,statRegion_Inh_Stat :: Region,wouldBeAmbiguousWithoutSemicolon_Inh_Stat :: Bool}+data Syn_Stat = Syn_Stat {comments_Syn_Stat :: ([MToken]),copy_Syn_Stat :: Stat,endsWithPrefixExpression_Syn_Stat :: Bool,hasBreaking_Syn_Stat :: Bool,isMultiline_Syn_Stat :: Bool,pretty_Syn_Stat :: Doc,startsWithExprPrefixExpression_Syn_Stat :: Bool}+wrap_Stat :: T_Stat ->+             Inh_Stat ->+             Syn_Stat+wrap_Stat sem (Inh_Stat _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIisLastStatement _lhsIppconf _lhsIstatRegion _lhsIwouldBeAmbiguousWithoutSemicolon) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIisLastStatement _lhsIppconf _lhsIstatRegion _lhsIwouldBeAmbiguousWithoutSemicolon+     in  (Syn_Stat _lhsOcomments _lhsOcopy _lhsOendsWithPrefixExpression _lhsOhasBreaking _lhsOisMultiline _lhsOpretty _lhsOstartsWithExprPrefixExpression))+sem_Stat_Def :: T_VarsList ->+                T_Stat+sem_Stat_Def vars_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _varsOisHead :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _varsOcomments :: ([MToken])+              _varsOforceMultiline :: Bool+              _varsOindent :: Int+              _varsOppconf :: PrettyPrintConfig+              _varsIcomments :: ([MToken])+              _varsIcopy :: VarsList+              _varsIendsWithPrefixExpression :: Bool+              _varsIexprPretty :: Doc+              _varsIisDefined :: Bool+              _varsIisMultiline :: Bool+              _varsIpretty :: Doc+              _varsIstartsWithExprPrefixExpression :: Bool+              _varsIvarPretty :: Doc+              _lhsOpretty =+                  ({-# LINE 542 "src/GLua/AG/PrettyPrint.ag" #-}+                   _varsIpretty <> _semicolon+                   {-# LINE 6585 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 543 "src/GLua/AG/PrettyPrint.ag" #-}+                   _varsIstartsWithExprPrefixExpression+                   {-# LINE 6590 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 544 "src/GLua/AG/PrettyPrint.ag" #-}+                   _varsIendsWithPrefixExpression+                   {-# LINE 6595 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _semicolon =+                  ({-# LINE 545 "src/GLua/AG/PrettyPrint.ag" #-}+                   if semicolons _lhsIppconf || _lhsIwouldBeAmbiguousWithoutSemicolon then zchr ';' else empty+                   {-# LINE 6600 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _varsOisHead =+                  ({-# LINE 546 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 6605 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 306 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6610 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _varsIisMultiline+                   {-# LINE 6615 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   Def _varsIcopy+                   {-# LINE 6620 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 6625 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _varsIcomments+                   {-# LINE 6630 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _varsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 6635 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _varsOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 6640 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _varsOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 6645 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _varsOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 6650 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _varsIcomments,_varsIcopy,_varsIendsWithPrefixExpression,_varsIexprPretty,_varsIisDefined,_varsIisMultiline,_varsIpretty,_varsIstartsWithExprPrefixExpression,_varsIvarPretty) =+                  vars_ _varsOcomments _varsOforceMultiline _varsOindent _varsOisHead _varsOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_LocDef :: T_VarsList ->+                   T_Stat+sem_Stat_LocDef vars_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _varsOisHead :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _varsOcomments :: ([MToken])+              _varsOforceMultiline :: Bool+              _varsOindent :: Int+              _varsOppconf :: PrettyPrintConfig+              _varsIcomments :: ([MToken])+              _varsIcopy :: VarsList+              _varsIendsWithPrefixExpression :: Bool+              _varsIexprPretty :: Doc+              _varsIisDefined :: Bool+              _varsIisMultiline :: Bool+              _varsIpretty :: Doc+              _varsIstartsWithExprPrefixExpression :: Bool+              _varsIvarPretty :: Doc+              _lhsOpretty =+                  ({-# LINE 547 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "local" <-> _varsIpretty <> _semicolon+                   {-# LINE 6689 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 548 "src/GLua/AG/PrettyPrint.ag" #-}+                   _varsIstartsWithExprPrefixExpression+                   {-# LINE 6694 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 549 "src/GLua/AG/PrettyPrint.ag" #-}+                   _varsIendsWithPrefixExpression+                   {-# LINE 6699 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _semicolon =+                  ({-# LINE 550 "src/GLua/AG/PrettyPrint.ag" #-}+                   if semicolons _lhsIppconf || _lhsIwouldBeAmbiguousWithoutSemicolon then zchr ';' else empty+                   {-# LINE 6704 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _varsOisHead =+                  ({-# LINE 551 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 6709 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 306 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6714 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _varsIisMultiline+                   {-# LINE 6719 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   LocDef _varsIcopy+                   {-# LINE 6724 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 6729 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _varsIcomments+                   {-# LINE 6734 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _varsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 6739 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _varsOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 6744 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _varsOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 6749 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _varsOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 6754 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _varsIcomments,_varsIcopy,_varsIendsWithPrefixExpression,_varsIexprPretty,_varsIisDefined,_varsIisMultiline,_varsIpretty,_varsIstartsWithExprPrefixExpression,_varsIvarPretty) =+                  vars_ _varsOcomments _varsOforceMultiline _varsOindent _varsOisHead _varsOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_AFuncCall :: T_PrefixExp ->+                      T_Stat+sem_Stat_AFuncCall fn_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _fnOparentOperatorPrecedence :: OperatorLevel+              _fnOparentOperatorAssociative :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _fnOcomments :: ([MToken])+              _fnOforceMultiline :: Bool+              _fnOindent :: Int+              _fnOppconf :: PrettyPrintConfig+              _fnIcomments :: ([MToken])+              _fnIcopy :: PrefixExp+              _fnIisAssociative :: Bool+              _fnIisLiteral :: Bool+              _fnIisMultiline :: Bool+              _fnIprecedence :: OperatorLevel+              _fnIpretty :: Doc+              _fnIstartsWithExprPrefixExpression :: Bool+              _lhsOpretty =+                  ({-# LINE 552 "src/GLua/AG/PrettyPrint.ag" #-}+                   _fnIpretty <> _semicolon+                   {-# LINE 6793 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _semicolon =+                  ({-# LINE 553 "src/GLua/AG/PrettyPrint.ag" #-}+                   if semicolons _lhsIppconf then zchr ';' else empty+                   {-# LINE 6798 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 554 "src/GLua/AG/PrettyPrint.ag" #-}+                   _fnIstartsWithExprPrefixExpression+                   {-# LINE 6803 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 555 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 6808 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _fnOparentOperatorPrecedence =+                  ({-# LINE 556 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 6813 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _fnOparentOperatorAssociative =+                  ({-# LINE 557 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 6818 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 306 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6823 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _fnIisMultiline+                   {-# LINE 6828 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AFuncCall _fnIcopy+                   {-# LINE 6833 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 6838 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _fnIcomments+                   {-# LINE 6843 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _fnOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 6848 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _fnOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 6853 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _fnOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 6858 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _fnOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 6863 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _fnIcomments,_fnIcopy,_fnIisAssociative,_fnIisLiteral,_fnIisMultiline,_fnIprecedence,_fnIpretty,_fnIstartsWithExprPrefixExpression) =+                  fn_ _fnOcomments _fnOforceMultiline _fnOindent _fnOparentOperatorAssociative _fnOparentOperatorPrecedence _fnOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_ALabel :: MToken ->+                   T_Stat+sem_Stat_ALabel lbl_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 558 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "::" <> _whitespace     <> tok lbl_ <> _whitespace     <> zeroWidthText "::"+                   {-# LINE 6888 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 559 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6893 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 560 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6898 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _whitespace =+                  ({-# LINE 561 "src/GLua/AG/PrettyPrint.ag" #-}+                   if spaceAfterLabel _lhsIppconf then zeroWidthText " " else empty+                   {-# LINE 6903 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 306 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6908 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6913 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ALabel lbl_+                   {-# LINE 6918 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 6923 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 6928 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_ABreak :: T_Stat+sem_Stat_ABreak =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 562 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "break" <> _semicolon+                   {-# LINE 6950 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 563 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6955 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 564 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6960 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _semicolon =+                  ({-# LINE 565 "src/GLua/AG/PrettyPrint.ag" #-}+                   if semicolons _lhsIppconf then zchr ';' else empty+                   {-# LINE 6965 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 566 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 6970 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 6975 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ABreak+                   {-# LINE 6980 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 6985 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 6990 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_AContinue :: T_Stat+sem_Stat_AContinue =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 567 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "continue" <> _semicolon+                   {-# LINE 7012 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 568 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7017 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 569 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7022 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _semicolon =+                  ({-# LINE 570 "src/GLua/AG/PrettyPrint.ag" #-}+                   if semicolons _lhsIppconf then zchr ';' else empty+                   {-# LINE 7027 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 571 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 7032 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7037 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AContinue+                   {-# LINE 7042 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 7047 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 7052 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_AGoto :: MToken ->+                  T_Stat+sem_Stat_AGoto lbl_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 572 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "goto" <-> tok lbl_ <> _semicolon+                   {-# LINE 7075 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 573 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7080 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 574 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7085 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _semicolon =+                  ({-# LINE 575 "src/GLua/AG/PrettyPrint.ag" #-}+                   if semicolons _lhsIppconf then zchr ';' else empty+                   {-# LINE 7090 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 306 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7095 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7100 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AGoto lbl_+                   {-# LINE 7105 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 7110 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 7115 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_ADo :: T_Block ->+                T_Stat+sem_Stat_ADo body_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOisMultiline :: Bool+              _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _bodyOindent :: Int+              _lhsOhasBreaking :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _bodyOcomments :: ([MToken])+              _bodyOforceMultiline :: Bool+              _bodyOppconf :: PrettyPrintConfig+              _bodyOstatRegion :: Region+              _bodyIcomments :: ([MToken])+              _bodyIcopy :: Block+              _bodyIhasBreaking :: Bool+              _bodyIisMultiline :: Bool+              _bodyIpretty :: Doc+              _bodyIstatementCount :: Int+              _lhsOisMultiline =+                  ({-# LINE 577 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 7149 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 578 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "do" $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")+                   {-# LINE 7154 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 579 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7159 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 580 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7164 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOindent =+                  ({-# LINE 581 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent + 1+                   {-# LINE 7169 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 582 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7174 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ADo _bodyIcopy+                   {-# LINE 7179 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 7184 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIcomments+                   {-# LINE 7189 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 7194 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7199 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7204 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 7209 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =+                  body_ _bodyOcomments _bodyOforceMultiline _bodyOindent _bodyOppconf _bodyOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_AWhile :: T_MExpr ->+                   T_Block ->+                   T_Stat+sem_Stat_AWhile cond_ body_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOisMultiline :: Bool+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _condOparentOperatorPrecedence :: OperatorLevel+              _condOparentOperatorAssociative :: Bool+              _lhsOpretty :: Doc+              _bodyOindent :: Int+              _lhsOhasBreaking :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _condOcomments :: ([MToken])+              _condOforceMultiline :: Bool+              _condOindent :: Int+              _condOppconf :: PrettyPrintConfig+              _bodyOcomments :: ([MToken])+              _bodyOforceMultiline :: Bool+              _bodyOppconf :: PrettyPrintConfig+              _bodyOstatRegion :: Region+              _condIcomments :: ([MToken])+              _condIcopy :: MExpr+              _condIendsWithPrefixExpression :: Bool+              _condIisAssociative :: Bool+              _condIisLiteral :: Bool+              _condIisMultiline :: Bool+              _condIpos :: Region+              _condIprecedence :: OperatorLevel+              _condIpretty :: Doc+              _bodyIcomments :: ([MToken])+              _bodyIcopy :: Block+              _bodyIhasBreaking :: Bool+              _bodyIisMultiline :: Bool+              _bodyIpretty :: Doc+              _bodyIstatementCount :: Int+              _lhsOisMultiline =+                  ({-# LINE 583 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 7261 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 584 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7266 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 585 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7271 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOparentOperatorPrecedence =+                  ({-# LINE 586 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 7276 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOparentOperatorAssociative =+                  ({-# LINE 587 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 7281 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 588 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "while" <-> _condIpretty <-> zeroWidthText "do" $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")+                   {-# LINE 7286 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOindent =+                  ({-# LINE 589 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent + 1+                   {-# LINE 7291 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 590 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7296 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AWhile _condIcopy _bodyIcopy+                   {-# LINE 7301 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 7306 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIcomments+                   {-# LINE 7311 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 7316 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7321 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 7326 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7331 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _condIcomments+                   {-# LINE 7336 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7341 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7346 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 7351 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _condIcomments,_condIcopy,_condIendsWithPrefixExpression,_condIisAssociative,_condIisLiteral,_condIisMultiline,_condIpos,_condIprecedence,_condIpretty) =+                  cond_ _condOcomments _condOforceMultiline _condOindent _condOparentOperatorAssociative _condOparentOperatorPrecedence _condOppconf+              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =+                  body_ _bodyOcomments _bodyOforceMultiline _bodyOindent _bodyOppconf _bodyOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_ARepeat :: T_Block ->+                    T_MExpr ->+                    T_Stat+sem_Stat_ARepeat body_ cond_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _bodyOindent :: Int+              _condOparentOperatorPrecedence :: OperatorLevel+              _condOparentOperatorAssociative :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _bodyOcomments :: ([MToken])+              _bodyOforceMultiline :: Bool+              _bodyOppconf :: PrettyPrintConfig+              _bodyOstatRegion :: Region+              _condOcomments :: ([MToken])+              _condOforceMultiline :: Bool+              _condOindent :: Int+              _condOppconf :: PrettyPrintConfig+              _bodyIcomments :: ([MToken])+              _bodyIcopy :: Block+              _bodyIhasBreaking :: Bool+              _bodyIisMultiline :: Bool+              _bodyIpretty :: Doc+              _bodyIstatementCount :: Int+              _condIcomments :: ([MToken])+              _condIcopy :: MExpr+              _condIendsWithPrefixExpression :: Bool+              _condIisAssociative :: Bool+              _condIisLiteral :: Bool+              _condIisMultiline :: Bool+              _condIpos :: Region+              _condIprecedence :: OperatorLevel+              _condIpretty :: Doc+              _lhsOpretty =+                  ({-# LINE 591 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "repeat" $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "until" <-> _condIpretty)+                   {-# LINE 7405 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 592 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7410 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 593 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7415 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOindent =+                  ({-# LINE 594 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent + 1+                   {-# LINE 7420 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOparentOperatorPrecedence =+                  ({-# LINE 595 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 7425 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOparentOperatorAssociative =+                  ({-# LINE 596 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 7430 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 597 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7435 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIisMultiline || _condIisMultiline+                   {-# LINE 7440 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ARepeat _bodyIcopy _condIcopy+                   {-# LINE 7445 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 7450 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _condIcomments+                   {-# LINE 7455 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 7460 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7465 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7470 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 7475 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIcomments+                   {-# LINE 7480 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7485 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 7490 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7495 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =+                  body_ _bodyOcomments _bodyOforceMultiline _bodyOindent _bodyOppconf _bodyOstatRegion+              ( _condIcomments,_condIcopy,_condIendsWithPrefixExpression,_condIisAssociative,_condIisLiteral,_condIisMultiline,_condIpos,_condIprecedence,_condIpretty) =+                  cond_ _condOcomments _condOforceMultiline _condOindent _condOparentOperatorAssociative _condOparentOperatorPrecedence _condOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_AIf :: T_MExpr ->+                T_Block ->+                T_ElseIfList ->+                T_Else ->+                T_Stat+sem_Stat_AIf cond_ body_ elifs_ els_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _condOparentOperatorPrecedence :: OperatorLevel+              _condOparentOperatorAssociative :: Bool+              _bodyOindent :: Int+              _bodyOstatRegion :: Region+              _lhsOpretty :: Doc+              _lhsOhasBreaking :: Bool+              _lhsOisMultiline :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _condOcomments :: ([MToken])+              _condOforceMultiline :: Bool+              _condOindent :: Int+              _condOppconf :: PrettyPrintConfig+              _bodyOcomments :: ([MToken])+              _bodyOforceMultiline :: Bool+              _bodyOppconf :: PrettyPrintConfig+              _elifsOcomments :: ([MToken])+              _elifsOforceMultiline :: Bool+              _elifsOindent :: Int+              _elifsOppconf :: PrettyPrintConfig+              _elsOcomments :: ([MToken])+              _elsOforceMultiline :: Bool+              _elsOindent :: Int+              _elsOppconf :: PrettyPrintConfig+              _elsOstatRegion :: Region+              _condIcomments :: ([MToken])+              _condIcopy :: MExpr+              _condIendsWithPrefixExpression :: Bool+              _condIisAssociative :: Bool+              _condIisLiteral :: Bool+              _condIisMultiline :: Bool+              _condIpos :: Region+              _condIprecedence :: OperatorLevel+              _condIpretty :: Doc+              _bodyIcomments :: ([MToken])+              _bodyIcopy :: Block+              _bodyIhasBreaking :: Bool+              _bodyIisMultiline :: Bool+              _bodyIpretty :: Doc+              _bodyIstatementCount :: Int+              _elifsIcomments :: ([MToken])+              _elifsIcopy :: ElseIfList+              _elifsIelsesExist :: Bool+              _elifsIisMultiline :: Bool+              _elifsIpos :: Region+              _elifsIpretty :: Doc+              _elsIcomments :: ([MToken])+              _elsIcopy :: Else+              _elsIelsesExist :: Bool+              _elsIisMultiline :: Bool+              _elsIpos :: Region+              _elsIpretty :: Doc+              _isMultiline =+                  ({-# LINE 598 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline || _condIisMultiline || _bodyIisMultiline || _bodyIstatementCount > 1 || (_bodyIstatementCount == 1 && not _bodyIhasBreaking) || _elifsIelsesExist || _elsIelsesExist+                   {-# LINE 7572 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 600 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7577 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 601 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7582 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _singleLinePretty =+                  ({-# LINE 602 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "if" <-> _condIpretty <-> zeroWidthText "then" <-> _bodyIpretty <-> zeroWidthText "end"+                   {-# LINE 7587 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _multilinePretty =+                  ({-# LINE 603 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "if" <-> _condIpretty <-> zeroWidthText "then" $+$ _bodyIpretty $+$ _elifsIpretty $+$ _elsIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")+                   {-# LINE 7592 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOparentOperatorPrecedence =+                  ({-# LINE 604 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 7597 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOparentOperatorAssociative =+                  ({-# LINE 605 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 7602 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOindent =+                  ({-# LINE 606 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _isMultiline     then _lhsIindent + 1 else 0+                   {-# LINE 7607 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOstatRegion =+                  ({-# LINE 607 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion `upto` _elifsIpos `upto` _elsIpos+                   {-# LINE 7612 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 608 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _isMultiline     then _multilinePretty     else _singleLinePretty+                   {-# LINE 7617 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 609 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7622 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _isMultiline+                   {-# LINE 7627 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AIf _condIcopy _bodyIcopy _elifsIcopy _elsIcopy+                   {-# LINE 7632 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 7637 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _elsIcomments+                   {-# LINE 7642 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 7647 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7652 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 7657 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _condOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7662 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _condIcomments+                   {-# LINE 7667 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7672 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7677 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elifsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIcomments+                   {-# LINE 7682 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elifsOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7687 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elifsOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 7692 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elifsOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7697 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _elifsIcomments+                   {-# LINE 7702 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elsOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7707 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elsOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 7712 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elsOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7717 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _elsOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 7722 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _condIcomments,_condIcopy,_condIendsWithPrefixExpression,_condIisAssociative,_condIisLiteral,_condIisMultiline,_condIpos,_condIprecedence,_condIpretty) =+                  cond_ _condOcomments _condOforceMultiline _condOindent _condOparentOperatorAssociative _condOparentOperatorPrecedence _condOppconf+              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =+                  body_ _bodyOcomments _bodyOforceMultiline _bodyOindent _bodyOppconf _bodyOstatRegion+              ( _elifsIcomments,_elifsIcopy,_elifsIelsesExist,_elifsIisMultiline,_elifsIpos,_elifsIpretty) =+                  elifs_ _elifsOcomments _elifsOforceMultiline _elifsOindent _elifsOppconf+              ( _elsIcomments,_elsIcopy,_elsIelsesExist,_elsIisMultiline,_elsIpos,_elsIpretty) =+                  els_ _elsOcomments _elsOforceMultiline _elsOindent _elsOppconf _elsOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_ANFor :: MToken ->+                  T_MExpr ->+                  T_MExpr ->+                  T_MExpr ->+                  T_Block ->+                  T_Stat+sem_Stat_ANFor var_ val_ to_ step_ body_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOisMultiline :: Bool+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOpretty :: Doc+              _valOparentOperatorPrecedence :: OperatorLevel+              _valOparentOperatorAssociative :: Bool+              _toOparentOperatorPrecedence :: OperatorLevel+              _toOparentOperatorAssociative :: Bool+              _stepOparentOperatorPrecedence :: OperatorLevel+              _stepOparentOperatorAssociative :: Bool+              _bodyOindent :: Int+              _lhsOhasBreaking :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _valOcomments :: ([MToken])+              _valOforceMultiline :: Bool+              _valOindent :: Int+              _valOppconf :: PrettyPrintConfig+              _toOcomments :: ([MToken])+              _toOforceMultiline :: Bool+              _toOindent :: Int+              _toOppconf :: PrettyPrintConfig+              _stepOcomments :: ([MToken])+              _stepOforceMultiline :: Bool+              _stepOindent :: Int+              _stepOppconf :: PrettyPrintConfig+              _bodyOcomments :: ([MToken])+              _bodyOforceMultiline :: Bool+              _bodyOppconf :: PrettyPrintConfig+              _bodyOstatRegion :: Region+              _valIcomments :: ([MToken])+              _valIcopy :: MExpr+              _valIendsWithPrefixExpression :: Bool+              _valIisAssociative :: Bool+              _valIisLiteral :: Bool+              _valIisMultiline :: Bool+              _valIpos :: Region+              _valIprecedence :: OperatorLevel+              _valIpretty :: Doc+              _toIcomments :: ([MToken])+              _toIcopy :: MExpr+              _toIendsWithPrefixExpression :: Bool+              _toIisAssociative :: Bool+              _toIisLiteral :: Bool+              _toIisMultiline :: Bool+              _toIpos :: Region+              _toIprecedence :: OperatorLevel+              _toIpretty :: Doc+              _stepIcomments :: ([MToken])+              _stepIcopy :: MExpr+              _stepIendsWithPrefixExpression :: Bool+              _stepIisAssociative :: Bool+              _stepIisLiteral :: Bool+              _stepIisMultiline :: Bool+              _stepIpos :: Region+              _stepIprecedence :: OperatorLevel+              _stepIpretty :: Doc+              _bodyIcomments :: ([MToken])+              _bodyIcopy :: Block+              _bodyIhasBreaking :: Bool+              _bodyIisMultiline :: Bool+              _bodyIpretty :: Doc+              _bodyIstatementCount :: Int+              _lhsOisMultiline =+                  ({-# LINE 610 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 7813 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 611 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7818 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 612 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7823 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _step =+                  ({-# LINE 613 "src/GLua/AG/PrettyPrint.ag" #-}+                   case _stepIcopy of+                       MExpr _ (ANumber "1") -> empty+                       _ -> _comma     <> _stepIpretty+                   {-# LINE 7830 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 616 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "for" <-> tok var_ <-> zchr '=' <-> _valIpretty <> _comma     <> _toIpretty <> _step     <-> zeroWidthText "do" $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")+                   {-# LINE 7835 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _comma =+                  ({-# LINE 617 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)+                   {-# LINE 7840 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valOparentOperatorPrecedence =+                  ({-# LINE 618 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 7845 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valOparentOperatorAssociative =+                  ({-# LINE 619 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 7850 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _toOparentOperatorPrecedence =+                  ({-# LINE 620 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 7855 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _toOparentOperatorAssociative =+                  ({-# LINE 621 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 7860 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _stepOparentOperatorPrecedence =+                  ({-# LINE 622 "src/GLua/AG/PrettyPrint.ag" #-}+                   TopLevelExpression+                   {-# LINE 7865 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _stepOparentOperatorAssociative =+                  ({-# LINE 623 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 7870 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOindent =+                  ({-# LINE 624 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent + 1+                   {-# LINE 7875 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 625 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 7880 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ANFor var_ _valIcopy _toIcopy _stepIcopy _bodyIcopy+                   {-# LINE 7885 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 7890 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIcomments+                   {-# LINE 7895 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 7900 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7905 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 7910 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7915 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _toOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valIcomments+                   {-# LINE 7920 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _toOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7925 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _toOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 7930 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _toOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7935 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _stepOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _toIcomments+                   {-# LINE 7940 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _stepOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7945 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _stepOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 7950 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _stepOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7955 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _stepIcomments+                   {-# LINE 7960 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 7965 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 7970 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 7975 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _valIcomments,_valIcopy,_valIendsWithPrefixExpression,_valIisAssociative,_valIisLiteral,_valIisMultiline,_valIpos,_valIprecedence,_valIpretty) =+                  val_ _valOcomments _valOforceMultiline _valOindent _valOparentOperatorAssociative _valOparentOperatorPrecedence _valOppconf+              ( _toIcomments,_toIcopy,_toIendsWithPrefixExpression,_toIisAssociative,_toIisLiteral,_toIisMultiline,_toIpos,_toIprecedence,_toIpretty) =+                  to_ _toOcomments _toOforceMultiline _toOindent _toOparentOperatorAssociative _toOparentOperatorPrecedence _toOppconf+              ( _stepIcomments,_stepIcopy,_stepIendsWithPrefixExpression,_stepIisAssociative,_stepIisLiteral,_stepIisMultiline,_stepIpos,_stepIprecedence,_stepIpretty) =+                  step_ _stepOcomments _stepOforceMultiline _stepOindent _stepOparentOperatorAssociative _stepOparentOperatorPrecedence _stepOppconf+              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =+                  body_ _bodyOcomments _bodyOforceMultiline _bodyOindent _bodyOppconf _bodyOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_AGFor :: ([MToken]) ->+                  T_MExprList ->+                  T_Block ->+                  T_Stat+sem_Stat_AGFor vars_ vals_ body_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOisMultiline :: Bool+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOpretty :: Doc+              _bodyOindent :: Int+              _valsOisHead :: Bool+              _valsOforceMultiline :: Bool+              _lhsOhasBreaking :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _valsOcomments :: ([MToken])+              _valsOindent :: Int+              _valsOppconf :: PrettyPrintConfig+              _bodyOcomments :: ([MToken])+              _bodyOforceMultiline :: Bool+              _bodyOppconf :: PrettyPrintConfig+              _bodyOstatRegion :: Region+              _valsIcomments :: ([MToken])+              _valsIcopy :: MExprList+              _valsIisAssociative :: Bool+              _valsIisMultiline :: Bool+              _valsIpos :: Region+              _valsIprecedence :: OperatorLevel+              _valsIpretty :: Doc+              _bodyIcomments :: ([MToken])+              _bodyIcopy :: Block+              _bodyIhasBreaking :: Bool+              _bodyIisMultiline :: Bool+              _bodyIpretty :: Doc+              _bodyIstatementCount :: Int+              _lhsOisMultiline =+                  ({-# LINE 626 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 8031 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 627 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8036 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 628 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8041 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 629 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "for" <-> printList tok (render _comma    ) vars_ <-> zeroWidthText "in" <-> _valsIpretty <-> zeroWidthText "do" $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")+                   {-# LINE 8046 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOindent =+                  ({-# LINE 630 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent + 1+                   {-# LINE 8051 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _comma =+                  ({-# LINE 631 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)+                   {-# LINE 8056 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valsOisHead =+                  ({-# LINE 632 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 8061 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valsOforceMultiline =+                  ({-# LINE 634 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8066 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 635 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8071 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AGFor vars_ _valsIcopy _bodyIcopy+                   {-# LINE 8076 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 8081 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIcomments+                   {-# LINE 8086 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 8091 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valsOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 8096 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _valsOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 8101 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _valsIcomments+                   {-# LINE 8106 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 8111 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 8116 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 8121 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _valsIcomments,_valsIcopy,_valsIisAssociative,_valsIisMultiline,_valsIpos,_valsIprecedence,_valsIpretty) =+                  vals_ _valsOcomments _valsOforceMultiline _valsOindent _valsOisHead _valsOppconf+              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =+                  body_ _bodyOcomments _bodyOforceMultiline _bodyOindent _bodyOppconf _bodyOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_AFunc :: T_FuncName ->+                  ([MToken]) ->+                  T_Block ->+                  T_Stat+sem_Stat_AFunc name_ args_ body_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOisMultiline :: Bool+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOpretty :: Doc+              _bodyOindent :: Int+              _lhsOhasBreaking :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _nameOcomments :: ([MToken])+              _nameOindent :: Int+              _nameOppconf :: PrettyPrintConfig+              _bodyOcomments :: ([MToken])+              _bodyOforceMultiline :: Bool+              _bodyOppconf :: PrettyPrintConfig+              _bodyOstatRegion :: Region+              _nameIcomments :: ([MToken])+              _nameIcopy :: FuncName+              _nameIisMultiline :: Bool+              _nameIpretty :: Doc+              _bodyIcomments :: ([MToken])+              _bodyIcopy :: Block+              _bodyIhasBreaking :: Bool+              _bodyIisMultiline :: Bool+              _bodyIpretty :: Doc+              _bodyIstatementCount :: Int+              _lhsOisMultiline =+                  ({-# LINE 636 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 8168 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 637 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8173 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 638 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8178 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 639 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "function" <-> _nameIpretty <> parens _lhsIppconf _emptyParams     (printList tok (render _comma    ) args_) $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")+                   {-# LINE 8183 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _emptyParams =+                  ({-# LINE 640 "src/GLua/AG/PrettyPrint.ag" #-}+                   toEmpty $ null args_+                   {-# LINE 8188 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _comma =+                  ({-# LINE 641 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)+                   {-# LINE 8193 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOindent =+                  ({-# LINE 642 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent + 1+                   {-# LINE 8198 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 643 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8203 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AFunc _nameIcopy args_ _bodyIcopy+                   {-# LINE 8208 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 8213 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIcomments+                   {-# LINE 8218 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _nameOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 8223 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _nameOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 8228 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _nameOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 8233 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _nameIcomments+                   {-# LINE 8238 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 8243 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 8248 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 8253 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _nameIcomments,_nameIcopy,_nameIisMultiline,_nameIpretty) =+                  name_ _nameOcomments _nameOindent _nameOppconf+              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =+                  body_ _bodyOcomments _bodyOforceMultiline _bodyOindent _bodyOppconf _bodyOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+sem_Stat_ALocFunc :: T_FuncName ->+                     ([MToken]) ->+                     T_Block ->+                     T_Stat+sem_Stat_ALocFunc name_ args_ body_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisLastStatement+       _lhsIppconf+       _lhsIstatRegion+       _lhsIwouldBeAmbiguousWithoutSemicolon ->+         (let _lhsOisMultiline :: Bool+              _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _bodyOindent :: Int+              _lhsOhasBreaking :: Bool+              _lhsOcopy :: Stat+              _lhsOcomments :: ([MToken])+              _nameOcomments :: ([MToken])+              _nameOindent :: Int+              _nameOppconf :: PrettyPrintConfig+              _bodyOcomments :: ([MToken])+              _bodyOforceMultiline :: Bool+              _bodyOppconf :: PrettyPrintConfig+              _bodyOstatRegion :: Region+              _nameIcomments :: ([MToken])+              _nameIcopy :: FuncName+              _nameIisMultiline :: Bool+              _nameIpretty :: Doc+              _bodyIcomments :: ([MToken])+              _bodyIcopy :: Block+              _bodyIhasBreaking :: Bool+              _bodyIisMultiline :: Bool+              _bodyIpretty :: Doc+              _bodyIstatementCount :: Int+              _lhsOisMultiline =+                  ({-# LINE 644 "src/GLua/AG/PrettyPrint.ag" #-}+                   True+                   {-# LINE 8300 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOpretty =+                  ({-# LINE 645 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "local function" <-> _nameIpretty <> parens _lhsIppconf _emptyParams     (printList tok (render _comma    ) args_) $+$ _bodyIpretty $+$ indent _lhsIppconf _lhsIindent (zeroWidthText "end")+                   {-# LINE 8305 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 646 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8310 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 647 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8315 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _emptyParams =+                  ({-# LINE 648 "src/GLua/AG/PrettyPrint.ag" #-}+                   toEmpty $ null args_+                   {-# LINE 8320 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _comma =+                  ({-# LINE 649 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)+                   {-# LINE 8325 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOindent =+                  ({-# LINE 650 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent + 1+                   {-# LINE 8330 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOhasBreaking =+                  ({-# LINE 651 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8335 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ALocFunc _nameIcopy args_ _bodyIcopy+                   {-# LINE 8340 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 8345 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _bodyIcomments+                   {-# LINE 8350 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _nameOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 8355 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _nameOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 8360 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _nameOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 8365 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _nameIcomments+                   {-# LINE 8370 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 8375 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 8380 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _bodyOstatRegion =+                  ({-# LINE 312 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIstatRegion+                   {-# LINE 8385 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _nameIcomments,_nameIcopy,_nameIisMultiline,_nameIpretty) =+                  name_ _nameOcomments _nameOindent _nameOppconf+              ( _bodyIcomments,_bodyIcopy,_bodyIhasBreaking,_bodyIisMultiline,_bodyIpretty,_bodyIstatementCount) =+                  body_ _bodyOcomments _bodyOforceMultiline _bodyOindent _bodyOppconf _bodyOstatRegion+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOhasBreaking,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression)))+-- UnOp --------------------------------------------------------+-- cata+sem_UnOp :: UnOp ->+            T_UnOp+sem_UnOp (UnMinus) =+    (sem_UnOp_UnMinus)+sem_UnOp (ANot) =+    (sem_UnOp_ANot)+sem_UnOp (AHash) =+    (sem_UnOp_AHash)+-- semantic domain+type T_UnOp = ([MToken]) ->+              Int ->+              PrettyPrintConfig ->+              ( ([MToken]),UnOp,Bool,Doc)+data Inh_UnOp = Inh_UnOp {comments_Inh_UnOp :: ([MToken]),indent_Inh_UnOp :: Int,ppconf_Inh_UnOp :: PrettyPrintConfig}+data Syn_UnOp = Syn_UnOp {comments_Syn_UnOp :: ([MToken]),copy_Syn_UnOp :: UnOp,isMultiline_Syn_UnOp :: Bool,pretty_Syn_UnOp :: Doc}+wrap_UnOp :: T_UnOp ->+             Inh_UnOp ->+             Syn_UnOp+wrap_UnOp sem (Inh_UnOp _lhsIcomments _lhsIindent _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty) = sem _lhsIcomments _lhsIindent _lhsIppconf+     in  (Syn_UnOp _lhsOcomments _lhsOcopy _lhsOisMultiline _lhsOpretty))+sem_UnOp_UnMinus :: T_UnOp+sem_UnOp_UnMinus =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisMultiline :: Bool+              _lhsOcopy :: UnOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 877 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "-"+                   {-# LINE 8427 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8432 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   UnMinus+                   {-# LINE 8437 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 8442 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 8447 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))+sem_UnOp_ANot :: T_UnOp+sem_UnOp_ANot =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisMultiline :: Bool+              _lhsOcopy :: UnOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 878 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText (if cStyle _lhsIppconf then "!" else "not ")+                   {-# LINE 8462 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8467 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   ANot+                   {-# LINE 8472 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 8477 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 8482 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))+sem_UnOp_AHash :: T_UnOp+sem_UnOp_AHash =+    (\ _lhsIcomments+       _lhsIindent+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOisMultiline :: Bool+              _lhsOcopy :: UnOp+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 879 "src/GLua/AG/PrettyPrint.ag" #-}+                   zeroWidthText "#"+                   {-# LINE 8497 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8502 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   AHash+                   {-# LINE 8507 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 8512 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 8517 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOisMultiline,_lhsOpretty)))+-- VarsList ----------------------------------------------------+-- cata+sem_VarsList :: VarsList ->+                T_VarsList+sem_VarsList list =+    (Prelude.foldr sem_VarsList_Cons sem_VarsList_Nil (Prelude.map sem_Declaration list))+-- semantic domain+type T_VarsList = ([MToken]) ->+                  Bool ->+                  Int ->+                  Bool ->+                  PrettyPrintConfig ->+                  ( ([MToken]),VarsList,Bool,Doc,Bool,Bool,Doc,Bool,Doc)+data Inh_VarsList = Inh_VarsList {comments_Inh_VarsList :: ([MToken]),forceMultiline_Inh_VarsList :: Bool,indent_Inh_VarsList :: Int,isHead_Inh_VarsList :: Bool,ppconf_Inh_VarsList :: PrettyPrintConfig}+data Syn_VarsList = Syn_VarsList {comments_Syn_VarsList :: ([MToken]),copy_Syn_VarsList :: VarsList,endsWithPrefixExpression_Syn_VarsList :: Bool,exprPretty_Syn_VarsList :: Doc,isDefined_Syn_VarsList :: Bool,isMultiline_Syn_VarsList :: Bool,pretty_Syn_VarsList :: Doc,startsWithExprPrefixExpression_Syn_VarsList :: Bool,varPretty_Syn_VarsList :: Doc}+wrap_VarsList :: T_VarsList ->+                 Inh_VarsList ->+                 Syn_VarsList+wrap_VarsList sem (Inh_VarsList _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIisHead _lhsIppconf) =+    (let ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOexprPretty,_lhsOisDefined,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression,_lhsOvarPretty) = sem _lhsIcomments _lhsIforceMultiline _lhsIindent _lhsIisHead _lhsIppconf+     in  (Syn_VarsList _lhsOcomments _lhsOcopy _lhsOendsWithPrefixExpression _lhsOexprPretty _lhsOisDefined _lhsOisMultiline _lhsOpretty _lhsOstartsWithExprPrefixExpression _lhsOvarPretty))+sem_VarsList_Cons :: T_Declaration ->+                     T_VarsList ->+                     T_VarsList+sem_VarsList_Cons hd_ tl_ =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisHead+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _tlOisHead :: Bool+              _lhsOexprPretty :: Doc+              _lhsOisDefined :: Bool+              _lhsOisMultiline :: Bool+              _lhsOvarPretty :: Doc+              _lhsOcopy :: VarsList+              _lhsOcomments :: ([MToken])+              _hdOcomments :: ([MToken])+              _hdOforceMultiline :: Bool+              _hdOindent :: Int+              _hdOppconf :: PrettyPrintConfig+              _tlOcomments :: ([MToken])+              _tlOforceMultiline :: Bool+              _tlOindent :: Int+              _tlOppconf :: PrettyPrintConfig+              _hdIcomments :: ([MToken])+              _hdIcopy :: Declaration+              _hdIendsWithPrefixExpression :: Bool+              _hdIexprPretty :: Doc+              _hdIisDefined :: Bool+              _hdIisMultiline :: Bool+              _hdIpretty :: Doc+              _hdIstartsWithExprPrefixExpression :: Bool+              _hdIvarPretty :: Doc+              _tlIcomments :: ([MToken])+              _tlIcopy :: VarsList+              _tlIendsWithPrefixExpression :: Bool+              _tlIexprPretty :: Doc+              _tlIisDefined :: Bool+              _tlIisMultiline :: Bool+              _tlIpretty :: Doc+              _tlIstartsWithExprPrefixExpression :: Bool+              _tlIvarPretty :: Doc+              _lhsOpretty =+                  ({-# LINE 476 "src/GLua/AG/PrettyPrint.ag" #-}+                   _varPretty     <-> if _isDefined     then zchr '=' <-> _exprPretty     else empty+                   {-# LINE 8589 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 477 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIstartsWithExprPrefixExpression+                   {-# LINE 8594 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 478 "src/GLua/AG/PrettyPrint.ag" #-}+                   if _tlIisDefined then _tlIendsWithPrefixExpression else _hdIendsWithPrefixExpression+                   {-# LINE 8599 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _isDefined =+                  ({-# LINE 485 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIisDefined || _tlIisDefined+                   {-# LINE 8604 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _varPretty =+                  ({-# LINE 486 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if _lhsIisHead then empty else _comma    ) <> _hdIvarPretty <> _tlIvarPretty+                   {-# LINE 8609 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _exprPretty =+                  ({-# LINE 487 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if _lhsIisHead || not _hdIisDefined then empty else _comma    ) <> _hdIexprPretty <> _tlIexprPretty+                   {-# LINE 8614 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _comma =+                  ({-# LINE 488 "src/GLua/AG/PrettyPrint.ag" #-}+                   (if spaceBeforeComma _lhsIppconf then zchr ' ' else empty) <> zchr ',' <> (if spaceAfterComma _lhsIppconf then zchr ' ' else empty)+                   {-# LINE 8619 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOisHead =+                  ({-# LINE 489 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8624 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOexprPretty =+                  ({-# LINE 272 "src/GLua/AG/PrettyPrint.ag" #-}+                   _exprPretty+                   {-# LINE 8629 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisDefined =+                  ({-# LINE 275 "src/GLua/AG/PrettyPrint.ag" #-}+                   _isDefined+                   {-# LINE 8634 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIisMultiline || _tlIisMultiline+                   {-# LINE 8639 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOvarPretty =+                  ({-# LINE 271 "src/GLua/AG/PrettyPrint.ag" #-}+                   _varPretty+                   {-# LINE 8644 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   (:) _hdIcopy _tlIcopy+                   {-# LINE 8649 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 8654 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _tlIcomments+                   {-# LINE 8659 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 8664 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 8669 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 8674 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _hdOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 8679 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _hdIcomments+                   {-# LINE 8684 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOforceMultiline =+                  ({-# LINE 344 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIforceMultiline+                   {-# LINE 8689 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOindent =+                  ({-# LINE 249 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIindent+                   {-# LINE 8694 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _tlOppconf =+                  ({-# LINE 251 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIppconf+                   {-# LINE 8699 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              ( _hdIcomments,_hdIcopy,_hdIendsWithPrefixExpression,_hdIexprPretty,_hdIisDefined,_hdIisMultiline,_hdIpretty,_hdIstartsWithExprPrefixExpression,_hdIvarPretty) =+                  hd_ _hdOcomments _hdOforceMultiline _hdOindent _hdOppconf+              ( _tlIcomments,_tlIcopy,_tlIendsWithPrefixExpression,_tlIexprPretty,_tlIisDefined,_tlIisMultiline,_tlIpretty,_tlIstartsWithExprPrefixExpression,_tlIvarPretty) =+                  tl_ _tlOcomments _tlOforceMultiline _tlOindent _tlOisHead _tlOppconf+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOexprPretty,_lhsOisDefined,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression,_lhsOvarPretty)))+sem_VarsList_Nil :: T_VarsList+sem_VarsList_Nil =+    (\ _lhsIcomments+       _lhsIforceMultiline+       _lhsIindent+       _lhsIisHead+       _lhsIppconf ->+         (let _lhsOpretty :: Doc+              _lhsOstartsWithExprPrefixExpression :: Bool+              _lhsOendsWithPrefixExpression :: Bool+              _lhsOexprPretty :: Doc+              _lhsOisDefined :: Bool+              _lhsOisMultiline :: Bool+              _lhsOvarPretty :: Doc+              _lhsOcopy :: VarsList+              _lhsOcomments :: ([MToken])+              _lhsOpretty =+                  ({-# LINE 491 "src/GLua/AG/PrettyPrint.ag" #-}+                   empty+                   {-# LINE 8725 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOstartsWithExprPrefixExpression =+                  ({-# LINE 492 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8730 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOendsWithPrefixExpression =+                  ({-# LINE 493 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8735 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOexprPretty =+                  ({-# LINE 272 "src/GLua/AG/PrettyPrint.ag" #-}+                   empty+                   {-# LINE 8740 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisDefined =+                  ({-# LINE 275 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8745 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOisMultiline =+                  ({-# LINE 250 "src/GLua/AG/PrettyPrint.ag" #-}+                   False+                   {-# LINE 8750 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOvarPretty =+                  ({-# LINE 271 "src/GLua/AG/PrettyPrint.ag" #-}+                   empty+                   {-# LINE 8755 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _copy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   []+                   {-# LINE 8760 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcopy =+                  ({-# LINE 252 "src/GLua/AG/PrettyPrint.ag" #-}+                   _copy+                   {-# LINE 8765 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+              _lhsOcomments =+                  ({-# LINE 290 "src/GLua/AG/PrettyPrint.ag" #-}+                   _lhsIcomments+                   {-# LINE 8770 "src/GLua/AG/PrettyPrint.hs" #-}+                   )+          in  ( _lhsOcomments,_lhsOcopy,_lhsOendsWithPrefixExpression,_lhsOexprPretty,_lhsOisDefined,_lhsOisMultiline,_lhsOpretty,_lhsOstartsWithExprPrefixExpression,_lhsOvarPretty)))
src/GLua/AG/Token.hs view
@@ -79,7 +79,7 @@            | RCurly            | LSquare            | RSquare-           | Label !(String)+           | Label !(String) !(String) !(String)            | Identifier !(String)            deriving ( Eq,Generic,Ord) -- TokenList ---------------------------------------------------
src/GLua/ASTInstances.hs view
@@ -5,56 +5,56 @@ -- declarations, causing duplicate instances errors. module GLua.ASTInstances where -import GLua.AG.AST import Data.Aeson+import GLua.AG.AST -instance ToJSON AST where-instance FromJSON AST where+instance ToJSON AST+instance FromJSON AST -instance ToJSON Block where-instance FromJSON Block where+instance ToJSON Block+instance FromJSON Block -instance ToJSON MStat where-instance FromJSON MStat where+instance ToJSON MStat+instance FromJSON MStat -instance ToJSON MElse where-instance FromJSON MElse where+instance ToJSON MElse+instance FromJSON MElse -instance ToJSON MElseIf where-instance FromJSON MElseIf where+instance ToJSON MElseIf+instance FromJSON MElseIf -instance ToJSON Stat where-instance FromJSON Stat where+instance ToJSON Stat+instance FromJSON Stat -instance ToJSON AReturn where-instance FromJSON AReturn where+instance ToJSON AReturn+instance FromJSON AReturn -instance ToJSON FuncName where-instance FromJSON FuncName where+instance ToJSON FuncName+instance FromJSON FuncName -instance ToJSON PrefixExp where-instance FromJSON PrefixExp where+instance ToJSON PrefixExp+instance FromJSON PrefixExp -instance ToJSON PFExprSuffix where-instance FromJSON PFExprSuffix where+instance ToJSON PFExprSuffix+instance FromJSON PFExprSuffix -instance ToJSON MExpr where-instance FromJSON MExpr where+instance ToJSON MExpr+instance FromJSON MExpr -instance ToJSON Expr where-instance FromJSON Expr where+instance ToJSON Expr+instance FromJSON Expr -instance ToJSON Args where-instance FromJSON Args where+instance ToJSON Args+instance FromJSON Args -instance ToJSON Field where-instance FromJSON Field where+instance ToJSON Field+instance FromJSON Field -instance ToJSON FieldSep where-instance FromJSON FieldSep where+instance ToJSON FieldSep+instance FromJSON FieldSep -instance ToJSON BinOp where-instance FromJSON BinOp where+instance ToJSON BinOp+instance FromJSON BinOp -instance ToJSON UnOp where-instance FromJSON UnOp where+instance ToJSON UnOp+instance FromJSON UnOp
src/GLua/Lexer.hs view
@@ -1,41 +1,42 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE Rank2Types #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE CPP #-}  -- | Lex GLua into MTokens module GLua.Lexer where -import GLua.AG.Token ( Region(..), MToken(..), Token(..) )+import GLua.AG.Token (MToken (..), Region (..), Token (..))  import Data.Char (ord)-import Text.ParserCombinators.UU-    ( P,-      pEnd,-      pErrors,-      (<**>),-      micro,-      pPos,-      parse,-      (<$$>),-      pMany,-      pMaybe,-      pReturn,-      pSome,-      ExtAlternative(opt, (<<|>)) )-import Text.ParserCombinators.UU.Utils ( pDigit )-import Text.ParserCombinators.UU.BasicInstances-    ( Error,-      LineColPos(..),-      Str,-      createStr,-      pMunch,-      pSatisfy,-      pSym,-      pToken,-      Insertion(Insertion) )+import Text.ParserCombinators.UU (+  ExtAlternative (opt, (<<|>)),+  P,+  micro,+  pEnd,+  pErrors,+  pMany,+  pPos,+  pReturn,+  pSome,+  parse,+  (<$$>),+  (<**>),+ )+import Text.ParserCombinators.UU.BasicInstances (+  Error,+  Insertion (Insertion),+  LineColPos (..),+  Str,+  createStr,+  pMunch,+  pSatisfy,+  pSym,+  pToken,+ )+import Text.ParserCombinators.UU.Utils (pDigit)  -- | String parser that maintains positions. type LParser a = P (Str Char String LineColPos) a@@ -55,56 +56,58 @@ -- See luajit's src/lj_char.c and src/lj_char.h pIdentifierCharacter :: LParser Char pIdentifierCharacter = pSatisfy validChar (Insertion "Identifying character (letter, number, emoji)" 'a' 5)-    where-        validChar :: Char -> Bool-        validChar c =-            between c '0' '9' ||-            between c 'A' 'Z' ||-            c == '_'          ||-            between c 'a' 'z' ||-            ord c >= 128-+  where+    validChar :: Char -> Bool+    validChar c =+      between c '0' '9'+        || between c 'A' 'Z'+        || c == '_'+        || between c 'a' 'z'+        || ord c >= 128  pNonDigitIdentifierCharacter :: LParser Char pNonDigitIdentifierCharacter = pSatisfy validChar (Insertion "Identifying character (letter, emoji)" 'a' 5)-    where-        validChar :: Char -> Bool-        validChar c =-            between c 'A' 'Z' ||-            c == '_'          ||-            between c 'a' 'z' ||-            ord c >= 128+  where+    validChar :: Char -> Bool+    validChar c =+      between c 'A' 'Z'+        || c == '_'+        || between c 'a' 'z'+        || ord c >= 128  between :: Char -> Char -> Char -> Bool between c left right = c >= left && c <= right  -- | Parses a C-style block comment. parseCBlockComment :: LParser String-parseCBlockComment = const "" <$> pToken "*/" <<|>-            (:) <$> parseAnyChar <*> parseCBlockComment+parseCBlockComment =+  const "" <$> pToken "*/"+    <<|> (:) <$> parseAnyChar <*> parseCBlockComment  -- | Try to parse a block comment. -- Might actually return a single line Dash comment, because for example -- the following line is a line comment, rather than a block comment---[===== <- missing the last '[' bracket.+-- [===== <- missing the last '[' bracket. parseBlockComment :: LParser Token parseBlockComment = pToken "[" *> nested 0-    where-        -- The amount of =-signs in the string delimiter is n-        nested :: Int -> LParser Token-        nested n = pToken "=" *> nested (n + 1) <<|>-                   DashBlockComment n <$ pToken "[" <*> restString n <<|>-                   lineComment n <$> pUntilEnd+  where+    -- The amount of =-signs in the string delimiter is n+    nested :: Int -> LParser Token+    nested n =+      pToken "=" *> nested (n + 1)+        <<|> DashBlockComment n <$ pToken "[" <*> restString n+        <<|> lineComment n <$> pUntilEnd -        -- Turns out we were describing a line comment all along, cheeky bastard!-        -- (the last [ of the block comment start token is missing)-        lineComment :: Int -> String -> Token-        lineComment n str = DashComment $ '[' : replicate n '=' ++ str+    -- Turns out we were describing a line comment all along, cheeky bastard!+    -- (the last [ of the block comment start token is missing)+    lineComment :: Int -> String -> Token+    lineComment n str = DashComment $ '[' : replicate n '=' ++ str -        -- Right-recursive grammar. This part searches for the rest of the string until it finds the ]=^n] token-        restString :: Int -> LParser String-        restString n = const "" <$> pToken ("]" ++ replicate n '=' ++ "]") <<|>-                       (:) <$> parseAnyChar <*> restString n+    -- Right-recursive grammar. This part searches for the rest of the string until it finds the ]=^n] token+    restString :: Int -> LParser String+    restString n =+      const "" <$> pToken ("]" ++ replicate n '=' ++ "]")+        <<|> (:) <$> parseAnyChar <*> restString n  -- | Parse the string until the end. Used in parseLineComment among others. pUntilEnd :: LParser String@@ -118,201 +121,262 @@ -- This is because the first [ could also just be parsed as a square bracket. nestedString :: LParser String nestedString = nested 0-    where-        -- The amount of =-signs in the string delimiter is n-        nested :: Int -> LParser String-        nested n = (\str -> "=" ++ str) <$ pToken "=" <*> nested (n + 1) <<|>-                   ('[' :) <$ pToken "[" <*> restString n+  where+    -- The amount of =-signs in the string delimiter is n+    nested :: Int -> LParser String+    nested n =+      (\str -> "=" ++ str) <$ pToken "=" <*> nested (n + 1)+        <<|> ('[' :) <$ pToken "[" <*> restString n -        -- Right-recursive grammar. This part searches for the rest of the string until it finds the ]=^n] token-        restString :: Int -> LParser String-        restString n = pToken ("]" ++ replicate n '=' ++ "]") <<|>-                       (:) <$> parseAnyChar <*> restString n+    -- Right-recursive grammar. This part searches for the rest of the string until it finds the ]=^n] token+    restString :: Int -> LParser String+    restString n =+      pToken ("]" ++ replicate n '=' ++ "]")+        <<|> (:) <$> parseAnyChar <*> restString n  -- | Parse any kind of comment. parseComment :: LParser Token-parseComment =  pToken "--" <**> -- Dash block comment and dash comment both start with "--"-                    (const <$> (parseBlockComment <<|> DashComment <$> pUntilEnd)) <<|>-                pToken "/" <**>-                    (const <$>-                        (SlashBlockComment <$ pToken "*" <*> parseCBlockComment <<|>-                        SlashComment <$> parseLineComment "/" <<|>-                        pReturn Divide -- The /-sign is here because it also starts with '/'-                        ))+parseComment =+  pToken "--"+    <**> (const <$> (parseBlockComment <<|> DashComment <$> pUntilEnd)) -- Dash block comment and dash comment both start with "--"+    <<|> pToken "/"+      <**> ( const+              <$> ( SlashBlockComment <$ pToken "*" <*> parseCBlockComment+                      <<|> SlashComment <$> parseLineComment "/"+                      <<|> pReturn Divide -- The /-sign is here because it also starts with '/'+                  )+           )  -- | Parse single line strings e.g. "sdf", 'werf'. parseLineString :: Char -> LParser String parseLineString c = pSym c *> innerString-    where-        innerString :: LParser String-        innerString = pSym '\\' <**> -- Escaped character in string always starts with backslash-                         ((\c' str esc -> esc : c' ++ str) <$> escapeSequence <*> innerString) <<|>-                      const "" <$> pSym c <<|> -- the end of the string-                      (:) <$> pNoNewline <*> innerString -- the next character in the string--        escapeSequence :: LParser String-        escapeSequence = (:) <$> pSym 'z' <*> parseOptionalWhitespace <<|> (:[]) <$> parseAnyChar--        pNoNewline :: LParser Char-        pNoNewline = pSatisfy (/= '\n') (Insertion "Anything but a newline" c 5)+  where+    innerString :: LParser String+    innerString =+      pSym '\\'+        <**> ((\c' str esc -> esc : c' ++ str) <$> escapeSequence <*> innerString) -- Escaped character in string always starts with backslash+        <<|> const "" <$> pSym c+        <<|> (:) <$> pNoNewline <*> innerString -- the end of the string+        -- the next character in the string+    escapeSequence :: LParser String+    escapeSequence = (:) <$> pSym 'z' <*> parseOptionalWhitespace <<|> (: []) <$> parseAnyChar +    pNoNewline :: LParser Char+    pNoNewline = pSatisfy (/= '\n') (Insertion "Anything but a newline" c 5)  -- | Single and multiline strings. parseString :: LParser Token-parseString = DQString <$> parseLineString '"' <<|>-              SQString <$> parseLineString '\'' <<|>-              -- Parse either a multiline string or just a bracket.-              -- Placed here because they have the first token '[' in common-              pSym '[' <**> ((\_ -> MLString . (:) '[') <$$> nestedString <<|>-                        const <$> pReturn LSquare)+parseString =+  DQString <$> parseLineString '"'+    <<|> SQString <$> parseLineString '\''+    <<|>+    -- Parse either a multiline string or just a bracket.+    -- Placed here because they have the first token '[' in common+    pSym '['+      <**> ( (\_ -> MLString . (:) '[')+              <$$> nestedString+              <<|> const+              <$> pReturn LSquare+           )  -- | Parse any kind of number. parseNumber :: LParser Token parseNumber = TNumber <$> ((++) <$> (pZeroPrefixedNumber <<|> pNumber) <*> (pLLULL <<|> opt parseNumberSuffix ""))-    where-        -- Numbers starting with 0 can be regular numbers, hexadecimals or binary-        pZeroPrefixedNumber :: LParser String-        pZeroPrefixedNumber =-            pSym '0' <**> (-                (\hex _0 -> _0 : hex) <$> pHexadecimal <<|>-                (\bin _0 -> _0 : bin) <$> pBinary <<|>-                (\digits _0 -> _0 : digits) <$> (pDecimal <<|> pNumber) <<|>-                pure (:[])-            )+  where+    -- Numbers starting with 0 can be regular numbers, hexadecimals or binary+    pZeroPrefixedNumber :: LParser String+    pZeroPrefixedNumber =+      pSym '0'+        <**> ( (\hex _0 -> _0 : hex) <$> pHexadecimal+                <<|> (\bin _0 -> _0 : bin) <$> pBinary+                <<|> (\digits _0 -> _0 : digits) <$> (pDecimal <<|> pNumber)+                <<|> pure (: [])+             ) -        pNumber :: LParser String-        pNumber = (++) <$> pSome pDigit <*> opt pDecimal ""+    pNumber :: LParser String+    pNumber = (++) <$> pSome pDigit <*> opt pDecimal "" -        pDecimal :: LParser String-        pDecimal = (:) <$> pSym '.' <*> pMany pDigit+    pDecimal :: LParser String+    pDecimal = (:) <$> pSym '.' <*> pMany pDigit -        pHexDecimal :: LParser String-        pHexDecimal = (:) <$> pSym '.' <*> pMany pHex+    pHexDecimal :: LParser String+    pHexDecimal = (:) <$> pSym '.' <*> pMany pHex -        pHexadecimal :: LParser String-        pHexadecimal = (:) <$> (pSym 'x' <<|> pSym 'X') <*> ((++) <$> pSome pHex <*> opt pHexDecimal "")+    pHexadecimal :: LParser String+    pHexadecimal = (:) <$> (pSym 'x' <<|> pSym 'X') <*> ((++) <$> pSome pHex <*> opt pHexDecimal "") -        pBinary :: LParser String-        pBinary = (:) <$> (pSym 'b' <<|> pSym 'B') <*> ((++) <$> pSome pBin <*> opt pDecimal "")+    pBinary :: LParser String+    pBinary = (:) <$> (pSym 'b' <<|> pSym 'B') <*> ((++) <$> pSome pBin <*> opt pDecimal "") -        pHex :: LParser Char-        pHex = pDigit <<|> pSym 'a' <<|> pSym 'b' <<|> pSym 'c' <<|> pSym 'd' <<|> pSym 'e' <<|> pSym 'f'-                      <<|> pSym 'A' <<|> pSym 'B' <<|> pSym 'C' <<|> pSym 'D' <<|> pSym 'E' <<|> pSym 'F'+    pHex :: LParser Char+    pHex =+      pDigit+        <<|> pSym 'a'+        <<|> pSym 'b'+        <<|> pSym 'c'+        <<|> pSym 'd'+        <<|> pSym 'e'+        <<|> pSym 'f'+        <<|> pSym 'A'+        <<|> pSym 'B'+        <<|> pSym 'C'+        <<|> pSym 'D'+        <<|> pSym 'E'+        <<|> pSym 'F' -        pBin :: LParser Char-        pBin = pSym '0' <<|> pSym '1'+    pBin :: LParser Char+    pBin = pSym '0' <<|> pSym '1' -        -- LL/ULL suffix of a number, making it signed/unsigned int64 respectively-        -- http://luajit.org/ext_ffi_api.html#literals-        pLLULL :: LParser String-        pLLULL = pULL <<|> pLL+    -- LL/ULL suffix of a number, making it signed/unsigned int64 respectively+    -- http://luajit.org/ext_ffi_api.html#literals+    pLLULL :: LParser String+    pLLULL = pULL <<|> pLL -        pLL :: LParser String-        pLL = "LL" <$ (pSym 'L' <<|> pSym 'l') <* (pSym 'L' <<|> pSym 'l')+    pLL :: LParser String+    pLL = "LL" <$ (pSym 'L' <<|> pSym 'l') <* (pSym 'L' <<|> pSym 'l') -        pULL :: LParser String-        pULL = "ULL" <$ (pSym 'U' <<|> pSym 'u') <* pLL+    pULL :: LParser String+    pULL = "ULL" <$ (pSym 'U' <<|> pSym 'u') <* pLL  -- Parse the suffix of a number parseNumberSuffix :: LParser String parseNumberSuffix = imaginary <<|> extension-    where-        imaginary = (:[]) <$> (pSym 'i' <<|> pSym 'I')+  where+    imaginary = (: []) <$> (pSym 'i' <<|> pSym 'I') -        extension = (\e s d -> e : s ++ d) <$> (pSym 'e' <<|> pSym 'E' <<|> pSym 'p' <<|> pSym 'P')-            <*> opt (pToken "+" <<|> pToken "-") ""-            <*> pSome pDigit+    extension =+      (\e s d -> e : s ++ d)+        <$> (pSym 'e' <<|> pSym 'E' <<|> pSym 'p' <<|> pSym 'P')+        <*> opt (pToken "+" <<|> pToken "-") ""+        <*> pSome pDigit  -- | Parse a keyword. Note: It must really a key/word/! This parser makes sure to return an identifier when -- it's actually an identifier that starts with that keyword. parseKeyword :: Token -> String -> LParser Token-parseKeyword tok word = pToken word <**>-                            ((\k -> Identifier . (++) k) <$$> pSome pIdentifierCharacter <<|> const <$> pReturn tok)+parseKeyword tok word =+  pToken word+    <**> ((\k -> Identifier . (++) k) <$$> pSome pIdentifierCharacter <<|> const <$> pReturn tok)  -- | Parse just an identifier. parseIdentifier :: LParser String parseIdentifier = (:) <$> pNonDigitIdentifierCharacter <*> pMany pIdentifierCharacter  -- | Parse a label.-parseLabel :: LParser String-parseLabel = pToken "::" *> (pMaybe parseWhitespace *> parseIdentifier <* pMaybe parseWhitespace) <* pToken "::"+parseLabel :: LParser Token+parseLabel =+    Label+      <$ pToken "::"+      <*> parseOptionalWhitespace+      <*> parseIdentifier+      <*> parseOptionalWhitespace+      <* pToken "::"  -- | Parse anything to do with dots. Indexaction (.), concatenation (..) or varargs (...) parseDots :: LParser Token-parseDots = pToken "." <**> ( -- A dot means it's either a VarArg (...), concatenation (..) or just a dot (.)-                const <$> (pToken "." <**> (-                    const VarArg <$ pToken "." <<|>-                    const <$> pReturn Concatenate-                )) <<|>-                (\ds sfx dot -> TNumber $ dot ++ ds ++ sfx) <$> pSome pDigit <*> opt parseNumberSuffix "" <<|>-                const <$> pReturn Dot+parseDots =+  pToken "."+    <**> ( -- A dot means it's either a VarArg (...), concatenation (..) or just a dot (.)+           const+            <$> ( pToken "."+                    <**> ( const VarArg <$ pToken "."+                            <<|> const <$> pReturn Concatenate+                         )                 )+            <<|> (\ds sfx dot -> TNumber $ dot ++ ds ++ sfx) <$> pSome pDigit <*> opt parseNumberSuffix ""+            <<|> const <$> pReturn Dot+         )  -- | Parse any kind of token. parseToken :: LParser Token-parseToken =    parseComment                                 <<|>--                -- Constants-                parseString                                  <<|>-                parseNumber                                  <<|>-                parseKeyword TTrue "true"                    <<|>-                parseKeyword TFalse "false"                  <<|>-                parseKeyword Nil "nil"                       <<|>-                parseKeyword Not "not"                       <<|>-                parseKeyword And "and"                       <<|>-                parseKeyword Or "or"                         <<|>-                parseKeyword Function "function"             <<|>-                parseKeyword Local "local"                   <<|>-                parseKeyword If "if"                         <<|>-                parseKeyword Then "then"                     <<|>-                parseKeyword Elseif "elseif"                 <<|>-                parseKeyword Else "else"                     <<|>-                parseKeyword For "for"                       <<|>-                parseKeyword In "in"                         <<|>-                parseKeyword Do "do"                         <<|>-                parseKeyword While "while"                   <<|>-                parseKeyword Until "until"                   <<|>-                parseKeyword Repeat "repeat"                 <<|>-                parseKeyword Continue "continue"             <<|>-                parseKeyword Break "break"                   <<|>-                parseKeyword Return "return"                 <<|>-                parseKeyword End "end"                       <<|>--                Identifier <$> parseIdentifier               <<|>--                Semicolon <$ pToken ";"                      <<|>-                parseDots                                    <<|>--                -- Operators-                Plus <$ pToken "+"                           <<|>-                Minus <$ pToken "-"                          <<|>-                Multiply <$ pToken "*"                       <<|>-                Modulus <$ pToken "%"                        <<|>-                Power <$ pToken "^"                          <<|>-                TEq <$ pToken "=="                           <<|>-                Equals <$ pToken "="                         <<|>-                TNEq <$ pToken "~="                          <<|>-                TCNEq <$ pToken "!="                         <<|>-                CNot <$ pToken "!"                           <<|>-                TLEQ <$ pToken "<="                          <<|>-                TLT <$ pToken "<"                            <<|>-                TGEQ <$ pToken ">="                          <<|>-                TGT <$ pToken ">"                            <<|>-                Label <$> parseLabel                         <<|>-                Colon <$ pToken ":"                          <<|>-                Comma <$ pToken ","                          <<|>-                Hash <$ pToken "#"  `micro` 10               <<|> -- Add micro cost to prevent conflict with parseHashBang-                CAnd <$ pToken "&&"                          <<|>-                COr <$ pToken "||"                           <<|>--                LRound <$ pToken "("                         <<|>-                RRound <$ pToken ")"                         <<|>-                LCurly <$ pToken "{"                         <<|>-                RCurly <$ pToken "}"                         <<|>-                -- Other square bracket is parsed in parseString-                RSquare <$ pToken "]"                        <<|>-                Whitespace <$> parseWhitespace-+parseToken =+  parseComment+    <<|>+    -- Constants+    parseString+    <<|> parseNumber+    <<|> parseKeyword TTrue "true"+    <<|> parseKeyword TFalse "false"+    <<|> parseKeyword Nil "nil"+    <<|> parseKeyword Not "not"+    <<|> parseKeyword And "and"+    <<|> parseKeyword Or "or"+    <<|> parseKeyword Function "function"+    <<|> parseKeyword Local "local"+    <<|> parseKeyword If "if"+    <<|> parseKeyword Then "then"+    <<|> parseKeyword Elseif "elseif"+    <<|> parseKeyword Else "else"+    <<|> parseKeyword For "for"+    <<|> parseKeyword In "in"+    <<|> parseKeyword Do "do"+    <<|> parseKeyword While "while"+    <<|> parseKeyword Until "until"+    <<|> parseKeyword Repeat "repeat"+    <<|> parseKeyword Continue "continue"+    <<|> parseKeyword Break "break"+    <<|> parseKeyword Return "return"+    <<|> parseKeyword End "end"+    <<|> Identifier+    <$> parseIdentifier+    <<|> Semicolon+    <$ pToken ";"+    <<|> parseDots+    <<|>+    -- Operators+    Plus+    <$ pToken "+"+    <<|> Minus+    <$ pToken "-"+    <<|> Multiply+    <$ pToken "*"+    <<|> Modulus+    <$ pToken "%"+    <<|> Power+    <$ pToken "^"+    <<|> TEq+    <$ pToken "=="+    <<|> Equals+    <$ pToken "="+    <<|> TNEq+    <$ pToken "~="+    <<|> TCNEq+    <$ pToken "!="+    <<|> CNot+    <$ pToken "!"+    <<|> TLEQ+    <$ pToken "<="+    <<|> TLT+    <$ pToken "<"+    <<|> TGEQ+    <$ pToken ">="+    <<|> TGT+    <$ pToken ">"+    <<|> parseLabel+    <<|> Colon+    <$ pToken ":"+    <<|> Comma+    <$ pToken ","+    <<|> Hash+    <$ pToken "#"+    `micro` 10+    <<|> CAnd -- Add micro cost to prevent conflict with parseHashBang+    <$ pToken "&&"+    <<|> COr+    <$ pToken "||"+    <<|> LRound+    <$ pToken "("+    <<|> RRound+    <$ pToken ")"+    <<|> LCurly+    <$ pToken "{"+    <<|> RCurly+    <$ pToken "}"+    <<|>+    -- Other square bracket is parsed in parseString+    RSquare+    <$ pToken "]"+    <<|> Whitespace+    <$> parseWhitespace  -- | A thing of which the region is to be parsed annotated :: (Region -> a -> b) -> LParser a -> LParser b
src/GLua/LineLimitParser.hs view
@@ -4,12 +4,11 @@  import Control.Applicative ((<|>)) import Control.Monad (void)-import Text.Parsec (eof, satisfy, skipMany1, endOfLine, parse)-import Text.Parsec.String (Parser)-import GLua.AG.Token (Region(Region))+import GLua.AG.Token (Region (Region)) import GLua.PSLexer (pPos)-import GLuaFixer.LintMessage (LintMessage(..), Issue (LineTooLong), Severity (LintWarning))-+import GLuaFixer.LintMessage (Issue (LineTooLong), LintMessage (..), Severity (LintWarning))+import Text.Parsec (endOfLine, eof, parse, satisfy, skipMany1)+import Text.Parsec.String (Parser)  -- | The maximum line length newtype LineLimit = LineLimit Int@@ -17,16 +16,17 @@ execParseLineLimits :: FilePath -> LineLimit -> String -> [LintMessage] execParseLineLimits filePath lineLimit@(LineLimit limit) contents =   -- No point in parsing anything if the limit is 0-  if limit <= 0 then []-  else case parse (lineLimitParser filePath lineLimit) "input" contents of-    Left parseError -> error $ "Parse error while checking line limit: " ++ show parseError-    Right lintWarnings -> lintWarnings+  if limit <= 0+    then []+    else case parse (lineLimitParser filePath lineLimit) "input" contents of+      Left parseError -> error $ "Parse error while checking line limit: " ++ show parseError+      Right lintWarnings -> lintWarnings  -- | Parser that produces warnings about lines being too long lineLimitParser :: FilePath -> LineLimit -> Parser [LintMessage] lineLimitParser filePath lineLimit =-  [] <$ eof <|>-  recurse filePath lineLimit+  [] <$ eof+    <|> recurse filePath lineLimit  -- | Recursive case of 'lineLimitParser', recurse :: FilePath -> LineLimit -> Parser [LintMessage]@@ -34,8 +34,8 @@   countAtMost limit notNewline   -- If it finds line endings, it recurses without producing warnings. Otherwise, if it finds   -- anything else, produce a warning and still recurse.-  endOfLines *> lineLimitParser filePath lineLimit <|>-    (:) <$> lineLimitWarning filePath <*> lineLimitParser filePath lineLimit+  endOfLines *> lineLimitParser filePath lineLimit+    <|> (:) <$> lineLimitWarning filePath <*> lineLimitParser filePath lineLimit  -- | Succeeds when a character is not a line notNewline :: Parser Char@@ -52,7 +52,8 @@   skipMany1 notNewline   endPos <- pPos -  let warnRegion = Region startPos endPos+  let+    warnRegion = Region startPos endPos    pure $ LintMessage LintWarning warnRegion LineTooLong filePath 
src/GLua/PSLexer.hs view
@@ -3,38 +3,39 @@  module GLua.PSLexer where -import GLua.AG.Token ( Region(..), MToken(..), Token(..) )+import GLua.AG.Token (MToken (..), Region (..), Token (..)) -import Data.Char(ord)-import Text.Parsec-    ( SourcePos,-      ParseError,-      char,-      anyChar,-      digit,-      endOfLine,-      noneOf,-      oneOf,-      satisfy,-      space,-      string,-      eof,-      many1,-      manyTill,-      option,-      optionMaybe,-      sourceColumn,-      sourceLine,-      (<?>),-      (<|>),-      getPosition,-      lookAhead,-      many,-      parse,-      try )-import Text.Parsec.String ( Parser )-import Text.Parsec.Pos ( newPos )-import Text.ParserCombinators.UU.BasicInstances(LineColPos(..))+import Data.Char (ord)+import Text.Parsec (+  ParseError,+  SourcePos,+  anyChar,+  char,+  digit,+  endOfLine,+  eof,+  getPosition,+  lookAhead,+  many,+  many1,+  manyTill,+  noneOf,+  oneOf,+  option,+  optionMaybe,+  parse,+  satisfy,+  sourceColumn,+  sourceLine,+  space,+  string,+  try,+  (<?>),+  (<|>),+ )+import Text.Parsec.Pos (newPos)+import Text.Parsec.String (Parser)+import Text.ParserCombinators.UU.BasicInstances (LineColPos (..))  -- | Region start to SourcePos rgStart2sp :: Region -> SourcePos@@ -63,25 +64,24 @@ -- See luajit's src/lj_char.c and src/lj_char.h pIdentifierCharacter :: Parser Char pIdentifierCharacter = satisfy validChar-    where-        validChar :: Char -> Bool-        validChar c =-            cBetween c '0' '9' ||-            cBetween c 'A' 'Z' ||-            c == '_'          ||-            cBetween c 'a' 'z' ||-            ord c >= 128-+  where+    validChar :: Char -> Bool+    validChar c =+      cBetween c '0' '9'+        || cBetween c 'A' 'Z'+        || c == '_'+        || cBetween c 'a' 'z'+        || ord c >= 128  pNonDigitIdentifierCharacter :: Parser Char pNonDigitIdentifierCharacter = satisfy validChar-    where-        validChar :: Char -> Bool-        validChar c =-            cBetween c 'A' 'Z' ||-            c == '_'          ||-            cBetween c 'a' 'z' ||-            ord c >= 128+  where+    validChar :: Char -> Bool+    validChar c =+      cBetween c 'A' 'Z'+        || c == '_'+        || cBetween c 'a' 'z'+        || ord c >= 128  cBetween :: Char -> Char -> Char -> Bool cBetween c left right = c >= left && c <= right@@ -101,46 +101,46 @@ -- | An escaped character of a single line string -- Takes the delimiter of the string as parameter escapedStringChar :: Char -> Parser String-escapedStringChar delim = (\escaped -> '\\' : escaped) <$ char '\\' <*> escapedChar <|> (:[]) <$> noneOf ['\n', delim]-    where-        escapedChar = (:) <$> char 'z' <*> parseOptionalWhitespace <|> (:[]) <$> anyChar+escapedStringChar delim = (\escaped -> '\\' : escaped) <$ char '\\' <*> escapedChar <|> (: []) <$> noneOf ['\n', delim]+  where+    escapedChar = (:) <$> char 'z' <*> parseOptionalWhitespace <|> (: []) <$> anyChar  -- | The start of a nested string -- Returns the amount of =-signs at the start of the nested string startNestedString :: Parser String startNestedString = do-    _ <- char '['-    depth <- many (char '=')-    _ <- char '['-    return depth+  _ <- char '['+  depth <- many (char '=')+  _ <- char '['+  return depth  -- | Parses a multiline string -- returns the amount of =-signs in the string delimiter and the contents nestedString :: String -> Parser String nestedString depth = do-    let endStr = "]" ++ depth ++ "]"-    manyTill anyChar (try $ string endStr)+  let+    endStr = "]" ++ depth ++ "]"+  manyTill anyChar (try $ string endStr)  -- | Parse Lua style comments parseLuaComment :: Parser Token parseLuaComment = do-    _ <- string "--"-    -- When a nested comment is started, it must be finished-    startNested <- optionMaybe (try startNestedString)--    case startNested of-        Nothing -> DashComment <$> pUntilEnd-        Just depth -> do-            contents <- nestedString depth-            return $ DashBlockComment (length depth) contents+  _ <- string "--"+  -- When a nested comment is started, it must be finished+  startNested <- optionMaybe (try startNestedString) +  case startNested of+    Nothing -> DashComment <$> pUntilEnd+    Just depth -> do+      contents <- nestedString depth+      return $ DashBlockComment (length depth) contents  -- | Parse C-Style comments parseCComment :: Parser Token parseCComment = do-    _ <- char '/'-    try (SlashComment <$ char '/' <*> pUntilEnd) <|>-     SlashBlockComment <$ char '*' <*> manyTill anyChar (try (string "*/") <|> const "\n" <$> eof)+  _ <- char '/'+  try (SlashComment <$ char '/' <*> pUntilEnd)+    <|> SlashBlockComment <$ char '*' <*> manyTill anyChar (try (string "*/") <|> const "\n" <$> eof)  -- | Parse any kind of comment. parseComment :: Parser Token@@ -156,159 +156,171 @@  -- | Single and multiline strings. parseString :: Parser Token-parseString = SQString <$> parseLineString '\'' <|>-              DQString <$> parseLineString '"' <|> do-                depth <- startNestedString-                nestedStringToMLString depth <$> nestedString depth <?> "String"+parseString =+  SQString <$> parseLineString '\''+    <|> DQString <$> parseLineString '"'+    <|> do+      depth <- startNestedString+      nestedStringToMLString depth <$> nestedString depth <?> "String"  -- | Parse any kind of number. -- Except for numbers that start with a '.'. That's handled by parseDots to solve ambiguity. parseNumber :: Parser Token parseNumber = TNumber <$> ((++) <$> (pHexadecimal <|> pBinary <|> pNumber) <*> (pLLULL <|> option "" parseNumberSuffix)) <?> "Number"-    where-        pNumber :: Parser String-        pNumber = (++) <$> many1 digit <*> option "" pDecimal+  where+    pNumber :: Parser String+    pNumber = (++) <$> many1 digit <*> option "" pDecimal -        pDecimal :: Parser String-        pDecimal = (:) <$> char '.' <*> many digit+    pDecimal :: Parser String+    pDecimal = (:) <$> char '.' <*> many digit -        pHexDecimal :: Parser String-        pHexDecimal = (:) <$> char '.' <*> many pHex+    pHexDecimal :: Parser String+    pHexDecimal = (:) <$> char '.' <*> many pHex -        pHexadecimal :: Parser String-        pHexadecimal = (++) <$> (try (string "0x") <|> try (string "0X")) <*> ((++) <$> many1 pHex <*> option "" pHexDecimal)+    pHexadecimal :: Parser String+    pHexadecimal = (++) <$> (try (string "0x") <|> try (string "0X")) <*> ((++) <$> many1 pHex <*> option "" pHexDecimal) -        pHex :: Parser Char-        pHex = digit <|> oneOf ['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']+    pHex :: Parser Char+    pHex = digit <|> oneOf ['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F'] -        pBinary :: Parser String-        pBinary = (++) <$> (try (string "0b") <|> try (string "0B")) <*> ((++) <$> many1 pBin <*> option "" pDecimal)+    pBinary :: Parser String+    pBinary = (++) <$> (try (string "0b") <|> try (string "0B")) <*> ((++) <$> many1 pBin <*> option "" pDecimal) -        pBin :: Parser Char-        pBin = digit <|> oneOf ['0', '1']+    pBin :: Parser Char+    pBin = digit <|> oneOf ['0', '1'] -        -- LL/ULL suffix of a number, making it signed/unsigned int64 respectively-        -- http://luajit.org/ext_ffi_api.html#literals-        pLLULL :: Parser String-        pLLULL = pULL <|> pLL+    -- LL/ULL suffix of a number, making it signed/unsigned int64 respectively+    -- http://luajit.org/ext_ffi_api.html#literals+    pLLULL :: Parser String+    pLLULL = pULL <|> pLL -        pLL :: Parser String-        pLL = "LL" <$ oneOf ['L', 'l'] <* oneOf ['L', 'l']+    pLL :: Parser String+    pLL = "LL" <$ oneOf ['L', 'l'] <* oneOf ['L', 'l'] -        pULL :: Parser String-        pULL = "ULL" <$ oneOf ['U', 'u'] <* pLL+    pULL :: Parser String+    pULL = "ULL" <$ oneOf ['U', 'u'] <* pLL  -- Parse the suffix of a number parseNumberSuffix :: Parser String parseNumberSuffix = imaginary <|> extension-    where-        imaginary = (:[]) <$> oneOf ['i', 'I']-        extension = (\e s d -> e : s ++ d) <$> oneOf ['e', 'E', 'p', 'P']-            <*> option "" (string "+" <|> string "-")-            <*> many1 digit+  where+    imaginary = (: []) <$> oneOf ['i', 'I']+    extension =+      (\e s d -> e : s ++ d)+        <$> oneOf ['e', 'E', 'p', 'P']+        <*> option "" (string "+" <|> string "-")+        <*> many1 digit  -- | Parse either a keyword or an identifier that starts with that keyword parseKeyword :: Token -> String -> Parser Token-parseKeyword tok str = try (do-    _ <- string str-    (\s -> Identifier (str ++ s)) <$> many1 (pIdentifierCharacter) <|>-        return tok-    <?> "Keyword " ++ str)+parseKeyword tok str =+  try+    ( do+        _ <- string str+        (\s -> Identifier (str ++ s)) <$> many1 (pIdentifierCharacter)+          <|> return tok+        <?> "Keyword "+        ++ str+    )  -- | Parse just an identifier. parseIdentifier :: Parser String parseIdentifier = (:) <$> pNonDigitIdentifierCharacter <*> many pIdentifierCharacter <?> "Identifier"  -- | Parse a label.-parseLabel :: Parser String-parseLabel = string "::" *> (optionMaybe parseWhitespace *> parseIdentifier <* optionMaybe parseWhitespace) <* string "::" <?> "Label"+parseLabel :: Parser Token+parseLabel =+  Label+    <$ string "::"+    <*> parseOptionalWhitespace+    <*> parseIdentifier+    <*> parseOptionalWhitespace+    <* string "::"+    <?> "Label"  -- | Parse anything to do with dots. Indexaction (.), concatenation (..), varargs (...) or numbers that start with a dot parseDots :: Parser Token parseDots = do-    _ <- char '.' -- first .-    try (do+  _ <- char '.' -- first .+  try+    ( do         _ <- char '.' -- second .-        try (VarArg <$ char '.') <|> -- third .-            return Concatenate) <|>--        -- try to parse a number that starts with a .-        try (do-            nums <- many1 digit-            suffix <- option "" parseNumberSuffix-            return $ TNumber ('.' : (nums ++ suffix))-            ) <|>---        return Dot+        try (VarArg <$ char '.')+          <|> return Concatenate -- third .+    )+    <|>+    -- try to parse a number that starts with a .+    try+      ( do+          nums <- many1 digit+          suffix <- option "" parseNumberSuffix+          return $ TNumber ('.' : (nums ++ suffix))+      )+    <|> return Dot  -- | Parse any kind of token. parseToken :: Parser Token parseToken =-                Whitespace <$> parseWhitespace                  <|>-                -- Constants-                try parseString                                 <|>-                parseNumber                                     <|>-                parseKeyword TTrue "true"                       <|>-                parseKeyword TFalse "false"                     <|>-                parseKeyword Nil "nil"                          <|>-                parseKeyword Not "not"                          <|>-                parseKeyword And "and"                          <|>-                parseKeyword Or "or"                            <|>-                parseKeyword Function "function"                <|>-                parseKeyword Local "local"                      <|>-                parseKeyword If "if"                            <|>-                parseKeyword Then "then"                        <|>-                parseKeyword Elseif "elseif"                    <|>-                parseKeyword Else "else"                        <|>-                parseKeyword For "for"                          <|>-                parseKeyword In "in"                            <|>-                parseKeyword Do "do"                            <|>-                parseKeyword While "while"                      <|>-                parseKeyword Until "until"                      <|>-                parseKeyword Repeat "repeat"                    <|>-                parseKeyword Continue "continue"                <|>-                parseKeyword Break "break"                      <|>-                parseKeyword Return "return"                    <|>-                parseKeyword End "end"                          <|>--                Identifier <$> parseIdentifier                  <|>--                Semicolon  <$ char ';'                          <|>-                parseDots                                       <|>--                try parseComment                                <|>--                -- Operators-                Plus <$ string "+"                              <|>-                Minus <$ string "-"                             <|>-                Multiply <$ string "*"                          <|>-                Divide <$ string "/"                            <|>-                Modulus <$ string "%"                           <|>-                Power <$ string "^"                             <|>-                TEq <$ try (string "==")                        <|>-                Equals <$ string "="                            <|>-                TNEq <$ string "~="                             <|>-                TCNEq <$ try (string "!=")                      <|>-                CNot <$ string "!"                              <|>-                TLEQ <$ try (string "<=")                       <|>-                TLT <$ string "<"                               <|>-                TGEQ <$ try (string ">=")                       <|>-                TGT <$ string ">"                               <|>-                Label <$> try parseLabel                        <|>-                Colon <$ string ":"                             <|>-                Comma <$ string ","                             <|>-                Hash <$ string "#"                              <|>-                CAnd <$ string "&&"                             <|>-                COr <$ string "||"                              <|>--                LRound <$ char '('                              <|>-                RRound <$ char ')'                              <|>-                LCurly <$ char '{'                              <|>-                RCurly <$ char '}'                              <|>-                LSquare <$ char '['                             <|>-                RSquare <$ char ']'-+  Whitespace <$> parseWhitespace+    <|>+    -- Constants+    try parseString+    <|> parseNumber+    <|> parseKeyword TTrue "true"+    <|> parseKeyword TFalse "false"+    <|> parseKeyword Nil "nil"+    <|> parseKeyword Not "not"+    <|> parseKeyword And "and"+    <|> parseKeyword Or "or"+    <|> parseKeyword Function "function"+    <|> parseKeyword Local "local"+    <|> parseKeyword If "if"+    <|> parseKeyword Then "then"+    <|> parseKeyword Elseif "elseif"+    <|> parseKeyword Else "else"+    <|> parseKeyword For "for"+    <|> parseKeyword In "in"+    <|> parseKeyword Do "do"+    <|> parseKeyword While "while"+    <|> parseKeyword Until "until"+    <|> parseKeyword Repeat "repeat"+    <|> parseKeyword Continue "continue"+    <|> parseKeyword Break "break"+    <|> parseKeyword Return "return"+    <|> parseKeyword End "end"+    <|> Identifier <$> parseIdentifier+    <|> Semicolon <$ char ';'+    <|> parseDots+    <|> try parseComment+    <|>+    -- Operators+    Plus <$ string "+"+    <|> Minus <$ string "-"+    <|> Multiply <$ string "*"+    <|> Divide <$ string "/"+    <|> Modulus <$ string "%"+    <|> Power <$ string "^"+    <|> TEq <$ try (string "==")+    <|> Equals <$ string "="+    <|> TNEq <$ string "~="+    <|> TCNEq <$ try (string "!=")+    <|> CNot <$ string "!"+    <|> TLEQ <$ try (string "<=")+    <|> TLT <$ string "<"+    <|> TGEQ <$ try (string ">=")+    <|> TGT <$ string ">"+    <|> try parseLabel+    <|> Colon <$ string ":"+    <|> Comma <$ string ","+    <|> Hash <$ string "#"+    <|> CAnd <$ string "&&"+    <|> COr <$ string "||"+    <|> LRound <$ char '('+    <|> RRound <$ char ')'+    <|> LCurly <$ char '{'+    <|> RCurly <$ char '}'+    <|> LSquare <$ char '['+    <|> RSquare <$ char ']'  -- | A thing of which the region is to be parsed annotated :: (Region -> a -> b) -> Parser a -> Parser b
src/GLua/PSParser.hs view
@@ -1,70 +1,78 @@ {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TupleSections #-}  module GLua.PSParser where -import GLua.TokenTypes-    ( isWhitespace, mpos, rgEnd, rgStart, splitComments, tokenSize )-import GLua.AG.Token-    ( Region(..),-      MToken(..),-      Token(..) )-import GLua.AG.AST-    ( AST(..),-      AReturn(..),-      Args(..),-      BinOp(..),-      Block(..),-      Expr(..),-      Field(..),-      FieldSep(..),-      FuncName(..),-      MElse(MElse),-      MElseIf(MElseIf),-      MExpr(..),-      MStat(..),-      PFExprSuffix(..),-      PrefixExp(..),-      Stat(..),-      UnOp(..) )+import GLua.AG.AST (+  AReturn (..),+  AST (..),+  Args (..),+  BinOp (..),+  Block (..),+  Expr (..),+  Field (..),+  FieldSep (..),+  FuncName (..),+  MElse (MElse),+  MElseIf (MElseIf),+  MExpr (..),+  MStat (..),+  PFExprSuffix (..),+  PrefixExp (..),+  Stat (..),+  UnOp (..),+ )+import GLua.AG.Token (+  MToken (..),+  Region (..),+  Token (..),+ ) import qualified GLua.Lexer as Lex+import GLua.TokenTypes (+  isWhitespace,+  mpos,+  rgEnd,+  rgStart,+  splitComments,+  tokenSize,+ ) -import Text.Parsec-    ( SourcePos,-      ParseError,-      SourceName,-      anyToken,-      between,-      chainl1,-      choice,-      eof,-      many1,-      option,-      optionMaybe,-      sepBy1,-      incSourceColumn,-      sourceColumn,-      sourceLine,-      (<?>),-      (<|>),-      getPosition,-      getState,-      lookAhead,-      many,-      putState,-      runParser,-      tokenPrim,-      try,-      Parsec )-import Text.Parsec.Pos ( newPos )-import Text.ParserCombinators.UU.BasicInstances(LineColPos(..))+import Text.Parsec (+  ParseError,+  Parsec,+  SourceName,+  SourcePos,+  anyToken,+  between,+  chainl1,+  choice,+  eof,+  getPosition,+  getState,+  incSourceColumn,+  lookAhead,+  many,+  many1,+  option,+  optionMaybe,+  putState,+  runParser,+  sepBy1,+  sourceColumn,+  sourceLine,+  tokenPrim,+  try,+  (<?>),+  (<|>),+ )+import Text.Parsec.Pos (newPos)+import Text.ParserCombinators.UU.BasicInstances (LineColPos (..))  type AParser = Parsec [MToken] LineColPos - -- | Execute a parser execAParser :: SourceName -> AParser a -> [MToken] -> Either ParseError a execAParser name p = runParser p (LineColPos 0 0 0) name@@ -76,12 +84,15 @@ -- | Parse Garry's mod Lua tokens to an abstract syntax tree. -- Also returns parse errors parseGLua :: [MToken] -> Either ParseError AST-parseGLua mts = let (cms, ts) = splitComments . filter (not . isWhitespace) $ mts in-                 execAParser "source.lua" (parseChunk cms) ts+parseGLua mts =+  let+    (cms, ts) = splitComments . filter (not . isWhitespace) $ mts+  in+    execAParser "source.lua" (parseChunk cms) ts  parseGLuaFromString :: String -> Either ParseError AST parseGLuaFromString contents =-    parseGLua $ filter (not . isWhitespace) $ fst $ Lex.execParseTokens contents+  parseGLua $ filter (not . isWhitespace) $ fst $ Lex.execParseTokens contents  -- | Region start to SourcePos rgStart2sp :: Region -> SourcePos@@ -112,8 +123,9 @@ pMTok :: Token -> AParser MToken pMTok tok =   do-    let testMToken :: MToken -> Maybe MToken-        testMToken mt@(MToken _ t) = if t == tok then Just mt else Nothing+    let+      testMToken :: MToken -> Maybe MToken+      testMToken mt@(MToken _ t) = if t == tok then Just mt else Nothing      mt@(MToken pos _) <- tokenPrim show updatePosMToken testMToken @@ -121,13 +133,13 @@      return mt - -- Tokens that satisfy a condition pMSatisfy :: (MToken -> Bool) -> AParser MToken pMSatisfy cond =   do-    let testMToken :: MToken -> Maybe MToken-        testMToken mt = if cond mt then Just mt else Nothing+    let+      testMToken :: MToken -> Maybe MToken+      testMToken mt = if cond mt then Just mt else Nothing      pMToken testMToken @@ -136,12 +148,13 @@   let     testMToken :: MToken -> Maybe (MToken, a)     testMToken mt = (mt,) <$> cond mt-  in do-    (MToken pos _, res) <- tokenPrim show updatePosMToken testMToken+  in+    do+      (MToken pos _, res) <- tokenPrim show updatePosMToken testMToken -    putState (rgEnd pos)+      putState (rgEnd pos) -    pure res+      pure res  -- | Get the source position -- Simply gets the position of the next token@@ -182,73 +195,89 @@ -- | Label parseLabel :: AParser MToken parseLabel = pMSatisfy isLabel <?> "label"-    where-        isLabel :: MToken -> Bool-        isLabel (MToken _ (Label _)) = True-        isLabel _ = False+  where+    isLabel :: MToken -> Bool+    isLabel (MToken _ (Label {})) = True+    isLabel _ = False  -- | Parse a single statement parseStat :: AParser Stat-parseStat = ALabel <$> parseLabel <|>-            ABreak <$ pMTok Break <|>-            AContinue <$ pMTok Continue <|>-            ADo <$ pMTok Do <*> parseBlock <* pMTok End <|>-            AWhile <$ pMTok While <*> parseExpression <* pMTok Do <*> parseBlock <* pMTok End <|>-            ARepeat <$ pMTok Repeat <*> parseBlock <* pMTok Until <*> parseExpression <|>-            parseIf <|>-            parseFunction <|>-            parseFor <|>-            try (AGoto <$ pMTok (Identifier "goto") <*> pName) <|>-            parseDefinition <|>-            AFuncCall <$> pFunctionCall <|>-            pMTok Local *>-                (parseLocalDefinition <|>-                parseLocalFunction)-+parseStat =+  ALabel <$> parseLabel+    <|> ABreak <$ pMTok Break+    <|> AContinue <$ pMTok Continue+    <|> ADo <$ pMTok Do <*> parseBlock <* pMTok End+    <|> AWhile <$ pMTok While <*> parseExpression <* pMTok Do <*> parseBlock <* pMTok End+    <|> ARepeat <$ pMTok Repeat <*> parseBlock <* pMTok Until <*> parseExpression+    <|> parseIf+    <|> parseFunction+    <|> parseFor+    <|> try (AGoto <$ pMTok (Identifier "goto") <*> pName)+    <|> parseDefinition+    <|> AFuncCall <$> pFunctionCall+    <|> pMTok Local+      *> ( parseLocalDefinition+            <|> parseLocalFunction+         )  -- | Global definition -- Note: Uses try to avoid conflicts with function calls parseDefinition :: AParser Stat parseDefinition = flip (<?>) "variable definition" $ do-    vars <- try $ do-        vs <- parseVarList-        _ <- pMTok Equals-        return vs+  vars <- try $ do+    vs <- parseVarList+    _ <- pMTok Equals+    return vs -    exprs <- parseExpressionList+  exprs <- parseExpressionList -    return $ Def (zip vars (map Just exprs ++ repeat Nothing))+  return $ Def (zip vars (map Just exprs ++ repeat Nothing))  -- | Local definition parseLocalDefinition :: AParser Stat parseLocalDefinition = def <$> parseLocalVarList <*> option [] (pMTok Equals *> parseExpressionList) <?> "variable declaration"-    where-        def :: [PrefixExp] -> [MExpr] -> Stat-        def ps exs = LocDef $ zip ps (map Just exs ++ repeat Nothing)+  where+    def :: [PrefixExp] -> [MExpr] -> Stat+    def ps exs = LocDef $ zip ps (map Just exs ++ repeat Nothing)  -- | Global function definition parseFunction :: AParser Stat-parseFunction = AFunc <$ pMTok Function <*> parseFuncName <*>-                     between (pMTok LRound) (pMTok RRound) parseParList <*>-                     parseBlock <*-                     pMTok End <?> "function definition"+parseFunction =+  AFunc+    <$ pMTok Function+    <*> parseFuncName+    <*> between (pMTok LRound) (pMTok RRound) parseParList+    <*> parseBlock+    <* pMTok End+    <?> "function definition"  -- | Local function definition parseLocalFunction :: AParser Stat-parseLocalFunction = ALocFunc <$ pMTok Function <*> parseLocFuncName <*>-                     between (pMTok LRound) (pMTok RRound) parseParList <*>-                     parseBlock <*-                     pMTok End <?> "local function definition"+parseLocalFunction =+  ALocFunc+    <$ pMTok Function+    <*> parseLocFuncName+    <*> between (pMTok LRound) (pMTok RRound) parseParList+    <*> parseBlock+    <* pMTok End+    <?> "local function definition"  -- | Parse if then elseif then else end expressions parseIf :: AParser Stat-parseIf = AIf <$ pMTok If <*> parseExpression <* pMTok Then <*>-            parseBlock <*>-            -- elseif-            many (annotated MElseIf $ (,) <$ pMTok Elseif <*> parseExpression <* pMTok Then <*> parseBlock) <*>-            -- else-            optionMaybe (annotated MElse $ pMTok Else *> parseBlock) <*-            pMTok End <?> "if statement"+parseIf =+  AIf+    <$ pMTok If+    <*> parseExpression+    <* pMTok Then+    <*> parseBlock+    <*>+    -- elseif+    many (annotated MElseIf $ (,) <$ pMTok Elseif <*> parseExpression <* pMTok Then <*> parseBlock)+    <*>+    -- else+    optionMaybe (annotated MElse $ pMTok Else *> parseBlock)+    <* pMTok End+    <?> "if statement"  parseFor :: AParser Stat parseFor = parseNFor <|> parseGFor@@ -256,25 +285,25 @@ -- | Parse numeric for loop parseNFor :: AParser Stat parseNFor = flip (<?>) "numeric for loop" $-    do-        name <- try $ do-            _ <- pMTok For-            name <- pName-            _ <- pMTok Equals-            return name+  do+    name <- try $ do+      _ <- pMTok For+      name <- pName+      _ <- pMTok Equals+      return name -        start <- parseExpression-        _ <- pMTok Comma-        to <- parseExpression-        st <- step-        _ <- pMTok Do-        blk <- parseBlock-        _ <- pMTok End+    start <- parseExpression+    _ <- pMTok Comma+    to <- parseExpression+    st <- step+    _ <- pMTok Do+    blk <- parseBlock+    _ <- pMTok End -        return $ ANFor name start to st blk-    where-        step :: AParser MExpr-        step = pMTok Comma *> parseExpression <|> annotated MExpr (return (ANumber "1"))+    return $ ANFor name start to st blk+  where+    step :: AParser MExpr+    step = pMTok Comma *> parseExpression <|> annotated MExpr (return (ANumber "1"))  -- | Generic for loop parseGFor :: AParser Stat@@ -282,8 +311,12 @@  -- | Function name (includes dot indices and meta indices) parseFuncName :: AParser FuncName-parseFuncName = (\a b c -> FuncName (a:b) c) <$> pName <*> many (pMTok Dot *> pName) <*>-                option Nothing (Just <$ pMTok Colon <*> pName) <?> "function name"+parseFuncName =+  (\a b c -> FuncName (a : b) c)+    <$> pName+    <*> many (pMTok Dot *> pName)+    <*> option Nothing (Just <$ pMTok Colon <*> pName)+    <?> "function name"  -- | Local function name: cannot be a meta function nor indexed parseLocFuncName :: AParser FuncName@@ -292,29 +325,29 @@ -- | Parse a number into an expression parseNumber :: AParser Expr parseNumber = pMToken isNumber <?> "number"-    where-        isNumber :: MToken -> Maybe Expr-        isNumber = \case-            MToken _ (TNumber str) -> Just $ ANumber str-            _ -> Nothing+  where+    isNumber :: MToken -> Maybe Expr+    isNumber = \case+      MToken _ (TNumber str) -> Just $ ANumber str+      _ -> Nothing  -- | Parse any kind of string parseString :: AParser MToken parseString = pMSatisfy isString <?> "string"-    where-        isString :: MToken -> Bool-        isString (MToken _ (DQString _)) = True-        isString (MToken _ (SQString _)) = True-        isString (MToken _ (MLString _)) = True-        isString _ = False+  where+    isString :: MToken -> Bool+    isString (MToken _ (DQString _)) = True+    isString (MToken _ (SQString _)) = True+    isString (MToken _ (MLString _)) = True+    isString _ = False  -- | Parse an identifier pName :: AParser MToken pName = pMSatisfy isName <?> "identifier"-    where-        isName :: MToken -> Bool-        isName (MToken _ (Identifier _)) = True-        isName _ = False+  where+    isName :: MToken -> Bool+    isName (MToken _ (Identifier _)) = True+    isName _ = False  -- | Parse a list of identifiers parseNameList :: AParser [MToken]@@ -331,10 +364,10 @@ -- | Parse list of function parameters parseParList :: AParser [MToken] parseParList = option [] $ nameParam <|> vararg-    where-        vararg = (:[]) <$> pMTok VarArg <?> "..."-        nameParam = (:) <$> pName <*> moreParams <?> "parameter"-        moreParams = option [] $ pMTok Comma *> (nameParam <|> vararg)+  where+    vararg = (: []) <$> pMTok VarArg <?> "..."+    nameParam = (:) <$> pName <*> moreParams <?> "parameter"+    moreParams = option [] $ pMTok Comma *> (nameParam <|> vararg)  -- | list of expressions parseExpressionList :: AParser [MExpr]@@ -342,24 +375,36 @@  -- | Subexpressions, i.e. without operators parseSubExpression :: AParser Expr-parseSubExpression = ANil <$ pMTok Nil <|>-                  AFalse <$ pMTok TFalse <|>-                  ATrue <$ pMTok TTrue <|>-                  parseNumber <|>-                  AString <$> parseString <|>-                  AVarArg <$ pMTok VarArg <|>-                  parseAnonymFunc <|>-                  APrefixExpr <$> parsePrefixExp <|>-                  ATableConstructor <$> parseTableConstructor <?> "expression"-+parseSubExpression =+  ANil+    <$ pMTok Nil+    <|> AFalse+    <$ pMTok TFalse+    <|> ATrue+    <$ pMTok TTrue+    <|> parseNumber+    <|> AString+    <$> parseString+    <|> AVarArg+    <$ pMTok VarArg+    <|> parseAnonymFunc+    <|> APrefixExpr+    <$> parsePrefixExp+    <|> ATableConstructor+    <$> parseTableConstructor+    <?> "expression"  -- | Separate parser for anonymous function subexpression parseAnonymFunc :: AParser Expr-parseAnonymFunc = AnonymousFunc <$-                   pMTok Function <*-                   pMTok LRound <*> parseParList <* pMTok RRound <*>-                   parseBlock <*-                   pMTok End <?> "anonymous function"+parseAnonymFunc =+  AnonymousFunc+    <$ pMTok Function+    <* pMTok LRound+    <*> parseParList+    <* pMTok RRound+    <*> parseBlock+    <* pMTok End+    <?> "anonymous function"  -- | Parse operators of the same precedence in a chain samePrioL :: [(Token, BinOp)] -> AParser MExpr -> AParser MExpr@@ -376,31 +421,33 @@  -- | Parse unary operator (-, not, #) parseUnOp :: AParser UnOp-parseUnOp = UnMinus <$ pMTok Minus <|>-            ANot    <$ pMTok Not   <|>-            ANot    <$ pMTok CNot  <|>-            AHash   <$ pMTok Hash+parseUnOp =+  UnMinus <$ pMTok Minus+    <|> ANot <$ pMTok Not+    <|> ANot <$ pMTok CNot+    <|> AHash <$ pMTok Hash  -- | Parses a binary operator parseBinOp :: AParser BinOp-parseBinOp = AOr          <$ pMTok Or           <|>-             AOr          <$ pMTok COr          <|>-             AAnd         <$ pMTok And          <|>-             AAnd         <$ pMTok CAnd         <|>-             ALT          <$ pMTok TLT          <|>-             AGT          <$ pMTok TGT          <|>-             ALEQ         <$ pMTok TLEQ         <|>-             AGEQ         <$ pMTok TGEQ         <|>-             ANEq         <$ pMTok TNEq         <|>-             ANEq         <$ pMTok TCNEq        <|>-             AEq          <$ pMTok TEq          <|>-             AConcatenate <$ pMTok Concatenate  <|>-             APlus        <$ pMTok Plus         <|>-             BinMinus     <$ pMTok Minus        <|>-             AMultiply    <$ pMTok Multiply     <|>-             ADivide      <$ pMTok Divide       <|>-             AModulus     <$ pMTok Modulus      <|>-             APower       <$ pMTok Power+parseBinOp =+  AOr <$ pMTok Or+    <|> AOr <$ pMTok COr+    <|> AAnd <$ pMTok And+    <|> AAnd <$ pMTok CAnd+    <|> ALT <$ pMTok TLT+    <|> AGT <$ pMTok TGT+    <|> ALEQ <$ pMTok TLEQ+    <|> AGEQ <$ pMTok TGEQ+    <|> ANEq <$ pMTok TNEq+    <|> ANEq <$ pMTok TCNEq+    <|> AEq <$ pMTok TEq+    <|> AConcatenate <$ pMTok Concatenate+    <|> APlus <$ pMTok Plus+    <|> BinMinus <$ pMTok Minus+    <|> AMultiply <$ pMTok Multiply+    <|> ADivide <$ pMTok Divide+    <|> AModulus <$ pMTok Modulus+    <|> APower <$ pMTok Power  -- | Operators, sorted by priority -- Priority from: http://www.lua.org/manual/5.2/manual.html#3.4.7@@ -414,17 +461,20 @@ -- lvl7 is unary operators lvl8 = [(Power, APower)] - -- | Parse chains of binary and unary operators parseExpression :: AParser MExpr-parseExpression =  samePrioL lvl1-                  (samePrioL lvl2 $-                   samePrioL lvl3 $-                   samePrioR lvl4 $-                   samePrioL lvl5 $-                   samePrioL lvl6 $-                   annotated MExpr (UnOpExpr <$> parseUnOp <*> parseExpression) <|> -- lvl7-                   samePrioR lvl8 (annotated MExpr (parseSubExpression <|> UnOpExpr <$> parseUnOp <*> parseExpression))) <?> "expression"+parseExpression =+  samePrioL+    lvl1+    ( samePrioL lvl2 $+        samePrioL lvl3 $+          samePrioR lvl4 $+            samePrioL lvl5 $+              samePrioL lvl6 $+                annotated MExpr (UnOpExpr <$> parseUnOp <*> parseExpression)+                  <|> samePrioR lvl8 (annotated MExpr (parseSubExpression <|> UnOpExpr <$> parseUnOp <*> parseExpression)) -- lvl7+    )+    <?> "expression"  -- | Prefix expressions -- can have any arbitrary list of expression suffixes@@ -434,8 +484,9 @@ -- | Prefix expressions -- The suffixes define rules on the allowed suffixes pPrefixExp :: AParser [PFExprSuffix] -> AParser PrefixExp-pPrefixExp suffixes = PFVar <$> pName <*> suffixes <|>-                      ExprVar <$ pMTok LRound <*> parseExpression <* pMTok RRound <*> suffixes+pPrefixExp suffixes =+  PFVar <$> pName <*> suffixes+    <|> ExprVar <$ pMTok LRound <*> parseExpression <* pMTok RRound <*> suffixes  -- | Parse any expression suffix pPFExprSuffix :: AParser PFExprSuffix@@ -443,35 +494,63 @@  -- | Parse an indexing expression suffix pPFExprCallSuffix :: AParser PFExprSuffix-pPFExprCallSuffix = Call <$> parseArgs <|>-                    MetaCall <$ pMTok Colon <*> pName <*> parseArgs <?> "function call"+pPFExprCallSuffix =+  Call+    <$> parseArgs+    <|> MetaCall+    <$ pMTok Colon+    <*> pName+    <*> parseArgs+    <?> "function call"  -- | Parse an indexing expression suffix pPFExprIndexSuffix :: AParser PFExprSuffix-pPFExprIndexSuffix = ExprIndex <$ pMTok LSquare <*> parseExpression <* pMTok RSquare <|>-                     DotIndex <$ pMTok Dot <*> pName <?> "indexation"+pPFExprIndexSuffix =+  ExprIndex+    <$ pMTok LSquare+    <*> parseExpression+    <* pMTok RSquare+    <|> DotIndex+    <$ pMTok Dot+    <*> pName+    <?> "indexation"  -- | Function calls are prefix expressions, but the last suffix MUST be either a function call or a metafunction call pFunctionCall :: AParser PrefixExp pFunctionCall = pPrefixExp suffixes <?> "function call"-    where-        suffixes = concat <$> many1 ((\ix c -> ix ++ [c]) <$> many1 pPFExprIndexSuffix <*> pPFExprCallSuffix <|>-                                     (:[])                <$> pPFExprCallSuffix)+  where+    suffixes =+      concat+        <$> many1+          ( (\ix c -> ix ++ [c]) <$> many1 pPFExprIndexSuffix <*> pPFExprCallSuffix+              <|> (: []) <$> pPFExprCallSuffix+          )  -- | single variable. Note: definition differs from reference to circumvent the left recursion -- var ::= Name [{PFExprSuffix}* indexation] | '(' exp ')' {PFExprSuffix}* indexation -- where "{PFExprSuffix}* indexation" is any arbitrary sequence of prefix expression suffixes that end with an indexation parseVar :: AParser PrefixExp parseVar = pPrefixExp suffixes <?> "variable"-    where-        suffixes = concat <$> many ((\c ix -> c ++ [ix]) <$> many1 pPFExprCallSuffix <*> pPFExprIndexSuffix <|>-                                    (:[])                <$> pPFExprIndexSuffix)+  where+    suffixes =+      concat+        <$> many+          ( (\c ix -> c ++ [ix]) <$> many1 pPFExprCallSuffix <*> pPFExprIndexSuffix+              <|> (: []) <$> pPFExprIndexSuffix+          )  -- | Arguments of a function call (including brackets) parseArgs :: AParser Args-parseArgs = ListArgs <$ pMTok LRound <*> option [] parseExpressionList <* pMTok RRound <|>-            TableArg <$> parseTableConstructor <|>-            StringArg <$> parseString <?> "function arguments"+parseArgs =+  ListArgs+    <$ pMTok LRound+    <*> option [] parseExpressionList+    <* pMTok RRound+    <|> TableArg+    <$> parseTableConstructor+    <|> StringArg+    <$> parseString+    <?> "function arguments"  -- | Table constructor parseTableConstructor :: AParser [Field]@@ -481,34 +560,42 @@ -- Grammar: field {separator field} [separator] parseFieldList :: AParser [Field] parseFieldList = option [] $ do-    field <- parseField-    sep <- parseOptionalFieldSep-    case sep of-        NoSep -> pure [field NoSep]-        _ -> (field sep :) <$> parseFieldList+  field <- parseField+  sep <- parseOptionalFieldSep+  case sep of+    NoSep -> pure [field NoSep]+    _ -> (field sep :) <$> parseFieldList  -- | Parse a named field (e.g. {named = field}) -- Contains try to avoid conflict with unnamed fields parseNamedField :: AParser (FieldSep -> Field) parseNamedField = do-    name <- try $ do-        n <- pName-        _ <- pMTok Equals-        return n+  name <- try $ do+    n <- pName+    _ <- pMTok Equals+    return n -    NamedField name <$> parseExpression+  NamedField name <$> parseExpression  -- | A field in a table parseField :: AParser (FieldSep -> Field)-parseField = ExprField <$ pMTok LSquare <*> parseExpression <* pMTok RSquare <* pMTok Equals <*> parseExpression <|>-             parseNamedField <|>-             UnnamedField <$> parseExpression <?> "field"+parseField =+  ExprField+    <$ pMTok LSquare+    <*> parseExpression+    <* pMTok RSquare+    <* pMTok Equals+    <*> parseExpression+    <|> parseNamedField+    <|> UnnamedField+    <$> parseExpression+    <?> "field"  -- | Field separator, either comma or semicolon parseFieldSep :: AParser FieldSep parseFieldSep =-    CommaSep <$ pMTok Comma <|>-    SemicolonSep <$ pMTok Semicolon+  CommaSep <$ pMTok Comma+    <|> SemicolonSep <$ pMTok Semicolon  -- | Optional field separator, returns NoSep when no separator is found -- Used at the end of a field list
src/GLua/Parser.hs view
@@ -1,18 +1,18 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE Rank2Types #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE CPP #-}-{-# LANGUAGE LambdaCase #-}  -- | Parser based on <http://www.lua.org/manual/5.2/manual.html#9> module GLua.Parser where -import GLua.TokenTypes-import GLua.AG.Token import GLua.AG.AST+import GLua.AG.Token import qualified GLua.Lexer as Lex+import GLua.TokenTypes  import Text.ParserCombinators.UU import Text.ParserCombinators.UU.BasicInstances@@ -20,8 +20,7 @@ -- | MTokens with the positions of the next MToken (used in the advance of parser) data MTokenPos = MTokenPos MToken Region -data RegionProgression =-  RegionProgression {lastRegion :: Region, nextRegion :: Region}+data RegionProgression = RegionProgression {lastRegion :: Region, nextRegion :: Region}   deriving (Show)  emptyRgPrgs :: RegionProgression@@ -35,9 +34,9 @@  -- | RegionProgression is a location that can be updated by MTokens instance IsLocationUpdatedBy RegionProgression MTokenPos where-    -- advance :: RegionProgression -> MToken -> RegionProgression-    -- Assume the position of the next MToken-    advance _ (MTokenPos mt p) = RegionProgression (mpos mt) p+  -- advance :: RegionProgression -> MToken -> RegionProgression+  -- Assume the position of the next MToken+  advance _ (MTokenPos mt p) = RegionProgression (mpos mt) p  resultsToRegion :: (a, [Error RegionProgression]) -> (a, [Error Region]) resultsToRegion (a, errs) = (a, map errorToRegion errs)@@ -62,7 +61,8 @@ -- | Create a parsable string from MTokens createString :: [MToken] -> Str MTokenPos [MTokenPos] RegionProgression createString [] = createStr emptyRgPrgs []-createString mts@(MToken p _ : xs) = createStr (RegionProgression p (nextRg mts')) mtpos where+createString mts@(MToken p _ : xs) = createStr (RegionProgression p (nextRg mts')) mtpos+  where     mts' = xs ++ [last mts] -- Repeat last element of mts     mkMtPos mt (MToken p' _) = MTokenPos mt p'     mtpos = zipWith mkMtPos mts mts'@@ -70,7 +70,6 @@     nextRg (MToken p' _ : _) = p'     nextRg [] = undefined - errorToRegion :: Error RegionProgression -> Error Region errorToRegion (Inserted a p b) = Inserted a (nextRegion p) b errorToRegion (Deleted a p b) = Deleted a (nextRegion p) b@@ -87,9 +86,9 @@ execAParser p mts@[] = parse_h ((,) <$> p <*> pEnd) . createString $ mts execAParser p mts@(_ : _) = parse_h ((,) <$> p <*> pEnd) . createString $ mts -- createStr (mpos m) $ mts - pMSatisfy :: (MToken -> Bool) -> Token -> String -> AParser MToken-pMSatisfy f t ins = getToken <$> pSatisfy f' (Insertion ins (MTokenPos (MToken ep t) ep) 5) where+pMSatisfy f t ins = getToken <$> pSatisfy f' (Insertion ins (MTokenPos (MToken ep t) ep) 5)+  where     f' :: MTokenPos -> Bool     f' (MTokenPos tok _) = f tok @@ -101,9 +100,9 @@ -- | Parse a single Metatoken, based on a positionless token (much like pSym) pMTok :: Token -> AParser MToken pMTok t = pMSatisfy isToken t $ "'" ++ show t ++ "'"-    where-        isToken :: MToken -> Bool-        isToken (MToken _ tok) = t == tok+  where+    isToken :: MToken -> Bool+    isToken (MToken _ tok) = t == tok  -- | Parse a list of identifiers parseNameList :: AParser [MToken]@@ -111,12 +110,15 @@  -- | Parse list of function parameters parseParList :: AParser [MToken]-parseParList = (pMTok VarArg <<|> pName) <**> (-                    pMTok Comma <**> (-                        (\a _ c -> [c, a]) <$> pMTok VarArg <<|>-                        (\a _ c -> c : a)  <$> parseParList-                    ) `opt` (: [])-               ) `opt` []+parseParList =+  (pMTok VarArg <<|> pName)+    <**> ( pMTok Comma+            <**> ( (\a _ c -> [c, a]) <$> pMTok VarArg+                    <<|> (\a _ c -> c : a) <$> parseParList+                 )+            `opt` (: [])+         )+    `opt` []  -- | Parses the full AST -- Its first parameter contains all comments@@ -128,7 +130,6 @@ parseBlock :: AParser Block parseBlock = Block <$> pInterleaved (pMTok Semicolon) parseMStat <*> (parseReturn <<|> pReturn NoReturn) - -- | A thing of which the region is to be parsed annotated :: (Region -> a -> b) -> AParser a -> AParser b annotated f p = (\s t e -> f (Region (rgStart s) (rgEnd $ lastRegion $ pos $ e)) t) <$> pPos' <*> p <*> pState@@ -150,21 +151,26 @@ -- finding a comma or equals sign that proves that it is a declaration. -- Also, goto can be an identifier parseCallDef :: AParser Stat-parseCallDef = parseGoto <<|>-               (PFVar <$> pName <<|> -- Statemens begin with either a simple name or parenthesised expression-                ExprVar <$ pMTok LRound <*> parseExpression <* pMTok RRound) <**> (-                  -- Either there are more suffixes yet to be found (contSearch)-                  -- or there aren't and we will find either a comma or =-sign (varDecl namedVarDecl)-                  contSearch <<|>-                  varDecl namedVarDecl-                )+parseCallDef =+  parseGoto+    <<|> ( PFVar <$> pName+            <<|> ExprVar <$ pMTok LRound <*> parseExpression <* pMTok RRound -- Statemens begin with either a simple name or parenthesised expression+         )+      <**> (+             -- Either there are more suffixes yet to be found (contSearch)+             -- or there aren't and we will find either a comma or =-sign (varDecl namedVarDecl)+             contSearch+              <<|> varDecl namedVarDecl+           )   where     -- Try to parse a goto statement     parseGoto :: AParser Stat-    parseGoto = (PFVar <$> pMTok (Identifier "goto")) <**>-                  ((\n _ -> AGoto n) <$> pName <<|>-                    contSearch <<|>-                    varDecl namedVarDecl)+    parseGoto =+      (PFVar <$> pMTok (Identifier "goto"))+        <**> ( (\n _ -> AGoto n) <$> pName+                <<|> contSearch+                <<|> varDecl namedVarDecl+             )      -- Simple direct declaration: varName, ... = 1, ...     namedVarDecl :: [PrefixExp] -> [MExpr] -> (ExprSuffixList -> PrefixExp) -> Stat@@ -173,9 +179,11 @@     -- This is where we know it's a variable declaration     -- Takes a function that turns it into a proper Def Stat     varDecl :: ([PrefixExp] -> [MExpr] -> b) -> AParser b-    varDecl f = f <$> opt (pMTok Comma *> parseVarList) [] <*-              pMTok Equals <*>-              parseExpressionList+    varDecl f =+      f+        <$> opt (pMTok Comma *> parseVarList) []+        <* pMTok Equals+        <*> parseExpressionList      -- We know that there is at least one suffix (indexation or call).     -- Search for more suffixes and make either a call or declaration from it@@ -186,8 +194,9 @@     -- When it's a function call, try searching for more suffixes, if that doesn't work, it's a function call.     -- When it's an indexation suffix, search for more suffixes or know that it's a declaration.     searchDeeper :: AParser ([PFExprSuffix], PrefixExp -> Stat)-    searchDeeper = (pPFExprCallSuffix <**> (mergeDeeperSearch <$> searchDeeper <<|> pReturn (\s -> ([s], AFuncCall)))) <<|>-                   (pPFExprIndexSuffix <**> (mergeDeeperSearch <$> searchDeeper <<|> varDecl complexDecl))+    searchDeeper =+      (pPFExprCallSuffix <**> (mergeDeeperSearch <$> searchDeeper <<|> pReturn (\s -> ([s], AFuncCall))))+        <<|> (pPFExprIndexSuffix <**> (mergeDeeperSearch <$> searchDeeper <<|> varDecl complexDecl))      -- Merge the finding of more suffixes with the currently found suffix     mergeDeeperSearch :: ([PFExprSuffix], PrefixExp -> Stat) -> PFExprSuffix -> ([PFExprSuffix], PrefixExp -> Stat)@@ -198,43 +207,57 @@     complexDecl :: [PrefixExp] -> [MExpr] -> PFExprSuffix -> ([PFExprSuffix], PrefixExp -> Stat)     complexDecl vars exprs s = ([s], \pf -> Def (zip (pf : vars) $ map Just exprs ++ repeat Nothing)) - -- | Parse a single statement parseStat :: AParser Stat-parseStat = parseCallDef <<|>-            ALabel <$> parseLabel <<|>-            ABreak <$ pMTok Break <<|>-            AContinue <$ pMTok Continue <<|>-            --AGoto <$ pMTok (Identifier "goto") <*> pName <|>-            ADo <$ pMTok Do <*> parseBlock <* pMTok End <<|>-            AWhile <$ pMTok While <*> parseExpression <* pMTok Do <*> parseBlock <* pMTok End <<|>-            ARepeat <$ pMTok Repeat <*> parseBlock <* pMTok Until <*> parseExpression <<|>-            parseIf <<|>-            parseFor <<|>-            AFunc <$ pMTok Function <*> parseFuncName <*>-             pPacked (pMTok LRound) (pMTok RRound) parseParList <*>-             parseBlock <*-             pMTok End <<|>-            -- local function and local vars both begin with "local"-            pMTok Local <**> (-              -- local function-              (\n p b _l -> ALocFunc n p b) <$-                pMTok Function <*> parseLocFuncName <*> pPacked (pMTok LRound) (pMTok RRound) parseParList <*>-                parseBlock <* pMTok End <<|>+parseStat =+  parseCallDef+    <<|> ALabel <$> parseLabel+    <<|> ABreak <$ pMTok Break+    <<|> AContinue <$ pMTok Continue+    <<|>+    -- AGoto <$ pMTok (Identifier "goto") <*> pName <|>+    ADo <$ pMTok Do <*> parseBlock <* pMTok End+    <<|> AWhile <$ pMTok While <*> parseExpression <* pMTok Do <*> parseBlock <* pMTok End+    <<|> ARepeat <$ pMTok Repeat <*> parseBlock <* pMTok Until <*> parseExpression+    <<|> parseIf+    <<|> parseFor+    <<|> AFunc+      <$ pMTok Function+      <*> parseFuncName+      <*> pPacked (pMTok LRound) (pMTok RRound) parseParList+      <*> parseBlock+      <* pMTok End+    <<|>+    -- local function and local vars both begin with "local"+    pMTok Local+      <**> (+             -- local function+             (\n p b _l -> ALocFunc n p b)+              <$ pMTok Function+              <*> parseLocFuncName+              <*> pPacked (pMTok LRound) (pMTok RRound) parseParList+              <*> parseBlock+              <* pMTok End+              <<|>               -- local variables               (\v (_p, e) _l -> LocDef (zip v $ map Just e ++ repeat Nothing)) <$> parseLocalVarList <*> ((,) <$ pMTok Equals <*> pPos' <*> parseExpressionList <<|> (,) <$> pPos' <*> pReturn [])-            )-+           )  -- | Parse if then elseif then else end expressions parseIf :: AParser Stat-parseIf = AIf <$ pMTok If <*> parseExpression <* pMTok Then <*>-            parseBlock <*>-            -- elseif-            pMany (annotated MElseIf $ (,) <$ pMTok Elseif <*> parseExpression <* pMTok Then <*> parseBlock) <*>-            -- else-            optional (annotated MElse $ pMTok Else *> parseBlock) <*-            pMTok End+parseIf =+  AIf+    <$ pMTok If+    <*> parseExpression+    <* pMTok Then+    <*> parseBlock+    <*>+    -- elseif+    pMany (annotated MElseIf $ (,) <$ pMTok Elseif <*> parseExpression <* pMTok Then <*> parseBlock)+    <*>+    -- else+    optional (annotated MElse $ pMTok Else *> parseBlock)+    <* pMTok End  -- | Parse numeric and generic for loops parseFor :: AParser Stat@@ -243,7 +266,8 @@   firstName <- pName   -- If you see an =-sign, it's a numeric for loop. It'll be a generic for loop otherwise   isNumericLoop <- (const True <$> pMTok Equals <<|> const False <$> pReturn ())-  if isNumericLoop then do+  if isNumericLoop+    then do       startExp <- parseExpression       pMTok Comma       toExp <- parseExpression@@ -252,15 +276,14 @@       block <- parseBlock       pMTok End       pReturn $ ANFor firstName startExp toExp step block-  else do-     vars <- (:) firstName <$ pMTok Comma <*> parseNameList <<|> pReturn [firstName]-     pMTok In-     exprs <- parseExpressionList-     pMTok Do-     block <- parseBlock-     pMTok End-     pReturn $ AGFor vars exprs block-+    else do+      vars <- (:) firstName <$ pMTok Comma <*> parseNameList <<|> pReturn [firstName]+      pMTok In+      exprs <- parseExpressionList+      pMTok Do+      block <- parseBlock+      pMTok End+      pReturn $ AGFor vars exprs block  -- | Parse a return value parseReturn :: AParser AReturn@@ -268,16 +291,19 @@  -- | Label parseLabel :: AParser MToken-parseLabel = pMSatisfy isLabel (Label "someLabel") "Some label"-    where-        isLabel :: MToken -> Bool-        isLabel (MToken _ (Label _)) = True-        isLabel _ = False+parseLabel = pMSatisfy isLabel (Label "" "someLabel" "") "Some label"+  where+    isLabel :: MToken -> Bool+    isLabel (MToken _ (Label {})) = True+    isLabel _ = False  -- | Function name (includes dot indices and meta indices) parseFuncName :: AParser FuncName-parseFuncName = (\a b c -> FuncName (a:b) c) <$> pName <*> pMany (pMTok Dot *> pName) <*>-                opt (Just <$ pMTok Colon <*> pName) Nothing+parseFuncName =+  (\a b c -> FuncName (a : b) c)+    <$> pName+    <*> pMany (pMTok Dot *> pName)+    <*> opt (Just <$ pMTok Colon <*> pName) Nothing  -- | Local function name. Does not include dot and meta indices, since they're not allowed in meta functions parseLocFuncName :: AParser FuncName@@ -286,35 +312,35 @@ -- | Parse a number into an expression parseNumber :: AParser Expr parseNumber = toAnumber <$> pMSatisfy isNumber (TNumber "0") "Number"-    where-        isNumber :: MToken -> Bool-        isNumber (MToken _ (TNumber _)) = True-        isNumber _ = False+  where+    isNumber :: MToken -> Bool+    isNumber (MToken _ (TNumber _)) = True+    isNumber _ = False -        -- A better solution would be to have a single `MToken -> Maybe Expr` function, but I am too-        -- lazy to write that.-        toAnumber :: MToken -> Expr-        toAnumber = \case-          (MToken _ (TNumber str)) -> ANumber str-          _ -> error "unreachable"+    -- A better solution would be to have a single `MToken -> Maybe Expr` function, but I am too+    -- lazy to write that.+    toAnumber :: MToken -> Expr+    toAnumber = \case+      (MToken _ (TNumber str)) -> ANumber str+      _ -> error "unreachable"  -- | Parse any kind of string parseString :: AParser MToken parseString = pMSatisfy isString (DQString "someString") "String"-    where-        isString :: MToken -> Bool-        isString (MToken _ (DQString _)) = True-        isString (MToken _ (SQString _)) = True-        isString (MToken _ (MLString _)) = True-        isString _ = False+  where+    isString :: MToken -> Bool+    isString (MToken _ (DQString _)) = True+    isString (MToken _ (SQString _)) = True+    isString (MToken _ (MLString _)) = True+    isString _ = False  -- | Parse an identifier pName :: AParser MToken pName = pMSatisfy isName (Identifier "someVariable") "Variable"-    where-        isName :: MToken -> Bool-        isName (MToken _ (Identifier _)) = True-        isName _ = False+  where+    isName :: MToken -> Bool+    isName (MToken _ (Identifier _)) = True+    isName _ = False  -- | Parse variable list (var1, var2, var3) parseVarList :: AParser [PrefixExp]@@ -330,23 +356,25 @@  -- | Subexpressions, i.e. without operators parseSubExpression :: AParser Expr-parseSubExpression = ANil <$ pMTok Nil <<|>-                  AFalse <$ pMTok TFalse <<|>-                  ATrue <$ pMTok TTrue <<|>-                  parseNumber <<|>-                  AString <$> parseString <<|>-                  AVarArg <$ pMTok VarArg <<|>-                  parseAnonymFunc <<|>-                  APrefixExpr <$> parsePrefixExp <<|>-                  ATableConstructor <$> parseTableConstructor+parseSubExpression =+  ANil <$ pMTok Nil+    <<|> AFalse <$ pMTok TFalse+    <<|> ATrue <$ pMTok TTrue+    <<|> parseNumber+    <<|> AString <$> parseString+    <<|> AVarArg <$ pMTok VarArg+    <<|> parseAnonymFunc+    <<|> APrefixExpr <$> parsePrefixExp+    <<|> ATableConstructor <$> parseTableConstructor  -- | Separate parser for anonymous function subexpression parseAnonymFunc :: AParser Expr-parseAnonymFunc = AnonymousFunc <$-                   pMTok Function <*>-                   pPacked (pMTok LRound) (pMTok RRound) parseParList <*>-                   parseBlock <*-                   pMTok End+parseAnonymFunc =+  AnonymousFunc+    <$ pMTok Function+    <*> pPacked (pMTok LRound) (pMTok RRound) parseParList+    <*> parseBlock+    <* pMTok End  -- | Parse operators of the same precedence in a chain samePrioL :: [(Token, BinOp)] -> AParser MExpr -> AParser MExpr@@ -365,10 +393,11 @@  -- | Parse unary operator (-, not, #) parseUnOp :: AParser UnOp-parseUnOp = UnMinus <$ pMTok Minus <<|>-            ANot    <$ pMTok Not   <<|>-            ANot    <$ pMTok CNot  <<|>-            AHash   <$ pMTok Hash+parseUnOp =+  UnMinus <$ pMTok Minus+    <<|> ANot <$ pMTok Not+    <<|> ANot <$ pMTok CNot+    <<|> AHash <$ pMTok Hash  -- | Operators, sorted by priority -- Priority from: http://www.lua.org/manual/5.2/manual.html#3.4.7@@ -382,39 +411,39 @@ -- lvl7 is unary operators lvl8 = [(Power, APower)] - -- | Parse chains of binary and unary operators parseExpression :: AParser MExpr-parseExpression = samePrioL lvl1 $-                  samePrioL lvl2 $-                  samePrioL lvl3 $-                  samePrioR lvl4 $-                  samePrioL lvl5 $-                  samePrioL lvl6 $-                  MExpr <$> pPos' <*> (UnOpExpr <$> parseUnOp <*> parseExpression) <<|> -- lvl7-                  samePrioR lvl8 (MExpr <$> pPos' <*> (parseSubExpression <|> UnOpExpr <$> parseUnOp <*> parseExpression))+parseExpression =+  samePrioL lvl1 $+    samePrioL lvl2 $+      samePrioL lvl3 $+        samePrioR lvl4 $+          samePrioL lvl5 $+            samePrioL lvl6 $+              MExpr <$> pPos' <*> (UnOpExpr <$> parseUnOp <*> parseExpression)+                <<|> samePrioR lvl8 (MExpr <$> pPos' <*> (parseSubExpression <|> UnOpExpr <$> parseUnOp <*> parseExpression)) -- lvl7  -- | Parses a binary operator parseBinOp :: AParser BinOp-parseBinOp = const AOr          <$> pMTok Or           <<|>-             const AOr          <$> pMTok COr          <<|>-             const AAnd         <$> pMTok And          <<|>-             const AAnd         <$> pMTok CAnd         <<|>-             const ALT          <$> pMTok TLT          <<|>-             const AGT          <$> pMTok TGT          <<|>-             const ALEQ         <$> pMTok TLEQ         <<|>-             const AGEQ         <$> pMTok TGEQ         <<|>-             const ANEq         <$> pMTok TNEq         <<|>-             const ANEq         <$> pMTok TCNEq        <<|>-             const AEq          <$> pMTok TEq          <<|>-             const AConcatenate <$> pMTok Concatenate  <<|>-             const APlus        <$> pMTok Plus         <<|>-             const BinMinus     <$> pMTok Minus        <<|>-             const AMultiply    <$> pMTok Multiply     <<|>-             const ADivide      <$> pMTok Divide       <<|>-             const AModulus     <$> pMTok Modulus      <<|>-             const APower       <$> pMTok Power-+parseBinOp =+  const AOr <$> pMTok Or+    <<|> const AOr <$> pMTok COr+    <<|> const AAnd <$> pMTok And+    <<|> const AAnd <$> pMTok CAnd+    <<|> const ALT <$> pMTok TLT+    <<|> const AGT <$> pMTok TGT+    <<|> const ALEQ <$> pMTok TLEQ+    <<|> const AGEQ <$> pMTok TGEQ+    <<|> const ANEq <$> pMTok TNEq+    <<|> const ANEq <$> pMTok TCNEq+    <<|> const AEq <$> pMTok TEq+    <<|> const AConcatenate <$> pMTok Concatenate+    <<|> const APlus <$> pMTok Plus+    <<|> const BinMinus <$> pMTok Minus+    <<|> const AMultiply <$> pMTok Multiply+    <<|> const ADivide <$> pMTok Divide+    <<|> const AModulus <$> pMTok Modulus+    <<|> const APower <$> pMTok Power  -- | Prefix expressions -- can have any arbitrary list of expression suffixes@@ -424,8 +453,9 @@ -- | Prefix expressions -- The suffixes define rules on the allowed suffixes pPrefixExp :: AParser [PFExprSuffix] -> AParser PrefixExp-pPrefixExp suffixes = PFVar <$> pName <*> suffixes <<|>-                      ExprVar <$ pMTok LRound <*> parseExpression <* pMTok RRound <*> suffixes+pPrefixExp suffixes =+  PFVar <$> pName <*> suffixes+    <<|> ExprVar <$ pMTok LRound <*> parseExpression <* pMTok RRound <*> suffixes  -- | Parse any expression suffix pPFExprSuffix :: AParser PFExprSuffix@@ -433,35 +463,46 @@  -- | Parse an indexing expression suffix pPFExprCallSuffix :: AParser PFExprSuffix-pPFExprCallSuffix = Call <$> parseArgs <<|>-                    MetaCall <$ pMTok Colon <*> pName <*> parseArgs+pPFExprCallSuffix =+  Call <$> parseArgs+    <<|> MetaCall <$ pMTok Colon <*> pName <*> parseArgs  -- | Parse an indexing expression suffix pPFExprIndexSuffix :: AParser PFExprSuffix-pPFExprIndexSuffix = ExprIndex <$ pMTok LSquare <*> parseExpression <* pMTok RSquare <<|>-                     DotIndex <$ pMTok Dot <*> pName+pPFExprIndexSuffix =+  ExprIndex <$ pMTok LSquare <*> parseExpression <* pMTok RSquare+    <<|> DotIndex <$ pMTok Dot <*> pName  -- | Function calls are prefix expressions, but the last suffix MUST be either a function call or a metafunction call pFunctionCall :: AParser PrefixExp pFunctionCall = pPrefixExp suffixes-    where-        suffixes = concat <$> pSome ((\ix c -> ix ++ [c]) <$> pSome pPFExprIndexSuffix <*> pPFExprCallSuffix <<|>-                                     (:[])                <$> pPFExprCallSuffix)+  where+    suffixes =+      concat+        <$> pSome+          ( (\ix c -> ix ++ [c]) <$> pSome pPFExprIndexSuffix <*> pPFExprCallSuffix+              <<|> (: []) <$> pPFExprCallSuffix+          )  -- | single variable. Note: definition differs from reference to circumvent the left recursion -- var ::= Name [{PFExprSuffix}* indexation] | '(' exp ')' {PFExprSuffix}* indexation -- where "{PFExprSuffix}* indexation" is any arbitrary sequence of prefix expression suffixes that end with an indexation parseVar :: AParser PrefixExp parseVar = pPrefixExp suffixes-    where-        suffixes = concat <$> pMany ((\c ix -> c ++ [ix]) <$> pSome pPFExprCallSuffix <*> pPFExprIndexSuffix <<|>-                                     (:[])                <$> pPFExprIndexSuffix)+  where+    suffixes =+      concat+        <$> pMany+          ( (\c ix -> c ++ [ix]) <$> pSome pPFExprCallSuffix <*> pPFExprIndexSuffix+              <<|> (: []) <$> pPFExprIndexSuffix+          )  -- | Arguments of a function call (including brackets) parseArgs :: AParser Args-parseArgs = ListArgs <$ pMTok LRound <*> opt parseExpressionList [] <* pMTok RRound <<|>-            TableArg <$> parseTableConstructor <<|>-            StringArg <$> parseString+parseArgs =+  ListArgs <$ pMTok LRound <*> opt parseExpressionList [] <* pMTok RRound+    <<|> TableArg <$> parseTableConstructor+    <<|> StringArg <$> parseString  -- | Table constructor parseTableConstructor :: AParser [Field]@@ -471,12 +512,12 @@ -- Grammar: field {separator field} [separator] parseFieldList :: AParser [Field] parseFieldList =-    parseField <**>-      ( parseFieldSep <**>-          ((\rest sep field -> field sep : rest) <$> (parseFieldList <<|> pure [])) <<|>-        pure (\field -> [field NoSep])-      ) <<|>-    pure []+  parseField+    <**> ( parseFieldSep+            <**> ((\rest sep field -> field sep : rest) <$> (parseFieldList <<|> pure []))+            <<|> pure (\field -> [field NoSep])+         )+    <<|> pure []  -- | Makes an unnamed field out of a list of suffixes, a position and a name. -- This function gets called when we know a field is unnamed and contains an expression that@@ -488,36 +529,41 @@   where     -- Merge the first prefixExpr into the expression tree     merge :: Expr -> MExpr -> Expr-    merge pf e@(MExpr _ (BinOpExpr op' l r)) =  if op > op' then-                                                  BinOpExpr op' (MExpr p $ (merge pf l)) r-                                                else-                                                  BinOpExpr op (MExpr p pf) e+    merge pf e@(MExpr _ (BinOpExpr op' l r)) =+      if op > op'+        then BinOpExpr op' (MExpr p $ (merge pf l)) r+        else BinOpExpr op (MExpr p pf) e     merge pf e = BinOpExpr op (MExpr p pf) e  -- | A field in a table parseField :: AParser (FieldSep -> Field)-parseField = ExprField <$ pMTok LSquare <*> parseExpression <* pMTok RSquare <* pMTok Equals <*> parseExpression <<|>-              ((,) <$> pPos' <*> pName <**>-                -- Named field has equals sign immediately after the name-                (((\e (_, n) -> NamedField n e) <$ pMTok Equals <*> parseExpression) <<|>-+parseField =+  ExprField <$ pMTok LSquare <*> parseExpression <* pMTok RSquare <* pMTok Equals <*> parseExpression+    <<|> ( (,)+            <$> pPos'+            <*> pName+            <**>+            -- Named field has equals sign immediately after the name+            ( ((\e (_, n) -> NamedField n e) <$ pMTok Equals <*> parseExpression)+                <<|>                 -- The lack of equals sign means it's an unnamed field.                 -- The expression of the unnamed field must be starting with a PFVar Prefix expression-                pMany pPFExprSuffix <**>-                  ( makeUnNamedField <$>-                    (-                      -- There are operators, so the expression goes on beyond the prefixExpression-                      curry Just <$> parseBinOp <*> parseExpression <<|>-                      -- There are no operators after the prefix expression-                      pReturn Nothing-                    )-                  )-                )-              ) <<|>-              UnnamedField <$> parseExpression+                pMany pPFExprSuffix+                  <**> ( makeUnNamedField+                          <$> (+                                -- There are operators, so the expression goes on beyond the prefixExpression+                                curry Just <$> parseBinOp <*> parseExpression+                                  <<|>+                                  -- There are no operators after the prefix expression+                                  pReturn Nothing+                              )+                       )+            )+         )+    <<|> UnnamedField <$> parseExpression  -- | Field separator parseFieldSep :: AParser FieldSep parseFieldSep =-    CommaSep <$ pMTok Comma <<|>-    SemicolonSep <$ pMTok Semicolon+  CommaSep <$ pMTok Comma+    <<|> SemicolonSep <$ pMTok Semicolon
src/GLua/TokenTypes.hs view
@@ -1,70 +1,72 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+ -- | Contains class instances and functions related to tokens module GLua.TokenTypes where -import Data.List-import Text.ParserCombinators.UU.BasicInstances-import GLua.AG.Token import Data.Aeson+import Data.List import GHC.Generics+import GLua.AG.Token+import Text.ParserCombinators.UU.BasicInstances  instance Show MToken where-    show (MToken _ tok) = show tok+  show (MToken _ tok) = show tok  -- | Simple EQ instance. TODO: check for position equality instance Eq MToken where-    (MToken _ t1) == (MToken _ t2) = t1 == t2+  (MToken _ t1) == (MToken _ t2) = t1 == t2  -- | Simple Ord instance. TODO: check for position Ord instance Ord MToken where-    compare (MToken _ t1) (MToken _ t2) = compare t1 t2+  compare (MToken _ t1) (MToken _ t2) = compare t1 t2  deriving instance Generic MToken -instance ToJSON MToken where-instance FromJSON MToken where+instance ToJSON MToken+instance FromJSON MToken  instance Eq LineColPos where-    (LineColPos l c p) == (LineColPos l' c' p') = l == l' && c == c' && p == p'+  (LineColPos l c p) == (LineColPos l' c' p') = l == l' && c == c' && p == p'  instance Ord LineColPos where-    compare (LineColPos l c _) (LineColPos l' c' _) =-        compare l l' `mappend` compare c c'+  compare (LineColPos l c _) (LineColPos l' c' _) =+    compare l l' `mappend` compare c c'  instance ToJSON LineColPos where-    -- this generates a Value-    toJSON (LineColPos line col p) =-        object ["line" .= line, "column" .= col, "pos" .= p]+  -- this generates a Value+  toJSON (LineColPos line col p) =+    object ["line" .= line, "column" .= col, "pos" .= p]  #if MIN_VERSION_aeson(0,10,0)-    -- this encodes directly to a bytestring Builder-    toEncoding (LineColPos line col p) =-        pairs ("line" .= line <> "column" .= col <> "pos" .= p)+  -- this encodes directly to a bytestring Builder+  toEncoding (LineColPos line col p) =+    pairs ("line" .= line <> "column" .= col <> "pos" .= p) #endif  instance FromJSON LineColPos where-    parseJSON = withObject "LineColPos" $ \v -> LineColPos-            <$> v .: "line"-            <*> v .: "column"-            <*> v .: "pos"+  parseJSON = withObject "LineColPos" $ \v ->+    LineColPos+      <$> v .: "line"+      <*> v .: "column"+      <*> v .: "pos"  instance Eq Region where-    Region s e == Region s' e' = s == s' && e == e'+  Region s e == Region s' e' = s == s' && e == e'  instance Ord Region where-    compare (Region s e) (Region s' e') =-        compare s s' `mappend` compare e e'+  compare (Region s e) (Region s' e') =+    compare s s' `mappend` compare e e' -instance ToJSON Region where-instance FromJSON Region where+instance ToJSON Region+instance FromJSON Region -instance ToJSON Token where-instance FromJSON Token where+instance ToJSON Token+instance FromJSON Token  -- | Metatoken algebra type MTokenAlgebra mtok = Region -> Token -> mtok@@ -88,7 +90,7 @@ ---------------------------------------- customAdvanceChr :: LineColPos -> Char -> LineColPos customAdvanceChr (LineColPos line _ abs') '\n' = LineColPos (line + 1) 0 (abs' + 1)-customAdvanceChr (LineColPos line pos' abs') _    = LineColPos line (pos' + 1) (abs' + 1)+customAdvanceChr (LineColPos line pos' abs') _ = LineColPos line (pos' + 1) (abs' + 1)  customAdvanceStr :: LineColPos -> String -> LineColPos customAdvanceStr = foldl' customAdvanceChr@@ -98,7 +100,7 @@  -- | Whether the first region ends strictly before the second region starts before :: Region -> Region -> Bool-before (Region _ (LineColPos _ _ p)) (Region (LineColPos _ _ p') _ ) = p < p'+before (Region _ (LineColPos _ _ p)) (Region (LineColPos _ _ p') _) = p < p'  -- | Whether the first region ends before or on the same line as the second region beforeOrOnLine :: Region -> Region -> Bool@@ -122,10 +124,10 @@ -- and ends BEFORE the start of the second region upto :: Region -> Region -> Region upto lr rr = case (rgEnd lr, rgStart rr) of-    (_, LineColPos 0 0 0) -> lr-    (LineColPos l c _, LineColPos l' c' _)-        | l' > l || (l' == l && c' > c) -> lr-        | otherwise -> Region (rgStart lr) (rgStart rr)+  (_, LineColPos 0 0 0) -> lr+  (LineColPos l c _, LineColPos l' c' _)+    | l' > l || (l' == l && c' > c) -> lr+    | otherwise -> Region (rgStart lr) (rgStart rr)  -- | Fold over metatoken foldMToken :: MTokenAlgebra t -> MToken -> t@@ -138,327 +140,331 @@     f _ = foldToken alg  -- | Huge token algebra-type TokenAlgebra token = (-    ( -- Comments and whitespace-        String -> token,-        String -> token,    -- DashComment-        Int -> String -> token,    -- DashBlockComment-        String -> token,    -- SlashComment-        String -> token,    -- SlashBlockComment-        token               -- Semicolon-    ),-    ( -- Constants-        String -> token,    -- TNumber-        String -> token,    -- DQString-        String -> token,    -- SQString-        String -> token,    -- MLString-        token,              -- TTrue-        token,              -- TFalse-        token,              -- Nil-        token               -- VarArg-    ), -- operators-    (-        token,              -- Plus-        token,              -- Minus-        token,              -- Multiply-        token,              -- Divide-        token,              -- Modulus-        token,              -- Power-        token,              -- TEq-        token,              -- TNEq-        token,              -- TCNEq-        token,              -- TLEQ-        token,              -- TGEQ-        token,              -- TLT-        token,              -- TGT-        token,              -- Equals-        token,              -- Concatenate-        token,              -- Colon-        token,              -- Dot-        token,              -- Comma-        token,              -- Hash-        token,              -- Not-        token,              -- CNot-        token,              -- And-        token,              -- CAnd-        token,              -- Or-        token               -- COr-    ),-    ( -- Keywords-        token,              -- Function-        token,              -- Local-        token,              -- If-        token,              -- Then-        token,              -- Elseif-        token,              -- Else-        token,              -- For-        token,              -- In-        token,              -- Do-        token,              -- While-        token,              -- Until-        token,              -- Repeat-        token,              -- Continue-        token,              -- Break-        token,              -- Return-        token               -- End-    ),-    ( -- Brackets-        token,              -- LRound-        token,              -- RRound-        token,              -- LCurly-        token,              -- RCurly-        token,              -- LSquare-        token               -- RSquare-    ),-    ( -- Other-        String -> token,    -- Label-        String -> token     -- Identifier+type TokenAlgebra token =+  ( ( -- Comments and whitespace+      String -> token+    , String -> token -- DashComment+    , Int -> String -> token -- DashBlockComment+    , String -> token -- SlashComment+    , String -> token -- SlashBlockComment+    , token -- Semicolon     )+  , ( -- Constants+      String -> token -- TNumber+    , String -> token -- DQString+    , String -> token -- SQString+    , String -> token -- MLString+    , token -- TTrue+    , token -- TFalse+    , token -- Nil+    , token -- VarArg+    ) -- operators+  , ( token -- Plus+    , token -- Minus+    , token -- Multiply+    , token -- Divide+    , token -- Modulus+    , token -- Power+    , token -- TEq+    , token -- TNEq+    , token -- TCNEq+    , token -- TLEQ+    , token -- TGEQ+    , token -- TLT+    , token -- TGT+    , token -- Equals+    , token -- Concatenate+    , token -- Colon+    , token -- Dot+    , token -- Comma+    , token -- Hash+    , token -- Not+    , token -- CNot+    , token -- And+    , token -- CAnd+    , token -- Or+    , token -- COr     )+  , ( -- Keywords+      token -- Function+    , token -- Local+    , token -- If+    , token -- Then+    , token -- Elseif+    , token -- Else+    , token -- For+    , token -- In+    , token -- Do+    , token -- While+    , token -- Until+    , token -- Repeat+    , token -- Continue+    , token -- Break+    , token -- Return+    , token -- End+    )+  , ( -- Brackets+      token -- LRound+    , token -- RRound+    , token -- LCurly+    , token -- RCurly+    , token -- LSquare+    , token -- RSquare+    )+  , ( -- Other+      String -> String -> String -> token -- Label+    , String -> token -- Identifier+    )+  )  -- | Fold over token definition foldToken :: TokenAlgebra t -> Token -> t foldToken ((tWhitespace, tDashComment, tDashBlockComment, tSlashComment, tSlashBlockComment, tSemicolon), (tTNumber, tDQString, tSQString, tMLString, tTTrue, tTFalse, tNil, tVarArg), (tPlus, tMinus, tMultiply, tDivide, tModulus, tPower, tTEq, tTNEq, tTCNEq, tTLEQ, tTGEQ, tTLT, tTGT, tEquals, tConcatenate, tColon, tDot, tComma, tHash, tNot, tCNot, tAnd, tCAnd, tOr, tCOr), (tFunction, tLocal, tIf, tThen, tElseif, tElse, tFor, tIn, tDo, tWhile, tUntil, tRepeat, tContinue, tBreak, tReturn, tEnd), (tLRound, tRRound, tLCurly, tRCurly, tLSquare, tRSquare), (tLabel, tIdentifier)) = fold-    where-        fold (Whitespace str) = tWhitespace str-        fold (DashComment str) = tDashComment str-        fold (DashBlockComment depth str) = tDashBlockComment depth str-        fold (SlashComment str) = tSlashComment str-        fold (SlashBlockComment str) = tSlashBlockComment str-        fold (TNumber str) = tTNumber str-        fold (Label str) = tLabel str-        fold (Identifier str) = tIdentifier str-        fold (DQString str) = tDQString str-        fold (SQString str) = tSQString str-        fold (MLString str) = tMLString str-        fold And = tAnd-        fold CAnd = tCAnd-        fold Break = tBreak-        fold Do = tDo-        fold Else = tElse-        fold Elseif = tElseif-        fold End = tEnd-        fold TFalse = tTFalse-        fold For = tFor-        fold Function = tFunction-        fold If = tIf-        fold In = tIn-        fold Local = tLocal-        fold Nil = tNil-        fold Not = tNot-        fold CNot = tCNot-        fold Or = tOr-        fold COr = tCOr-        fold Repeat = tRepeat-        fold Continue = tContinue-        fold Return = tReturn-        fold Then = tThen-        fold TTrue = tTTrue-        fold Until = tUntil-        fold While = tWhile-        fold Plus = tPlus-        fold Minus = tMinus-        fold Multiply = tMultiply-        fold Divide = tDivide-        fold Modulus = tModulus-        fold Power = tPower-        fold Hash = tHash-        fold TEq = tTEq-        fold TNEq = tTNEq-        fold TCNEq = tTCNEq-        fold TLEQ = tTLEQ-        fold TGEQ = tTGEQ-        fold TLT = tTLT-        fold TGT = tTGT-        fold Equals = tEquals-        fold LRound = tLRound-        fold RRound = tRRound-        fold LCurly = tLCurly-        fold RCurly = tRCurly-        fold LSquare = tLSquare-        fold RSquare = tRSquare-        fold Semicolon = tSemicolon-        fold Colon = tColon-        fold Comma = tComma-        fold Dot = tDot-        fold Concatenate = tConcatenate-        fold VarArg = tVarArg+  where+    fold (Whitespace str) = tWhitespace str+    fold (DashComment str) = tDashComment str+    fold (DashBlockComment depth str) = tDashBlockComment depth str+    fold (SlashComment str) = tSlashComment str+    fold (SlashBlockComment str) = tSlashBlockComment str+    fold (TNumber str) = tTNumber str+    fold (Label whitespaceBefore str whitespaceAfter) = tLabel whitespaceBefore str whitespaceAfter+    fold (Identifier str) = tIdentifier str+    fold (DQString str) = tDQString str+    fold (SQString str) = tSQString str+    fold (MLString str) = tMLString str+    fold And = tAnd+    fold CAnd = tCAnd+    fold Break = tBreak+    fold Do = tDo+    fold Else = tElse+    fold Elseif = tElseif+    fold End = tEnd+    fold TFalse = tTFalse+    fold For = tFor+    fold Function = tFunction+    fold If = tIf+    fold In = tIn+    fold Local = tLocal+    fold Nil = tNil+    fold Not = tNot+    fold CNot = tCNot+    fold Or = tOr+    fold COr = tCOr+    fold Repeat = tRepeat+    fold Continue = tContinue+    fold Return = tReturn+    fold Then = tThen+    fold TTrue = tTTrue+    fold Until = tUntil+    fold While = tWhile+    fold Plus = tPlus+    fold Minus = tMinus+    fold Multiply = tMultiply+    fold Divide = tDivide+    fold Modulus = tModulus+    fold Power = tPower+    fold Hash = tHash+    fold TEq = tTEq+    fold TNEq = tTNEq+    fold TCNEq = tTCNEq+    fold TLEQ = tTLEQ+    fold TGEQ = tTGEQ+    fold TLT = tTLT+    fold TGT = tTGT+    fold Equals = tEquals+    fold LRound = tLRound+    fold RRound = tRRound+    fold LCurly = tLCurly+    fold RCurly = tRCurly+    fold LSquare = tLSquare+    fold RSquare = tRSquare+    fold Semicolon = tSemicolon+    fold Colon = tColon+    fold Comma = tComma+    fold Dot = tDot+    fold Concatenate = tConcatenate+    fold VarArg = tVarArg  -- | Simple show instance instance Show Token where-    show = foldToken ((-        id,-        ("--" ++), -- DashComment-        \d s -> let n = replicate d '=' in "--[" ++ n ++ '[' : s ++ ']' : n ++ "]", -- DashBlockComment-        ("//" ++), -- SlashComment-        \s -> "/*" ++ s ++ "*/", -- SlashBlockComment-        ";" -- Semicolon-        ),-        (-        id, -- TNumber-        \s -> "\"" ++ s ++ "\"", -- DQString-        \s -> "'" ++ s ++ "'", -- SQString-        id, -- MLString-        "true", -- TTrue-        "false", -- TFalse-        "nil", -- Nil-        "..." -- VarArg-        ),-        (-        "+", -- Plus-        "-", -- Minus-        "*", -- Multiply-        "/", -- Divide-        "%", -- Modulus-        "^", -- Power-        "==", -- TEq-        "~=", -- TNEq-        "!=", -- TCNEq-        "<=", -- TLEQ-        ">=", -- TGEQ-        "<", -- TLT-        ">", -- TGT-        "=", -- Equals-        "..", -- Concatenate-        ":", -- Colon-        ".", -- Dot-        ",", -- Comma-        "#", -- Hash-        "not", -- Not-        "!", -- CNot-        "and", -- And-        "&&", -- CAnd-        "or", -- Or-        "||" -- COr-        ),-        (-        "function", -- Function-        "local", -- Local-        "if", -- If-        "then", -- Then-        "elseif", -- Elseif-        "else", -- Else-        "for", -- For-        "in", -- In-        "do", -- Do-        "while", -- While-        "until", -- Until-        "repeat", -- Repeat-        "continue", -- Continue-        "break", -- Break-        "return", -- Return-        "end" -- End-        ),-        (-        "(", -- LRound-        ")", -- RRound-        "{", -- LCurly-        "}", -- RCurly-        "[", -- LSquare-        "]" -- RSquare-        ),-        (-        id, -- Label-        id -- Identifier+  show =+    foldToken+      (+        ( id+        , ("--" ++) -- DashComment+        , \d s -> let n = replicate d '=' in "--[" ++ n ++ '[' : s ++ ']' : n ++ "]" -- DashBlockComment+        , ("//" ++) -- SlashComment+        , \s -> "/*" ++ s ++ "*/" -- SlashBlockComment+        , ";" -- Semicolon         )+      ,+        ( id -- TNumber+        , \s -> "\"" ++ s ++ "\"" -- DQString+        , \s -> "'" ++ s ++ "'" -- SQString+        , id -- MLString+        , "true" -- TTrue+        , "false" -- TFalse+        , "nil" -- Nil+        , "..." -- VarArg         )+      ,+        ( "+" -- Plus+        , "-" -- Minus+        , "*" -- Multiply+        , "/" -- Divide+        , "%" -- Modulus+        , "^" -- Power+        , "==" -- TEq+        , "~=" -- TNEq+        , "!=" -- TCNEq+        , "<=" -- TLEQ+        , ">=" -- TGEQ+        , "<" -- TLT+        , ">" -- TGT+        , "=" -- Equals+        , ".." -- Concatenate+        , ":" -- Colon+        , "." -- Dot+        , "," -- Comma+        , "#" -- Hash+        , "not" -- Not+        , "!" -- CNot+        , "and" -- And+        , "&&" -- CAnd+        , "or" -- Or+        , "||" -- COr+        )+      ,+        ( "function" -- Function+        , "local" -- Local+        , "if" -- If+        , "then" -- Then+        , "elseif" -- Elseif+        , "else" -- Else+        , "for" -- For+        , "in" -- In+        , "do" -- Do+        , "while" -- While+        , "until" -- Until+        , "repeat" -- Repeat+        , "continue" -- Continue+        , "break" -- Break+        , "return" -- Return+        , "end" -- End+        )+      ,+        ( "(" -- LRound+        , ")" -- RRound+        , "{" -- LCurly+        , "}" -- RCurly+        , "[" -- LSquare+        , "]" -- RSquare+        )+      ,+        ( \spaceBefore ident spaceAfter -> spaceBefore ++ ident ++ spaceAfter -- Label+        , id -- Identifier+        )+      )  -- | Whether an mtoken is a comment isWhitespace :: MToken -> Bool-isWhitespace = mFold ((const True,const False,\_ _ -> False,const False,const False,False),(const False,const False,const False,const False,False,False,False,False),(False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False),(False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False),(False,False,False,False,False,False),(const False,const False))+isWhitespace = mFold ((const True, const False, \_ _ -> False, const False, const False, False), (const False, const False, const False, const False, False, False, False, False), (False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False), (False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False), (False, False, False, False, False, False), (\_ _ _ -> False, const False))  -- | Whether an mtoken is a comment isComment :: MToken -> Bool-isComment = mFold ((const False,const True,\_ _ -> True,const True,const True,False),(const False,const False,const False,const False,False,False,False,False),(False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False),(False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False),(False,False,False,False,False,False),(const False,const False))+isComment = mFold ((const False, const True, \_ _ -> True, const True, const True, False), (const False, const False, const False, const False, False, False, False, False), (False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False), (False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False), (False, False, False, False, False, False), (\_ _ _ -> False, const False))  -- | Split the tokens by comments and other tokens splitComments :: [MToken] -> ([MToken], [MToken]) splitComments = partition isComment  tokenLabel :: MToken -> String-tokenLabel = mFold ((const "", const "",\_ _ -> "",const "",const "",""),(const "",const "",const "",const "","","","",""),("","","","","","","","","","","","","","","","","","","","","","","","",""),("","","","","","","","","","","","","","","",""),("","","","","",""),(id, id))+tokenLabel = mFold ((const "", const "", \_ _ -> "", const "", const "", ""), (const "", const "", const "", const "", "", "", "", ""), ("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""), ("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""), ("", "", "", "", "", ""), (\_ ident _ -> ident, id))  -- | The size of a token in characters tokenSize :: Token -> Int-tokenSize = foldToken ((-    length, -- whitespace-    (+2) . length, -- DashComment-    \d s -> 6 + length s + 2 * d, -- DashBlockComment-    (+2) . length, -- SlashComment-    (+4) . length, -- SlashBlockComment-    1 -- Semicolon-    ),-    (-    length, -- TNumber-    (+2) . length, -- DQString-    (+2) . length, -- SQString-    length, -- MLString-    4, -- TTrue-    5, -- TFalse-    3, -- Nil-    3 -- VarArg-    ),-    (-    1, -- Plus-    1, -- Minus-    1, -- Multiply-    1, -- Divide-    1, -- Modulus-    1, -- Power-    2, -- TEq-    2, -- TNEq-    2, -- TCNEq-    2, -- TLEQ-    2, -- TGEQ-    1, -- TLT-    1, -- TGT-    1, -- Equals-    2, -- Concatenate-    1, -- Colon-    1, -- Dot-    1, -- Comma-    1, -- Hash-    3, -- Not-    1, -- CNot-    3, -- And-    2, -- CAnd-    2, -- Or-    2 -- COr-    ),-    (-    8, -- Function-    5, -- Local-    2, -- If-    4, -- Then-    6, -- Elseif-    4, -- Else-    3, -- For-    2, -- In-    2, -- Do-    5, -- While-    5, -- Until-    6, -- Repeat-    8, -- Continue-    5, -- Break-    6, -- Return-    3 -- End-    ),-    (-    1, -- LRound-    1, -- RRound-    1, -- LCurly-    1, -- RCurly-    1, -- LSquare-    1 -- RSquare-    ),+tokenSize =+  foldToken     (-    (+2) . length, -- Label-    length -- Identifier-    )+      ( length -- whitespace+      , (+ 2) . length -- DashComment+      , \d s -> 6 + length s + 2 * d -- DashBlockComment+      , (+ 2) . length -- SlashComment+      , (+ 4) . length -- SlashBlockComment+      , 1 -- Semicolon+      )+    ,+      ( length -- TNumber+      , (+ 2) . length -- DQString+      , (+ 2) . length -- SQString+      , length -- MLString+      , 4 -- TTrue+      , 5 -- TFalse+      , 3 -- Nil+      , 3 -- VarArg+      )+    ,+      ( 1 -- Plus+      , 1 -- Minus+      , 1 -- Multiply+      , 1 -- Divide+      , 1 -- Modulus+      , 1 -- Power+      , 2 -- TEq+      , 2 -- TNEq+      , 2 -- TCNEq+      , 2 -- TLEQ+      , 2 -- TGEQ+      , 1 -- TLT+      , 1 -- TGT+      , 1 -- Equals+      , 2 -- Concatenate+      , 1 -- Colon+      , 1 -- Dot+      , 1 -- Comma+      , 1 -- Hash+      , 3 -- Not+      , 1 -- CNot+      , 3 -- And+      , 2 -- CAnd+      , 2 -- Or+      , 2 -- COr+      )+    ,+      ( 8 -- Function+      , 5 -- Local+      , 2 -- If+      , 4 -- Then+      , 6 -- Elseif+      , 4 -- Else+      , 3 -- For+      , 2 -- In+      , 2 -- Do+      , 5 -- While+      , 5 -- Until+      , 6 -- Repeat+      , 8 -- Continue+      , 5 -- Break+      , 6 -- Return+      , 3 -- End+      )+    ,+      ( 1 -- LRound+      , 1 -- RRound+      , 1 -- LCurly+      , 1 -- RCurly+      , 1 -- LSquare+      , 1 -- RSquare+      )+    ,+      ( \spaceBefore ident spaceAfter ->+          2 + length spaceBefore + length ident + length spaceAfter + 2 -- Label+      , length -- Identifier+      )     )  isSingleLineComment :: Token -> Bool isSingleLineComment = \case-    DashComment _ -> True-    SlashComment _ -> True-    _ -> False+  DashComment _ -> True+  SlashComment _ -> True+  _ -> False
src/GLuaFixer/AG/ASTLint.hs view
@@ -12205,8 +12205,8 @@     (sem_Token_LSquare) sem_Token (RSquare) =     (sem_Token_RSquare)-sem_Token (Label _lbl) =-    (sem_Token_Label _lbl)+sem_Token (Label _whitespaceBefore _lbl _whitespaceAfter) =+    (sem_Token_Label _whitespaceBefore _lbl _whitespaceAfter) sem_Token (Identifier _ident) =     (sem_Token_Identifier _ident) -- semantic domain@@ -13633,26 +13633,28 @@         { _lhsOwarnings ->         ( _lhsOcopy,_lhsOidentifier,_lhsOwarnings) }) }) }) }) sem_Token_Label :: String ->+                   String ->+                   String ->                    T_Token-sem_Token_Label lbl_ =+sem_Token_Label whitespaceBefore_ lbl_ whitespaceAfter_ =     (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}-            Label lbl_-            {-# LINE 13641 "src/GLuaFixer/AG/ASTLint.hs" #-}+            Label whitespaceBefore_ lbl_ whitespaceAfter_+            {-# LINE 13643 "src/GLuaFixer/AG/ASTLint.hs" #-}             )) of      { _copy ->      (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}              _copy-             {-# LINE 13646 "src/GLuaFixer/AG/ASTLint.hs" #-}+             {-# LINE 13648 "src/GLuaFixer/AG/ASTLint.hs" #-}              )) of       { _lhsOcopy ->       (case (({-# LINE 220 "src/GLuaFixer/AG/ASTLint.ag" #-}               lbl_-              {-# LINE 13651 "src/GLuaFixer/AG/ASTLint.hs" #-}+              {-# LINE 13653 "src/GLuaFixer/AG/ASTLint.hs" #-}               )) of        { _lhsOidentifier ->        (case (({-# LINE 152 "src/GLuaFixer/AG/ASTLint.ag" #-}                []-               {-# LINE 13656 "src/GLuaFixer/AG/ASTLint.hs" #-}+               {-# LINE 13658 "src/GLuaFixer/AG/ASTLint.hs" #-}                )) of         { _lhsOwarnings ->         ( _lhsOcopy,_lhsOidentifier,_lhsOwarnings) }) }) }) })@@ -13661,22 +13663,22 @@ sem_Token_Identifier ident_ =     (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}             Identifier ident_-            {-# LINE 13665 "src/GLuaFixer/AG/ASTLint.hs" #-}+            {-# LINE 13667 "src/GLuaFixer/AG/ASTLint.hs" #-}             )) of      { _copy ->      (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}              _copy-             {-# LINE 13670 "src/GLuaFixer/AG/ASTLint.hs" #-}+             {-# LINE 13672 "src/GLuaFixer/AG/ASTLint.hs" #-}              )) of       { _lhsOcopy ->       (case (({-# LINE 222 "src/GLuaFixer/AG/ASTLint.ag" #-}               ident_-              {-# LINE 13675 "src/GLuaFixer/AG/ASTLint.hs" #-}+              {-# LINE 13677 "src/GLuaFixer/AG/ASTLint.hs" #-}               )) of        { _lhsOidentifier ->        (case (({-# LINE 152 "src/GLuaFixer/AG/ASTLint.ag" #-}                []-               {-# LINE 13680 "src/GLuaFixer/AG/ASTLint.hs" #-}+               {-# LINE 13682 "src/GLuaFixer/AG/ASTLint.hs" #-}                )) of         { _lhsOwarnings ->         ( _lhsOcopy,_lhsOidentifier,_lhsOwarnings) }) }) }) })@@ -13706,22 +13708,22 @@           { ( _hdIcopy,_hdIidentifier,_hdIwarnings) ->               (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}                       (:) _hdIcopy _tlIcopy-                      {-# LINE 13710 "src/GLuaFixer/AG/ASTLint.hs" #-}+                      {-# LINE 13712 "src/GLuaFixer/AG/ASTLint.hs" #-}                       )) of                { _copy ->                (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}                        _copy-                       {-# LINE 13715 "src/GLuaFixer/AG/ASTLint.hs" #-}+                       {-# LINE 13717 "src/GLuaFixer/AG/ASTLint.hs" #-}                        )) of                 { _lhsOcopy ->                 (case (({-# LINE 154 "src/GLuaFixer/AG/ASTLint.ag" #-}                         (const _hdIidentifier _tlIidentifier)-                        {-# LINE 13720 "src/GLuaFixer/AG/ASTLint.hs" #-}+                        {-# LINE 13722 "src/GLuaFixer/AG/ASTLint.hs" #-}                         )) of                  { _lhsOidentifier ->                  (case (({-# LINE 152 "src/GLuaFixer/AG/ASTLint.ag" #-}                          _hdIwarnings ++ _tlIwarnings-                         {-# LINE 13725 "src/GLuaFixer/AG/ASTLint.hs" #-}+                         {-# LINE 13727 "src/GLuaFixer/AG/ASTLint.hs" #-}                          )) of                   { _lhsOwarnings ->                   ( _lhsOcopy,_lhsOidentifier,_lhsOwarnings) }) }) }) }) }) })@@ -13729,22 +13731,22 @@ sem_TokenList_Nil =     (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}             []-            {-# LINE 13733 "src/GLuaFixer/AG/ASTLint.hs" #-}+            {-# LINE 13735 "src/GLuaFixer/AG/ASTLint.hs" #-}             )) of      { _copy ->      (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}              _copy-             {-# LINE 13738 "src/GLuaFixer/AG/ASTLint.hs" #-}+             {-# LINE 13740 "src/GLuaFixer/AG/ASTLint.hs" #-}              )) of       { _lhsOcopy ->       (case (({-# LINE 154 "src/GLuaFixer/AG/ASTLint.ag" #-}               unknownIdentifier-              {-# LINE 13743 "src/GLuaFixer/AG/ASTLint.hs" #-}+              {-# LINE 13745 "src/GLuaFixer/AG/ASTLint.hs" #-}               )) of        { _lhsOidentifier ->        (case (({-# LINE 152 "src/GLuaFixer/AG/ASTLint.ag" #-}                []-               {-# LINE 13748 "src/GLuaFixer/AG/ASTLint.hs" #-}+               {-# LINE 13750 "src/GLuaFixer/AG/ASTLint.hs" #-}                )) of         { _lhsOwarnings ->         ( _lhsOcopy,_lhsOidentifier,_lhsOwarnings) }) }) }) })@@ -13784,12 +13786,12 @@ sem_UnOp_UnMinus =     (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}             UnMinus-            {-# LINE 13788 "src/GLuaFixer/AG/ASTLint.hs" #-}+            {-# LINE 13790 "src/GLuaFixer/AG/ASTLint.hs" #-}             )) of      { _copy ->      (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}              _copy-             {-# LINE 13793 "src/GLuaFixer/AG/ASTLint.hs" #-}+             {-# LINE 13795 "src/GLuaFixer/AG/ASTLint.hs" #-}              )) of       { _lhsOcopy ->       (case ((let sem_UnOp_UnMinus_1 :: T_UnOp_1@@ -13806,42 +13808,42 @@                          _lhsIvariableStyle ->                            (case (({-# LINE 138 "src/GLuaFixer/AG/ASTLint.ag" #-}                                    _lhsIglobalDefinitions-                                   {-# LINE 13810 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                   {-# LINE 13812 "src/GLuaFixer/AG/ASTLint.hs" #-}                                    )) of                             { _lhsOglobalDefinitions ->                             (case (({-# LINE 154 "src/GLuaFixer/AG/ASTLint.ag" #-}                                     unknownIdentifier-                                    {-# LINE 13815 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                    {-# LINE 13817 "src/GLuaFixer/AG/ASTLint.hs" #-}                                     )) of                              { _lhsOidentifier ->                              (case (({-# LINE 143 "src/GLuaFixer/AG/ASTLint.ag" #-}                                      _lhsIisInModule-                                     {-# LINE 13820 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                     {-# LINE 13822 "src/GLuaFixer/AG/ASTLint.hs" #-}                                      )) of                               { _lhsOisInModule ->                               (case (({-# LINE 639 "src/GLuaFixer/AG/ASTLint.ag" #-}                                       False-                                      {-# LINE 13825 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                      {-# LINE 13827 "src/GLuaFixer/AG/ASTLint.hs" #-}                                       )) of                                { _lhsOisNegation ->                                (case (({-# LINE 135 "src/GLuaFixer/AG/ASTLint.ag" #-}                                        _lhsImtokenPos-                                       {-# LINE 13830 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                       {-# LINE 13832 "src/GLuaFixer/AG/ASTLint.hs" #-}                                        )) of                                 { _lhsOmtokenPos ->                                 (case (({-# LINE 144 "src/GLuaFixer/AG/ASTLint.ag" #-}                                         _lhsIscopes-                                        {-# LINE 13835 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                        {-# LINE 13837 "src/GLuaFixer/AG/ASTLint.hs" #-}                                         )) of                                  { _lhsOscopes ->                                  (case (({-# LINE 131 "src/GLuaFixer/AG/ASTLint.ag" #-}                                          _lhsIvariableStyle-                                         {-# LINE 13840 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                         {-# LINE 13842 "src/GLuaFixer/AG/ASTLint.hs" #-}                                          )) of                                   { _lhsOvariableStyle ->                                   (case (({-# LINE 152 "src/GLuaFixer/AG/ASTLint.ag" #-}                                           []-                                          {-# LINE 13845 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                          {-# LINE 13847 "src/GLuaFixer/AG/ASTLint.hs" #-}                                           )) of                                    { _lhsOwarnings ->                                    ( _lhsOglobalDefinitions,_lhsOidentifier,_lhsOisInModule,_lhsOisNegation,_lhsOmtokenPos,_lhsOscopes,_lhsOvariableStyle,_lhsOwarnings) }) }) }) }) }) }) }) }))@@ -13852,12 +13854,12 @@ sem_UnOp_ANot =     (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}             ANot-            {-# LINE 13856 "src/GLuaFixer/AG/ASTLint.hs" #-}+            {-# LINE 13858 "src/GLuaFixer/AG/ASTLint.hs" #-}             )) of      { _copy ->      (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}              _copy-             {-# LINE 13861 "src/GLuaFixer/AG/ASTLint.hs" #-}+             {-# LINE 13863 "src/GLuaFixer/AG/ASTLint.hs" #-}              )) of       { _lhsOcopy ->       (case ((let sem_UnOp_ANot_1 :: T_UnOp_1@@ -13874,42 +13876,42 @@                          _lhsIvariableStyle ->                            (case (({-# LINE 138 "src/GLuaFixer/AG/ASTLint.ag" #-}                                    _lhsIglobalDefinitions-                                   {-# LINE 13878 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                   {-# LINE 13880 "src/GLuaFixer/AG/ASTLint.hs" #-}                                    )) of                             { _lhsOglobalDefinitions ->                             (case (({-# LINE 154 "src/GLuaFixer/AG/ASTLint.ag" #-}                                     unknownIdentifier-                                    {-# LINE 13883 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                    {-# LINE 13885 "src/GLuaFixer/AG/ASTLint.hs" #-}                                     )) of                              { _lhsOidentifier ->                              (case (({-# LINE 143 "src/GLuaFixer/AG/ASTLint.ag" #-}                                      _lhsIisInModule-                                     {-# LINE 13888 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                     {-# LINE 13890 "src/GLuaFixer/AG/ASTLint.hs" #-}                                      )) of                               { _lhsOisInModule ->                               (case (({-# LINE 641 "src/GLuaFixer/AG/ASTLint.ag" #-}                                       True-                                      {-# LINE 13893 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                      {-# LINE 13895 "src/GLuaFixer/AG/ASTLint.hs" #-}                                       )) of                                { _lhsOisNegation ->                                (case (({-# LINE 135 "src/GLuaFixer/AG/ASTLint.ag" #-}                                        _lhsImtokenPos-                                       {-# LINE 13898 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                       {-# LINE 13900 "src/GLuaFixer/AG/ASTLint.hs" #-}                                        )) of                                 { _lhsOmtokenPos ->                                 (case (({-# LINE 144 "src/GLuaFixer/AG/ASTLint.ag" #-}                                         _lhsIscopes-                                        {-# LINE 13903 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                        {-# LINE 13905 "src/GLuaFixer/AG/ASTLint.hs" #-}                                         )) of                                  { _lhsOscopes ->                                  (case (({-# LINE 131 "src/GLuaFixer/AG/ASTLint.ag" #-}                                          _lhsIvariableStyle-                                         {-# LINE 13908 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                         {-# LINE 13910 "src/GLuaFixer/AG/ASTLint.hs" #-}                                          )) of                                   { _lhsOvariableStyle ->                                   (case (({-# LINE 152 "src/GLuaFixer/AG/ASTLint.ag" #-}                                           []-                                          {-# LINE 13913 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                          {-# LINE 13915 "src/GLuaFixer/AG/ASTLint.hs" #-}                                           )) of                                    { _lhsOwarnings ->                                    ( _lhsOglobalDefinitions,_lhsOidentifier,_lhsOisInModule,_lhsOisNegation,_lhsOmtokenPos,_lhsOscopes,_lhsOvariableStyle,_lhsOwarnings) }) }) }) }) }) }) }) }))@@ -13920,12 +13922,12 @@ sem_UnOp_AHash =     (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}             AHash-            {-# LINE 13924 "src/GLuaFixer/AG/ASTLint.hs" #-}+            {-# LINE 13926 "src/GLuaFixer/AG/ASTLint.hs" #-}             )) of      { _copy ->      (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}              _copy-             {-# LINE 13929 "src/GLuaFixer/AG/ASTLint.hs" #-}+             {-# LINE 13931 "src/GLuaFixer/AG/ASTLint.hs" #-}              )) of       { _lhsOcopy ->       (case ((let sem_UnOp_AHash_1 :: T_UnOp_1@@ -13942,42 +13944,42 @@                          _lhsIvariableStyle ->                            (case (({-# LINE 138 "src/GLuaFixer/AG/ASTLint.ag" #-}                                    _lhsIglobalDefinitions-                                   {-# LINE 13946 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                   {-# LINE 13948 "src/GLuaFixer/AG/ASTLint.hs" #-}                                    )) of                             { _lhsOglobalDefinitions ->                             (case (({-# LINE 154 "src/GLuaFixer/AG/ASTLint.ag" #-}                                     unknownIdentifier-                                    {-# LINE 13951 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                    {-# LINE 13953 "src/GLuaFixer/AG/ASTLint.hs" #-}                                     )) of                              { _lhsOidentifier ->                              (case (({-# LINE 143 "src/GLuaFixer/AG/ASTLint.ag" #-}                                      _lhsIisInModule-                                     {-# LINE 13956 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                     {-# LINE 13958 "src/GLuaFixer/AG/ASTLint.hs" #-}                                      )) of                               { _lhsOisInModule ->                               (case (({-# LINE 643 "src/GLuaFixer/AG/ASTLint.ag" #-}                                       False-                                      {-# LINE 13961 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                      {-# LINE 13963 "src/GLuaFixer/AG/ASTLint.hs" #-}                                       )) of                                { _lhsOisNegation ->                                (case (({-# LINE 135 "src/GLuaFixer/AG/ASTLint.ag" #-}                                        _lhsImtokenPos-                                       {-# LINE 13966 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                       {-# LINE 13968 "src/GLuaFixer/AG/ASTLint.hs" #-}                                        )) of                                 { _lhsOmtokenPos ->                                 (case (({-# LINE 144 "src/GLuaFixer/AG/ASTLint.ag" #-}                                         _lhsIscopes-                                        {-# LINE 13971 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                        {-# LINE 13973 "src/GLuaFixer/AG/ASTLint.hs" #-}                                         )) of                                  { _lhsOscopes ->                                  (case (({-# LINE 131 "src/GLuaFixer/AG/ASTLint.ag" #-}                                          _lhsIvariableStyle-                                         {-# LINE 13976 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                         {-# LINE 13978 "src/GLuaFixer/AG/ASTLint.hs" #-}                                          )) of                                   { _lhsOvariableStyle ->                                   (case (({-# LINE 152 "src/GLuaFixer/AG/ASTLint.ag" #-}                                           []-                                          {-# LINE 13981 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                          {-# LINE 13983 "src/GLuaFixer/AG/ASTLint.hs" #-}                                           )) of                                    { _lhsOwarnings ->                                    ( _lhsOglobalDefinitions,_lhsOidentifier,_lhsOisInModule,_lhsOisNegation,_lhsOmtokenPos,_lhsOscopes,_lhsOvariableStyle,_lhsOwarnings) }) }) }) }) }) }) }) }))@@ -14023,12 +14025,12 @@           { ( _hdIcopy,hd_1) ->               (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}                       (:) _hdIcopy _tlIcopy-                      {-# LINE 14027 "src/GLuaFixer/AG/ASTLint.hs" #-}+                      {-# LINE 14029 "src/GLuaFixer/AG/ASTLint.hs" #-}                       )) of                { _copy ->                (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}                        _copy-                       {-# LINE 14032 "src/GLuaFixer/AG/ASTLint.hs" #-}+                       {-# LINE 14034 "src/GLuaFixer/AG/ASTLint.hs" #-}                        )) of                 { _lhsOcopy ->                 (case ((let sem_VarsList_Cons_1 :: T_VarsList_1@@ -14046,151 +14048,151 @@                                    _lhsIvariableStyle ->                                      (case (({-# LINE 144 "src/GLuaFixer/AG/ASTLint.ag" #-}                                              _lhsIscopes-                                             {-# LINE 14050 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                             {-# LINE 14052 "src/GLuaFixer/AG/ASTLint.hs" #-}                                              )) of                                       { _hdOscopes ->                                       (case (({-# LINE 189 "src/GLuaFixer/AG/ASTLint.ag" #-}                                               _lhsIlocalDefinition-                                              {-# LINE 14055 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                              {-# LINE 14057 "src/GLuaFixer/AG/ASTLint.hs" #-}                                               )) of                                        { _hdOlocalDefinition ->                                        (case (({-# LINE 145 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                _lhsIisMeta-                                               {-# LINE 14060 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                               {-# LINE 14062 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                )) of                                         { _hdOisMeta ->                                         (case (({-# LINE 134 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                 _lhsIconfig-                                                {-# LINE 14065 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                {-# LINE 14067 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                 )) of                                          { _hdOconfig ->                                          (case (({-# LINE 131 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                  _lhsIvariableStyle-                                                 {-# LINE 14070 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                 {-# LINE 14072 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                  )) of                                           { _hdOvariableStyle ->                                           (case (({-# LINE 127 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                   _lhsIscopeLevel-                                                  {-# LINE 14075 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                  {-# LINE 14077 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                   )) of                                            { _hdOscopeLevel ->                                            (case (({-# LINE 135 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                    _lhsImtokenPos-                                                   {-# LINE 14080 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                   {-# LINE 14082 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                    )) of                                             { _hdOmtokenPos ->                                             (case (({-# LINE 128 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                     _lhsIloopLevel-                                                    {-# LINE 14085 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                    {-# LINE 14087 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                     )) of                                              { _hdOloopLevel ->                                              (case (({-# LINE 143 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                      _lhsIisInModule-                                                     {-# LINE 14090 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                     {-# LINE 14092 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                      )) of                                               { _hdOisInModule ->                                               (case (({-# LINE 138 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                       _lhsIglobalDefinitions-                                                      {-# LINE 14095 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                      {-# LINE 14097 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                       )) of                                                { _hdOglobalDefinitions ->                                                (case (({-# LINE 146 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                        _lhsIfuncName-                                                       {-# LINE 14100 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                       {-# LINE 14102 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                        )) of                                                 { _hdOfuncName ->                                                 (case (hd_1 _hdOconfig _hdOfuncName _hdOglobalDefinitions _hdOisInModule _hdOisMeta _hdOlocalDefinition _hdOloopLevel _hdOmtokenPos _hdOscopeLevel _hdOscopes _hdOvariableStyle) of                                                  { ( _hdIglobalDefinitions,_hdIidentifier,_hdIisInModule,_hdImtokenPos,_hdIscopes,_hdIvariableStyle,_hdIwarnings) ->                                                      (case (({-# LINE 144 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                              _hdIscopes-                                                             {-# LINE 14107 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                             {-# LINE 14109 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                              )) of                                                       { _tlOscopes ->                                                       (case (({-# LINE 189 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                               _lhsIlocalDefinition-                                                              {-# LINE 14112 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                              {-# LINE 14114 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                               )) of                                                        { _tlOlocalDefinition ->                                                        (case (({-# LINE 145 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                _lhsIisMeta-                                                               {-# LINE 14117 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                               {-# LINE 14119 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                )) of                                                         { _tlOisMeta ->                                                         (case (({-# LINE 143 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                 _hdIisInModule-                                                                {-# LINE 14122 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                {-# LINE 14124 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                 )) of                                                          { _tlOisInModule ->                                                          (case (({-# LINE 138 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                  _hdIglobalDefinitions-                                                                 {-# LINE 14127 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                 {-# LINE 14129 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                  )) of                                                           { _tlOglobalDefinitions ->                                                           (case (({-# LINE 134 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                   _lhsIconfig-                                                                  {-# LINE 14132 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                  {-# LINE 14134 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                   )) of                                                            { _tlOconfig ->                                                            (case (({-# LINE 131 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                    _hdIvariableStyle-                                                                   {-# LINE 14137 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                   {-# LINE 14139 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                    )) of                                                             { _tlOvariableStyle ->                                                             (case (({-# LINE 127 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                     _lhsIscopeLevel-                                                                    {-# LINE 14142 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                    {-# LINE 14144 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                     )) of                                                              { _tlOscopeLevel ->                                                              (case (({-# LINE 135 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                      _hdImtokenPos-                                                                     {-# LINE 14147 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                     {-# LINE 14149 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                      )) of                                                               { _tlOmtokenPos ->                                                               (case (({-# LINE 128 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                       _lhsIloopLevel-                                                                      {-# LINE 14152 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                      {-# LINE 14154 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                       )) of                                                                { _tlOloopLevel ->                                                                (case (({-# LINE 146 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                        _lhsIfuncName-                                                                       {-# LINE 14157 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                       {-# LINE 14159 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                        )) of                                                                 { _tlOfuncName ->                                                                 (case (tl_1 _tlOconfig _tlOfuncName _tlOglobalDefinitions _tlOisInModule _tlOisMeta _tlOlocalDefinition _tlOloopLevel _tlOmtokenPos _tlOscopeLevel _tlOscopes _tlOvariableStyle) of                                                                  { ( _tlIglobalDefinitions,_tlIidentifier,_tlIisInModule,_tlImtokenPos,_tlIscopes,_tlIvariableStyle,_tlIwarnings) ->                                                                      (case (({-# LINE 138 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                              _tlIglobalDefinitions-                                                                             {-# LINE 14164 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                             {-# LINE 14166 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                              )) of                                                                       { _lhsOglobalDefinitions ->                                                                       (case (({-# LINE 154 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                               (const _hdIidentifier _tlIidentifier)-                                                                              {-# LINE 14169 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                              {-# LINE 14171 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                               )) of                                                                        { _lhsOidentifier ->                                                                        (case (({-# LINE 143 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                                _tlIisInModule-                                                                               {-# LINE 14174 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                               {-# LINE 14176 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                                )) of                                                                         { _lhsOisInModule ->                                                                         (case (({-# LINE 234 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                                 _hdImtokenPos-                                                                                {-# LINE 14179 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                                {-# LINE 14181 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                                 )) of                                                                          { _lhsOmtokenPos ->                                                                          (case (({-# LINE 144 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                                  _tlIscopes-                                                                                 {-# LINE 14184 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                                 {-# LINE 14186 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                                  )) of                                                                           { _lhsOscopes ->                                                                           (case (({-# LINE 131 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                                   _tlIvariableStyle-                                                                                  {-# LINE 14189 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                                  {-# LINE 14191 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                                   )) of                                                                            { _lhsOvariableStyle ->                                                                            (case (({-# LINE 152 "src/GLuaFixer/AG/ASTLint.ag" #-}                                                                                    _hdIwarnings ++ _tlIwarnings-                                                                                   {-# LINE 14194 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                                                                   {-# LINE 14196 "src/GLuaFixer/AG/ASTLint.hs" #-}                                                                                    )) of                                                                             { _lhsOwarnings ->                                                                             ( _lhsOglobalDefinitions,_lhsOidentifier,_lhsOisInModule,_lhsOmtokenPos,_lhsOscopes,_lhsOvariableStyle,_lhsOwarnings) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))@@ -14201,12 +14203,12 @@ sem_VarsList_Nil =     (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}             []-            {-# LINE 14205 "src/GLuaFixer/AG/ASTLint.hs" #-}+            {-# LINE 14207 "src/GLuaFixer/AG/ASTLint.hs" #-}             )) of      { _copy ->      (case (({-# LINE 153 "src/GLuaFixer/AG/ASTLint.ag" #-}              _copy-             {-# LINE 14210 "src/GLuaFixer/AG/ASTLint.hs" #-}+             {-# LINE 14212 "src/GLuaFixer/AG/ASTLint.hs" #-}              )) of       { _lhsOcopy ->       (case ((let sem_VarsList_Nil_1 :: T_VarsList_1@@ -14224,37 +14226,37 @@                          _lhsIvariableStyle ->                            (case (({-# LINE 138 "src/GLuaFixer/AG/ASTLint.ag" #-}                                    _lhsIglobalDefinitions-                                   {-# LINE 14228 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                   {-# LINE 14230 "src/GLuaFixer/AG/ASTLint.hs" #-}                                    )) of                             { _lhsOglobalDefinitions ->                             (case (({-# LINE 154 "src/GLuaFixer/AG/ASTLint.ag" #-}                                     unknownIdentifier-                                    {-# LINE 14233 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                    {-# LINE 14235 "src/GLuaFixer/AG/ASTLint.hs" #-}                                     )) of                              { _lhsOidentifier ->                              (case (({-# LINE 143 "src/GLuaFixer/AG/ASTLint.ag" #-}                                      _lhsIisInModule-                                     {-# LINE 14238 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                     {-# LINE 14240 "src/GLuaFixer/AG/ASTLint.hs" #-}                                      )) of                               { _lhsOisInModule ->                               (case (({-# LINE 135 "src/GLuaFixer/AG/ASTLint.ag" #-}                                       _lhsImtokenPos-                                      {-# LINE 14243 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                      {-# LINE 14245 "src/GLuaFixer/AG/ASTLint.hs" #-}                                       )) of                                { _lhsOmtokenPos ->                                (case (({-# LINE 144 "src/GLuaFixer/AG/ASTLint.ag" #-}                                        _lhsIscopes-                                       {-# LINE 14248 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                       {-# LINE 14250 "src/GLuaFixer/AG/ASTLint.hs" #-}                                        )) of                                 { _lhsOscopes ->                                 (case (({-# LINE 131 "src/GLuaFixer/AG/ASTLint.ag" #-}                                         _lhsIvariableStyle-                                        {-# LINE 14253 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                        {-# LINE 14255 "src/GLuaFixer/AG/ASTLint.hs" #-}                                         )) of                                  { _lhsOvariableStyle ->                                  (case (({-# LINE 152 "src/GLuaFixer/AG/ASTLint.ag" #-}                                          []-                                         {-# LINE 14258 "src/GLuaFixer/AG/ASTLint.hs" #-}+                                         {-# LINE 14260 "src/GLuaFixer/AG/ASTLint.hs" #-}                                          )) of                                   { _lhsOwarnings ->                                   ( _lhsOglobalDefinitions,_lhsOidentifier,_lhsOisInModule,_lhsOmtokenPos,_lhsOscopes,_lhsOvariableStyle,_lhsOwarnings) }) }) }) }) }) }) }))
src/GLuaFixer/AG/LexLint.hs view
@@ -74,7 +74,7 @@  {-# LINE 76 "src/GLuaFixer/AG/LexLint.hs" #-} -{-# LINE 235 "src/GLuaFixer/AG/LexLint.ag" #-}+{-# LINE 237 "src/GLuaFixer/AG/LexLint.ag" #-}   @@ -816,8 +816,8 @@     (sem_Token_LSquare) sem_Token (RSquare) =     (sem_Token_RSquare)-sem_Token (Label _lbl) =-    (sem_Token_Label _lbl)+sem_Token (Label _whitespaceBefore _lbl _whitespaceAfter) =+    (sem_Token_Label _whitespaceBefore _lbl _whitespaceAfter) sem_Token (Identifier _ident) =     (sem_Token_Identifier _ident) -- semantic domain@@ -1631,8 +1631,8 @@                         {-# LINE 1632 "src/GLuaFixer/AG/LexLint.hs" #-}                         )) of                  { _lhsOneqSyntax ->-                 (case (({-# LINE 167 "src/GLuaFixer/AG/LexLint.ag" #-}-                         customAdvanceToken _lhsInextTokenPos _copy+                 (case (({-# LINE 172 "src/GLuaFixer/AG/LexLint.ag" #-}+                         customAdvanceStr _lhsInextTokenPos str_                          {-# LINE 1637 "src/GLuaFixer/AG/LexLint.hs" #-}                          )) of                   { _lhsOnextTokenPos ->@@ -1661,18 +1661,18 @@                               {-# LINE 1662 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOstrSyntax ->-                       (case (({-# LINE 172 "src/GLuaFixer/AG/LexLint.ag" #-}+                       (case (({-# LINE 173 "src/GLuaFixer/AG/LexLint.ag" #-}                                []                                {-# LINE 1667 "src/GLuaFixer/AG/LexLint.hs" #-}                                )) of                         { _tokenWarnings_augmented_syn ->-                        (case (({-# LINE 172 "src/GLuaFixer/AG/LexLint.ag" #-}+                        (case (({-# LINE 173 "src/GLuaFixer/AG/LexLint.ag" #-}                                 if _consistent     then id else                                    (:) $ SyntaxInconsistency "double quoted strings" "single quoted strings"                                 {-# LINE 1673 "src/GLuaFixer/AG/LexLint.hs" #-}                                 )) of                          { _tokenWarnings_augmented_f1 ->-                         (case (({-# LINE 172 "src/GLuaFixer/AG/LexLint.ag" #-}+                         (case (({-# LINE 173 "src/GLuaFixer/AG/LexLint.ag" #-}                                  foldr ($) _tokenWarnings_augmented_syn [_tokenWarnings_augmented_f1]                                  {-# LINE 1678 "src/GLuaFixer/AG/LexLint.hs" #-}                                  )) of@@ -1736,8 +1736,8 @@                         {-# LINE 1737 "src/GLuaFixer/AG/LexLint.hs" #-}                         )) of                  { _lhsOneqSyntax ->-                 (case (({-# LINE 167 "src/GLuaFixer/AG/LexLint.ag" #-}-                         customAdvanceToken _lhsInextTokenPos _copy+                 (case (({-# LINE 179 "src/GLuaFixer/AG/LexLint.ag" #-}+                         customAdvanceStr _lhsInextTokenPos str_                          {-# LINE 1742 "src/GLuaFixer/AG/LexLint.hs" #-}                          )) of                   { _lhsOnextTokenPos ->@@ -1751,12 +1751,12 @@                            {-# LINE 1752 "src/GLuaFixer/AG/LexLint.hs" #-}                            )) of                     { _lhsOorSyntax ->-                    (case (({-# LINE 176 "src/GLuaFixer/AG/LexLint.ag" #-}+                    (case (({-# LINE 177 "src/GLuaFixer/AG/LexLint.ag" #-}                             (not . lint_syntaxInconsistencies $ _lhsIconfig) || (not . luaUsed $ _lhsIstrSyntax) || isSingleChar str_                             {-# LINE 1757 "src/GLuaFixer/AG/LexLint.hs" #-}                             )) of                      { _consistent ->-                     (case (({-# LINE 177 "src/GLuaFixer/AG/LexLint.ag" #-}+                     (case (({-# LINE 178 "src/GLuaFixer/AG/LexLint.ag" #-}                              SyntaxUsed False (_consistent     && not (isSingleChar str_))                              {-# LINE 1762 "src/GLuaFixer/AG/LexLint.hs" #-}                              )) of@@ -1766,18 +1766,18 @@                               {-# LINE 1767 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOstrSyntax ->-                       (case (({-# LINE 178 "src/GLuaFixer/AG/LexLint.ag" #-}+                       (case (({-# LINE 180 "src/GLuaFixer/AG/LexLint.ag" #-}                                []                                {-# LINE 1772 "src/GLuaFixer/AG/LexLint.hs" #-}                                )) of                         { _tokenWarnings_augmented_syn ->-                        (case (({-# LINE 178 "src/GLuaFixer/AG/LexLint.ag" #-}+                        (case (({-# LINE 180 "src/GLuaFixer/AG/LexLint.ag" #-}                                 if _consistent     then id else                                    (:) $ SyntaxInconsistency "single quoted strings" "double quoted strings"                                 {-# LINE 1778 "src/GLuaFixer/AG/LexLint.hs" #-}                                 )) of                          { _tokenWarnings_augmented_f1 ->-                         (case (({-# LINE 178 "src/GLuaFixer/AG/LexLint.ag" #-}+                         (case (({-# LINE 180 "src/GLuaFixer/AG/LexLint.ag" #-}                                  foldr ($) _tokenWarnings_augmented_syn [_tokenWarnings_augmented_f1]                                  {-# LINE 1783 "src/GLuaFixer/AG/LexLint.hs" #-}                                  )) of@@ -1841,7 +1841,7 @@                         {-# LINE 1842 "src/GLuaFixer/AG/LexLint.hs" #-}                         )) of                  { _lhsOneqSyntax ->-                 (case (({-# LINE 182 "src/GLuaFixer/AG/LexLint.ag" #-}+                 (case (({-# LINE 184 "src/GLuaFixer/AG/LexLint.ag" #-}                          customAdvanceStr _lhsInextTokenPos str_                          {-# LINE 1847 "src/GLuaFixer/AG/LexLint.hs" #-}                          )) of@@ -2832,12 +2832,12 @@                        {-# LINE 2833 "src/GLuaFixer/AG/LexLint.hs" #-}                        )) of                 { _lhsOmultilineCommentSyntax ->-                (case (({-# LINE 221 "src/GLuaFixer/AG/LexLint.ag" #-}+                (case (({-# LINE 223 "src/GLuaFixer/AG/LexLint.ag" #-}                         (not . lint_syntaxInconsistencies $ _lhsIconfig) || (not . cUsed $ _lhsIneqSyntax)                         {-# LINE 2838 "src/GLuaFixer/AG/LexLint.hs" #-}                         )) of                  { _consistent ->-                 (case (({-# LINE 222 "src/GLuaFixer/AG/LexLint.ag" #-}+                 (case (({-# LINE 224 "src/GLuaFixer/AG/LexLint.ag" #-}                          SyntaxUsed _consistent     False                          {-# LINE 2843 "src/GLuaFixer/AG/LexLint.hs" #-}                          )) of@@ -2867,18 +2867,18 @@                               {-# LINE 2868 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOstrSyntax ->-                       (case (({-# LINE 223 "src/GLuaFixer/AG/LexLint.ag" #-}+                       (case (({-# LINE 225 "src/GLuaFixer/AG/LexLint.ag" #-}                                []                                {-# LINE 2873 "src/GLuaFixer/AG/LexLint.hs" #-}                                )) of                         { _tokenWarnings_augmented_syn ->-                        (case (({-# LINE 223 "src/GLuaFixer/AG/LexLint.ag" #-}+                        (case (({-# LINE 225 "src/GLuaFixer/AG/LexLint.ag" #-}                                 if _consistent     then id else                                    (:) $ SyntaxInconsistency "~=" "!="                                 {-# LINE 2879 "src/GLuaFixer/AG/LexLint.hs" #-}                                 )) of                          { _tokenWarnings_augmented_f1 ->-                         (case (({-# LINE 223 "src/GLuaFixer/AG/LexLint.ag" #-}+                         (case (({-# LINE 225 "src/GLuaFixer/AG/LexLint.ag" #-}                                  foldr ($) _tokenWarnings_augmented_syn [_tokenWarnings_augmented_f1]                                  {-# LINE 2884 "src/GLuaFixer/AG/LexLint.hs" #-}                                  )) of@@ -2936,12 +2936,12 @@                        {-# LINE 2937 "src/GLuaFixer/AG/LexLint.hs" #-}                        )) of                 { _lhsOmultilineCommentSyntax ->-                (case (({-# LINE 227 "src/GLuaFixer/AG/LexLint.ag" #-}+                (case (({-# LINE 229 "src/GLuaFixer/AG/LexLint.ag" #-}                         (not . lint_syntaxInconsistencies $ _lhsIconfig) || (not . luaUsed $ _lhsIneqSyntax)                         {-# LINE 2942 "src/GLuaFixer/AG/LexLint.hs" #-}                         )) of                  { _consistent ->-                 (case (({-# LINE 228 "src/GLuaFixer/AG/LexLint.ag" #-}+                 (case (({-# LINE 230 "src/GLuaFixer/AG/LexLint.ag" #-}                          SyntaxUsed False _consistent                          {-# LINE 2947 "src/GLuaFixer/AG/LexLint.hs" #-}                          )) of@@ -2971,18 +2971,18 @@                               {-# LINE 2972 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOstrSyntax ->-                       (case (({-# LINE 229 "src/GLuaFixer/AG/LexLint.ag" #-}+                       (case (({-# LINE 231 "src/GLuaFixer/AG/LexLint.ag" #-}                                []                                {-# LINE 2977 "src/GLuaFixer/AG/LexLint.hs" #-}                                )) of                         { _tokenWarnings_augmented_syn ->-                        (case (({-# LINE 229 "src/GLuaFixer/AG/LexLint.ag" #-}+                        (case (({-# LINE 231 "src/GLuaFixer/AG/LexLint.ag" #-}                                 if _consistent     then id else                                    (:) $ SyntaxInconsistency "!=" "~="                                 {-# LINE 2983 "src/GLuaFixer/AG/LexLint.hs" #-}                                 )) of                          { _tokenWarnings_augmented_f1 ->-                         (case (({-# LINE 229 "src/GLuaFixer/AG/LexLint.ag" #-}+                         (case (({-# LINE 231 "src/GLuaFixer/AG/LexLint.ag" #-}                                  foldr ($) _tokenWarnings_augmented_syn [_tokenWarnings_augmented_f1]                                  {-# LINE 2988 "src/GLuaFixer/AG/LexLint.hs" #-}                                  )) of@@ -3880,12 +3880,12 @@                          {-# LINE 3881 "src/GLuaFixer/AG/LexLint.hs" #-}                          )) of                   { _lhsOnextTokenPos ->-                  (case (({-# LINE 185 "src/GLuaFixer/AG/LexLint.ag" #-}+                  (case (({-# LINE 187 "src/GLuaFixer/AG/LexLint.ag" #-}                           (not . lint_syntaxInconsistencies $ _lhsIconfig) || (not . cUsed $ _lhsInotSyntax)                           {-# LINE 3886 "src/GLuaFixer/AG/LexLint.hs" #-}                           )) of                    { _consistent ->-                   (case (({-# LINE 186 "src/GLuaFixer/AG/LexLint.ag" #-}+                   (case (({-# LINE 188 "src/GLuaFixer/AG/LexLint.ag" #-}                            SyntaxUsed _consistent     False                            {-# LINE 3891 "src/GLuaFixer/AG/LexLint.hs" #-}                            )) of@@ -3905,18 +3905,18 @@                               {-# LINE 3906 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOstrSyntax ->-                       (case (({-# LINE 187 "src/GLuaFixer/AG/LexLint.ag" #-}+                       (case (({-# LINE 189 "src/GLuaFixer/AG/LexLint.ag" #-}                                []                                {-# LINE 3911 "src/GLuaFixer/AG/LexLint.hs" #-}                                )) of                         { _tokenWarnings_augmented_syn ->-                        (case (({-# LINE 187 "src/GLuaFixer/AG/LexLint.ag" #-}+                        (case (({-# LINE 189 "src/GLuaFixer/AG/LexLint.ag" #-}                                 if _consistent     then id else                                    (:) $ SyntaxInconsistency "not" "!"                                 {-# LINE 3917 "src/GLuaFixer/AG/LexLint.hs" #-}                                 )) of                          { _tokenWarnings_augmented_f1 ->-                         (case (({-# LINE 187 "src/GLuaFixer/AG/LexLint.ag" #-}+                         (case (({-# LINE 189 "src/GLuaFixer/AG/LexLint.ag" #-}                                  foldr ($) _tokenWarnings_augmented_syn [_tokenWarnings_augmented_f1]                                  {-# LINE 3922 "src/GLuaFixer/AG/LexLint.hs" #-}                                  )) of@@ -3984,12 +3984,12 @@                          {-# LINE 3985 "src/GLuaFixer/AG/LexLint.hs" #-}                          )) of                   { _lhsOnextTokenPos ->-                  (case (({-# LINE 191 "src/GLuaFixer/AG/LexLint.ag" #-}+                  (case (({-# LINE 193 "src/GLuaFixer/AG/LexLint.ag" #-}                           (not . lint_syntaxInconsistencies $ _lhsIconfig) || (not . luaUsed $ _lhsInotSyntax)                           {-# LINE 3990 "src/GLuaFixer/AG/LexLint.hs" #-}                           )) of                    { _consistent ->-                   (case (({-# LINE 192 "src/GLuaFixer/AG/LexLint.ag" #-}+                   (case (({-# LINE 194 "src/GLuaFixer/AG/LexLint.ag" #-}                            SyntaxUsed False _consistent                            {-# LINE 3995 "src/GLuaFixer/AG/LexLint.hs" #-}                            )) of@@ -4009,18 +4009,18 @@                               {-# LINE 4010 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOstrSyntax ->-                       (case (({-# LINE 193 "src/GLuaFixer/AG/LexLint.ag" #-}+                       (case (({-# LINE 195 "src/GLuaFixer/AG/LexLint.ag" #-}                                []                                {-# LINE 4015 "src/GLuaFixer/AG/LexLint.hs" #-}                                )) of                         { _tokenWarnings_augmented_syn ->-                        (case (({-# LINE 193 "src/GLuaFixer/AG/LexLint.ag" #-}+                        (case (({-# LINE 195 "src/GLuaFixer/AG/LexLint.ag" #-}                                 if _consistent     then id else                                    (:) $ SyntaxInconsistency "!" "not"                                 {-# LINE 4021 "src/GLuaFixer/AG/LexLint.hs" #-}                                 )) of                          { _tokenWarnings_augmented_f1 ->-                         (case (({-# LINE 193 "src/GLuaFixer/AG/LexLint.ag" #-}+                         (case (({-# LINE 195 "src/GLuaFixer/AG/LexLint.ag" #-}                                  foldr ($) _tokenWarnings_augmented_syn [_tokenWarnings_augmented_f1]                                  {-# LINE 4026 "src/GLuaFixer/AG/LexLint.hs" #-}                                  )) of@@ -4043,12 +4043,12 @@        _lhsInotSyntax        _lhsIorSyntax        _lhsIstrSyntax ->-         (case (({-# LINE 197 "src/GLuaFixer/AG/LexLint.ag" #-}+         (case (({-# LINE 199 "src/GLuaFixer/AG/LexLint.ag" #-}                  (not . lint_syntaxInconsistencies $ _lhsIconfig) || (not . cUsed $ _lhsIandSyntax)                  {-# LINE 4049 "src/GLuaFixer/AG/LexLint.hs" #-}                  )) of           { _consistent ->-          (case (({-# LINE 198 "src/GLuaFixer/AG/LexLint.ag" #-}+          (case (({-# LINE 200 "src/GLuaFixer/AG/LexLint.ag" #-}                   SyntaxUsed _consistent     False                   {-# LINE 4054 "src/GLuaFixer/AG/LexLint.hs" #-}                   )) of@@ -4113,18 +4113,18 @@                               {-# LINE 4114 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOstrSyntax ->-                       (case (({-# LINE 199 "src/GLuaFixer/AG/LexLint.ag" #-}+                       (case (({-# LINE 201 "src/GLuaFixer/AG/LexLint.ag" #-}                                []                                {-# LINE 4119 "src/GLuaFixer/AG/LexLint.hs" #-}                                )) of                         { _tokenWarnings_augmented_syn ->-                        (case (({-# LINE 199 "src/GLuaFixer/AG/LexLint.ag" #-}+                        (case (({-# LINE 201 "src/GLuaFixer/AG/LexLint.ag" #-}                                 if _consistent     then id else                                    (:) $ SyntaxInconsistency "and" "&&"                                 {-# LINE 4125 "src/GLuaFixer/AG/LexLint.hs" #-}                                 )) of                          { _tokenWarnings_augmented_f1 ->-                         (case (({-# LINE 199 "src/GLuaFixer/AG/LexLint.ag" #-}+                         (case (({-# LINE 201 "src/GLuaFixer/AG/LexLint.ag" #-}                                  foldr ($) _tokenWarnings_augmented_syn [_tokenWarnings_augmented_f1]                                  {-# LINE 4130 "src/GLuaFixer/AG/LexLint.hs" #-}                                  )) of@@ -4147,12 +4147,12 @@        _lhsInotSyntax        _lhsIorSyntax        _lhsIstrSyntax ->-         (case (({-# LINE 203 "src/GLuaFixer/AG/LexLint.ag" #-}+         (case (({-# LINE 205 "src/GLuaFixer/AG/LexLint.ag" #-}                  (not . lint_syntaxInconsistencies $ _lhsIconfig) || (not . luaUsed $ _lhsIandSyntax)                  {-# LINE 4153 "src/GLuaFixer/AG/LexLint.hs" #-}                  )) of           { _consistent ->-          (case (({-# LINE 204 "src/GLuaFixer/AG/LexLint.ag" #-}+          (case (({-# LINE 206 "src/GLuaFixer/AG/LexLint.ag" #-}                   SyntaxUsed False _consistent                   {-# LINE 4158 "src/GLuaFixer/AG/LexLint.hs" #-}                   )) of@@ -4217,18 +4217,18 @@                               {-# LINE 4218 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOstrSyntax ->-                       (case (({-# LINE 205 "src/GLuaFixer/AG/LexLint.ag" #-}+                       (case (({-# LINE 207 "src/GLuaFixer/AG/LexLint.ag" #-}                                []                                {-# LINE 4223 "src/GLuaFixer/AG/LexLint.hs" #-}                                )) of                         { _tokenWarnings_augmented_syn ->-                        (case (({-# LINE 205 "src/GLuaFixer/AG/LexLint.ag" #-}+                        (case (({-# LINE 207 "src/GLuaFixer/AG/LexLint.ag" #-}                                 if _consistent     then id else                                    (:) $ SyntaxInconsistency "&&" "and"                                 {-# LINE 4229 "src/GLuaFixer/AG/LexLint.hs" #-}                                 )) of                          { _tokenWarnings_augmented_f1 ->-                         (case (({-# LINE 205 "src/GLuaFixer/AG/LexLint.ag" #-}+                         (case (({-# LINE 207 "src/GLuaFixer/AG/LexLint.ag" #-}                                  foldr ($) _tokenWarnings_augmented_syn [_tokenWarnings_augmented_f1]                                  {-# LINE 4234 "src/GLuaFixer/AG/LexLint.hs" #-}                                  )) of@@ -4301,12 +4301,12 @@                           {-# LINE 4302 "src/GLuaFixer/AG/LexLint.hs" #-}                           )) of                    { _lhsOnotSyntax ->-                   (case (({-# LINE 209 "src/GLuaFixer/AG/LexLint.ag" #-}+                   (case (({-# LINE 211 "src/GLuaFixer/AG/LexLint.ag" #-}                            (not . lint_syntaxInconsistencies $ _lhsIconfig) || (not . cUsed $ _lhsIorSyntax)                            {-# LINE 4307 "src/GLuaFixer/AG/LexLint.hs" #-}                            )) of                     { _consistent ->-                    (case (({-# LINE 210 "src/GLuaFixer/AG/LexLint.ag" #-}+                    (case (({-# LINE 212 "src/GLuaFixer/AG/LexLint.ag" #-}                             SyntaxUsed _consistent     False                             {-# LINE 4312 "src/GLuaFixer/AG/LexLint.hs" #-}                             )) of@@ -4321,18 +4321,18 @@                               {-# LINE 4322 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOstrSyntax ->-                       (case (({-# LINE 211 "src/GLuaFixer/AG/LexLint.ag" #-}+                       (case (({-# LINE 213 "src/GLuaFixer/AG/LexLint.ag" #-}                                []                                {-# LINE 4327 "src/GLuaFixer/AG/LexLint.hs" #-}                                )) of                         { _tokenWarnings_augmented_syn ->-                        (case (({-# LINE 211 "src/GLuaFixer/AG/LexLint.ag" #-}+                        (case (({-# LINE 213 "src/GLuaFixer/AG/LexLint.ag" #-}                                 if _consistent     then id else                                    (:) $ SyntaxInconsistency "or" "||"                                 {-# LINE 4333 "src/GLuaFixer/AG/LexLint.hs" #-}                                 )) of                          { _tokenWarnings_augmented_f1 ->-                         (case (({-# LINE 211 "src/GLuaFixer/AG/LexLint.ag" #-}+                         (case (({-# LINE 213 "src/GLuaFixer/AG/LexLint.ag" #-}                                  foldr ($) _tokenWarnings_augmented_syn [_tokenWarnings_augmented_f1]                                  {-# LINE 4338 "src/GLuaFixer/AG/LexLint.hs" #-}                                  )) of@@ -4405,12 +4405,12 @@                           {-# LINE 4406 "src/GLuaFixer/AG/LexLint.hs" #-}                           )) of                    { _lhsOnotSyntax ->-                   (case (({-# LINE 215 "src/GLuaFixer/AG/LexLint.ag" #-}+                   (case (({-# LINE 217 "src/GLuaFixer/AG/LexLint.ag" #-}                            (not . lint_syntaxInconsistencies $ _lhsIconfig) || (not . luaUsed $ _lhsIorSyntax)                            {-# LINE 4411 "src/GLuaFixer/AG/LexLint.hs" #-}                            )) of                     { _consistent ->-                    (case (({-# LINE 216 "src/GLuaFixer/AG/LexLint.ag" #-}+                    (case (({-# LINE 218 "src/GLuaFixer/AG/LexLint.ag" #-}                             SyntaxUsed False _consistent                             {-# LINE 4416 "src/GLuaFixer/AG/LexLint.hs" #-}                             )) of@@ -4425,18 +4425,18 @@                               {-# LINE 4426 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOstrSyntax ->-                       (case (({-# LINE 217 "src/GLuaFixer/AG/LexLint.ag" #-}+                       (case (({-# LINE 219 "src/GLuaFixer/AG/LexLint.ag" #-}                                []                                {-# LINE 4431 "src/GLuaFixer/AG/LexLint.hs" #-}                                )) of                         { _tokenWarnings_augmented_syn ->-                        (case (({-# LINE 217 "src/GLuaFixer/AG/LexLint.ag" #-}+                        (case (({-# LINE 219 "src/GLuaFixer/AG/LexLint.ag" #-}                                 if _consistent     then id else                                    (:) $ SyntaxInconsistency "||" "or"                                 {-# LINE 4437 "src/GLuaFixer/AG/LexLint.hs" #-}                                 )) of                          { _tokenWarnings_augmented_f1 ->-                         (case (({-# LINE 217 "src/GLuaFixer/AG/LexLint.ag" #-}+                         (case (({-# LINE 219 "src/GLuaFixer/AG/LexLint.ag" #-}                                  foldr ($) _tokenWarnings_augmented_syn [_tokenWarnings_augmented_f1]                                  {-# LINE 4442 "src/GLuaFixer/AG/LexLint.hs" #-}                                  )) of@@ -6274,8 +6274,10 @@                        { _lhsOwarnings ->                        ( _lhsOandSyntax,_lhsOcopy,_lhsOcustomWarnings,_lhsOindentation,_lhsOlineCommentSyntax,_lhsOmultilineCommentSyntax,_lhsOneqSyntax,_lhsOnextTokenPos,_lhsOnotSyntax,_lhsOorSyntax,_lhsOstrSyntax,_lhsOtokenWarnings,_lhsOwarnings) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_Token_Label :: String ->+                   String ->+                   String ->                    T_Token-sem_Token_Label lbl_ =+sem_Token_Label whitespaceBefore_ lbl_ whitespaceAfter_ =     (\ _lhsIandSyntax        _lhsIconfig        _lhsIindentation@@ -6288,72 +6290,72 @@        _lhsIstrSyntax ->          (case (({-# LINE 84 "src/GLuaFixer/AG/LexLint.ag" #-}                  _lhsIandSyntax-                 {-# LINE 6292 "src/GLuaFixer/AG/LexLint.hs" #-}+                 {-# LINE 6294 "src/GLuaFixer/AG/LexLint.hs" #-}                  )) of           { _lhsOandSyntax ->           (case (({-# LINE 76 "src/GLuaFixer/AG/LexLint.ag" #-}-                  Label lbl_-                  {-# LINE 6297 "src/GLuaFixer/AG/LexLint.hs" #-}+                  Label whitespaceBefore_ lbl_ whitespaceAfter_+                  {-# LINE 6299 "src/GLuaFixer/AG/LexLint.hs" #-}                   )) of            { _copy ->            (case (({-# LINE 76 "src/GLuaFixer/AG/LexLint.ag" #-}                    _copy-                   {-# LINE 6302 "src/GLuaFixer/AG/LexLint.hs" #-}+                   {-# LINE 6304 "src/GLuaFixer/AG/LexLint.hs" #-}                    )) of             { _lhsOcopy ->             (case (({-# LINE 96 "src/GLuaFixer/AG/LexLint.ag" #-}                     []-                    {-# LINE 6307 "src/GLuaFixer/AG/LexLint.hs" #-}+                    {-# LINE 6309 "src/GLuaFixer/AG/LexLint.hs" #-}                     )) of              { _lhsOcustomWarnings ->              (case (({-# LINE 88 "src/GLuaFixer/AG/LexLint.ag" #-}                      _lhsIindentation-                     {-# LINE 6312 "src/GLuaFixer/AG/LexLint.hs" #-}+                     {-# LINE 6314 "src/GLuaFixer/AG/LexLint.hs" #-}                      )) of               { _lhsOindentation ->               (case (({-# LINE 81 "src/GLuaFixer/AG/LexLint.ag" #-}                       _lhsIlineCommentSyntax-                      {-# LINE 6317 "src/GLuaFixer/AG/LexLint.hs" #-}+                      {-# LINE 6319 "src/GLuaFixer/AG/LexLint.hs" #-}                       )) of                { _lhsOlineCommentSyntax ->                (case (({-# LINE 82 "src/GLuaFixer/AG/LexLint.ag" #-}                        _lhsImultilineCommentSyntax-                       {-# LINE 6322 "src/GLuaFixer/AG/LexLint.hs" #-}+                       {-# LINE 6324 "src/GLuaFixer/AG/LexLint.hs" #-}                        )) of                 { _lhsOmultilineCommentSyntax ->                 (case (({-# LINE 86 "src/GLuaFixer/AG/LexLint.ag" #-}                         _lhsIneqSyntax-                        {-# LINE 6327 "src/GLuaFixer/AG/LexLint.hs" #-}+                        {-# LINE 6329 "src/GLuaFixer/AG/LexLint.hs" #-}                         )) of                  { _lhsOneqSyntax ->-                 (case (({-# LINE 233 "src/GLuaFixer/AG/LexLint.ag" #-}-                         customAdvanceStr _lhsInextTokenPos (showString "::" . showString lbl_ . showString "::" $ "")-                         {-# LINE 6332 "src/GLuaFixer/AG/LexLint.hs" #-}+                 (case (({-# LINE 235 "src/GLuaFixer/AG/LexLint.ag" #-}+                         customAdvanceStr _lhsInextTokenPos (show _copy    )+                         {-# LINE 6334 "src/GLuaFixer/AG/LexLint.hs" #-}                          )) of                   { _lhsOnextTokenPos ->                   (case (({-# LINE 83 "src/GLuaFixer/AG/LexLint.ag" #-}                           _lhsInotSyntax-                          {-# LINE 6337 "src/GLuaFixer/AG/LexLint.hs" #-}+                          {-# LINE 6339 "src/GLuaFixer/AG/LexLint.hs" #-}                           )) of                    { _lhsOnotSyntax ->                    (case (({-# LINE 85 "src/GLuaFixer/AG/LexLint.ag" #-}                            _lhsIorSyntax-                           {-# LINE 6342 "src/GLuaFixer/AG/LexLint.hs" #-}+                           {-# LINE 6344 "src/GLuaFixer/AG/LexLint.hs" #-}                            )) of                     { _lhsOorSyntax ->                     (case (({-# LINE 87 "src/GLuaFixer/AG/LexLint.ag" #-}                             _lhsIstrSyntax-                            {-# LINE 6347 "src/GLuaFixer/AG/LexLint.hs" #-}+                            {-# LINE 6349 "src/GLuaFixer/AG/LexLint.hs" #-}                             )) of                      { _lhsOstrSyntax ->                      (case (({-# LINE 93 "src/GLuaFixer/AG/LexLint.ag" #-}                              []-                             {-# LINE 6352 "src/GLuaFixer/AG/LexLint.hs" #-}+                             {-# LINE 6354 "src/GLuaFixer/AG/LexLint.hs" #-}                              )) of                       { _lhsOtokenWarnings ->                       (case (({-# LINE 79 "src/GLuaFixer/AG/LexLint.ag" #-}                               []-                              {-# LINE 6357 "src/GLuaFixer/AG/LexLint.hs" #-}+                              {-# LINE 6359 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOwarnings ->                        ( _lhsOandSyntax,_lhsOcopy,_lhsOcustomWarnings,_lhsOindentation,_lhsOlineCommentSyntax,_lhsOmultilineCommentSyntax,_lhsOneqSyntax,_lhsOnextTokenPos,_lhsOnotSyntax,_lhsOorSyntax,_lhsOstrSyntax,_lhsOtokenWarnings,_lhsOwarnings) }) }) }) }) }) }) }) }) }) }) }) }) }) }))@@ -6372,72 +6374,72 @@        _lhsIstrSyntax ->          (case (({-# LINE 84 "src/GLuaFixer/AG/LexLint.ag" #-}                  _lhsIandSyntax-                 {-# LINE 6376 "src/GLuaFixer/AG/LexLint.hs" #-}+                 {-# LINE 6378 "src/GLuaFixer/AG/LexLint.hs" #-}                  )) of           { _lhsOandSyntax ->           (case (({-# LINE 76 "src/GLuaFixer/AG/LexLint.ag" #-}                   Identifier ident_-                  {-# LINE 6381 "src/GLuaFixer/AG/LexLint.hs" #-}+                  {-# LINE 6383 "src/GLuaFixer/AG/LexLint.hs" #-}                   )) of            { _copy ->            (case (({-# LINE 76 "src/GLuaFixer/AG/LexLint.ag" #-}                    _copy-                   {-# LINE 6386 "src/GLuaFixer/AG/LexLint.hs" #-}+                   {-# LINE 6388 "src/GLuaFixer/AG/LexLint.hs" #-}                    )) of             { _lhsOcopy ->             (case (({-# LINE 96 "src/GLuaFixer/AG/LexLint.ag" #-}                     []-                    {-# LINE 6391 "src/GLuaFixer/AG/LexLint.hs" #-}+                    {-# LINE 6393 "src/GLuaFixer/AG/LexLint.hs" #-}                     )) of              { _lhsOcustomWarnings ->              (case (({-# LINE 88 "src/GLuaFixer/AG/LexLint.ag" #-}                      _lhsIindentation-                     {-# LINE 6396 "src/GLuaFixer/AG/LexLint.hs" #-}+                     {-# LINE 6398 "src/GLuaFixer/AG/LexLint.hs" #-}                      )) of               { _lhsOindentation ->               (case (({-# LINE 81 "src/GLuaFixer/AG/LexLint.ag" #-}                       _lhsIlineCommentSyntax-                      {-# LINE 6401 "src/GLuaFixer/AG/LexLint.hs" #-}+                      {-# LINE 6403 "src/GLuaFixer/AG/LexLint.hs" #-}                       )) of                { _lhsOlineCommentSyntax ->                (case (({-# LINE 82 "src/GLuaFixer/AG/LexLint.ag" #-}                        _lhsImultilineCommentSyntax-                       {-# LINE 6406 "src/GLuaFixer/AG/LexLint.hs" #-}+                       {-# LINE 6408 "src/GLuaFixer/AG/LexLint.hs" #-}                        )) of                 { _lhsOmultilineCommentSyntax ->                 (case (({-# LINE 86 "src/GLuaFixer/AG/LexLint.ag" #-}                         _lhsIneqSyntax-                        {-# LINE 6411 "src/GLuaFixer/AG/LexLint.hs" #-}+                        {-# LINE 6413 "src/GLuaFixer/AG/LexLint.hs" #-}                         )) of                  { _lhsOneqSyntax ->                  (case (({-# LINE 167 "src/GLuaFixer/AG/LexLint.ag" #-}                          customAdvanceToken _lhsInextTokenPos _copy-                         {-# LINE 6416 "src/GLuaFixer/AG/LexLint.hs" #-}+                         {-# LINE 6418 "src/GLuaFixer/AG/LexLint.hs" #-}                          )) of                   { _lhsOnextTokenPos ->                   (case (({-# LINE 83 "src/GLuaFixer/AG/LexLint.ag" #-}                           _lhsInotSyntax-                          {-# LINE 6421 "src/GLuaFixer/AG/LexLint.hs" #-}+                          {-# LINE 6423 "src/GLuaFixer/AG/LexLint.hs" #-}                           )) of                    { _lhsOnotSyntax ->                    (case (({-# LINE 85 "src/GLuaFixer/AG/LexLint.ag" #-}                            _lhsIorSyntax-                           {-# LINE 6426 "src/GLuaFixer/AG/LexLint.hs" #-}+                           {-# LINE 6428 "src/GLuaFixer/AG/LexLint.hs" #-}                            )) of                     { _lhsOorSyntax ->                     (case (({-# LINE 87 "src/GLuaFixer/AG/LexLint.ag" #-}                             _lhsIstrSyntax-                            {-# LINE 6431 "src/GLuaFixer/AG/LexLint.hs" #-}+                            {-# LINE 6433 "src/GLuaFixer/AG/LexLint.hs" #-}                             )) of                      { _lhsOstrSyntax ->                      (case (({-# LINE 93 "src/GLuaFixer/AG/LexLint.ag" #-}                              []-                             {-# LINE 6436 "src/GLuaFixer/AG/LexLint.hs" #-}+                             {-# LINE 6438 "src/GLuaFixer/AG/LexLint.hs" #-}                              )) of                       { _lhsOtokenWarnings ->                       (case (({-# LINE 79 "src/GLuaFixer/AG/LexLint.ag" #-}                               []-                              {-# LINE 6441 "src/GLuaFixer/AG/LexLint.hs" #-}+                              {-# LINE 6443 "src/GLuaFixer/AG/LexLint.hs" #-}                               )) of                        { _lhsOwarnings ->                        ( _lhsOandSyntax,_lhsOcopy,_lhsOcustomWarnings,_lhsOindentation,_lhsOlineCommentSyntax,_lhsOmultilineCommentSyntax,_lhsOneqSyntax,_lhsOnextTokenPos,_lhsOnotSyntax,_lhsOorSyntax,_lhsOstrSyntax,_lhsOtokenWarnings,_lhsOwarnings) }) }) }) }) }) }) }) }) }) }) }) }) }) }))@@ -6483,171 +6485,171 @@        _lhsIstrSyntax ->          (case (({-# LINE 77 "src/GLuaFixer/AG/LexLint.ag" #-}                  _lhsIconfig-                 {-# LINE 6487 "src/GLuaFixer/AG/LexLint.hs" #-}+                 {-# LINE 6489 "src/GLuaFixer/AG/LexLint.hs" #-}                  )) of           { _tlOconfig ->           (case (({-# LINE 77 "src/GLuaFixer/AG/LexLint.ag" #-}                   _lhsIconfig-                  {-# LINE 6492 "src/GLuaFixer/AG/LexLint.hs" #-}+                  {-# LINE 6494 "src/GLuaFixer/AG/LexLint.hs" #-}                   )) of            { _hdOconfig ->            (case (({-# LINE 84 "src/GLuaFixer/AG/LexLint.ag" #-}                    _lhsIandSyntax-                   {-# LINE 6497 "src/GLuaFixer/AG/LexLint.hs" #-}+                   {-# LINE 6499 "src/GLuaFixer/AG/LexLint.hs" #-}                    )) of             { _hdOandSyntax ->             (case (({-# LINE 87 "src/GLuaFixer/AG/LexLint.ag" #-}                     _lhsIstrSyntax-                    {-# LINE 6502 "src/GLuaFixer/AG/LexLint.hs" #-}+                    {-# LINE 6504 "src/GLuaFixer/AG/LexLint.hs" #-}                     )) of              { _hdOstrSyntax ->              (case (({-# LINE 85 "src/GLuaFixer/AG/LexLint.ag" #-}                      _lhsIorSyntax-                     {-# LINE 6507 "src/GLuaFixer/AG/LexLint.hs" #-}+                     {-# LINE 6509 "src/GLuaFixer/AG/LexLint.hs" #-}                      )) of               { _hdOorSyntax ->               (case (({-# LINE 83 "src/GLuaFixer/AG/LexLint.ag" #-}                       _lhsInotSyntax-                      {-# LINE 6512 "src/GLuaFixer/AG/LexLint.hs" #-}+                      {-# LINE 6514 "src/GLuaFixer/AG/LexLint.hs" #-}                       )) of                { _hdOnotSyntax ->                (case (({-# LINE 90 "src/GLuaFixer/AG/LexLint.ag" #-}                        _lhsInextTokenPos-                       {-# LINE 6517 "src/GLuaFixer/AG/LexLint.hs" #-}+                       {-# LINE 6519 "src/GLuaFixer/AG/LexLint.hs" #-}                        )) of                 { _hdOnextTokenPos ->                 (case (({-# LINE 86 "src/GLuaFixer/AG/LexLint.ag" #-}                         _lhsIneqSyntax-                        {-# LINE 6522 "src/GLuaFixer/AG/LexLint.hs" #-}+                        {-# LINE 6524 "src/GLuaFixer/AG/LexLint.hs" #-}                         )) of                  { _hdOneqSyntax ->                  (case (({-# LINE 82 "src/GLuaFixer/AG/LexLint.ag" #-}                          _lhsImultilineCommentSyntax-                         {-# LINE 6527 "src/GLuaFixer/AG/LexLint.hs" #-}+                         {-# LINE 6529 "src/GLuaFixer/AG/LexLint.hs" #-}                          )) of                   { _hdOmultilineCommentSyntax ->                   (case (({-# LINE 81 "src/GLuaFixer/AG/LexLint.ag" #-}                           _lhsIlineCommentSyntax-                          {-# LINE 6532 "src/GLuaFixer/AG/LexLint.hs" #-}+                          {-# LINE 6534 "src/GLuaFixer/AG/LexLint.hs" #-}                           )) of                    { _hdOlineCommentSyntax ->                    (case (({-# LINE 88 "src/GLuaFixer/AG/LexLint.ag" #-}                            _lhsIindentation-                           {-# LINE 6537 "src/GLuaFixer/AG/LexLint.hs" #-}+                           {-# LINE 6539 "src/GLuaFixer/AG/LexLint.hs" #-}                            )) of                     { _hdOindentation ->                     (case (hd_ _hdOandSyntax _hdOconfig _hdOindentation _hdOlineCommentSyntax _hdOmultilineCommentSyntax _hdOneqSyntax _hdOnextTokenPos _hdOnotSyntax _hdOorSyntax _hdOstrSyntax) of                      { ( _hdIandSyntax,_hdIcopy,_hdIcustomWarnings,_hdIindentation,_hdIlineCommentSyntax,_hdImultilineCommentSyntax,_hdIneqSyntax,_hdInextTokenPos,_hdInotSyntax,_hdIorSyntax,_hdIstrSyntax,_hdItokenWarnings,_hdIwarnings) ->                          (case (({-# LINE 84 "src/GLuaFixer/AG/LexLint.ag" #-}                                  _hdIandSyntax-                                 {-# LINE 6544 "src/GLuaFixer/AG/LexLint.hs" #-}+                                 {-# LINE 6546 "src/GLuaFixer/AG/LexLint.hs" #-}                                  )) of                           { _tlOandSyntax ->                           (case (({-# LINE 87 "src/GLuaFixer/AG/LexLint.ag" #-}                                   _hdIstrSyntax-                                  {-# LINE 6549 "src/GLuaFixer/AG/LexLint.hs" #-}+                                  {-# LINE 6551 "src/GLuaFixer/AG/LexLint.hs" #-}                                   )) of                            { _tlOstrSyntax ->                            (case (({-# LINE 85 "src/GLuaFixer/AG/LexLint.ag" #-}                                    _hdIorSyntax-                                   {-# LINE 6554 "src/GLuaFixer/AG/LexLint.hs" #-}+                                   {-# LINE 6556 "src/GLuaFixer/AG/LexLint.hs" #-}                                    )) of                             { _tlOorSyntax ->                             (case (({-# LINE 83 "src/GLuaFixer/AG/LexLint.ag" #-}                                     _hdInotSyntax-                                    {-# LINE 6559 "src/GLuaFixer/AG/LexLint.hs" #-}+                                    {-# LINE 6561 "src/GLuaFixer/AG/LexLint.hs" #-}                                     )) of                              { _tlOnotSyntax ->                              (case (({-# LINE 90 "src/GLuaFixer/AG/LexLint.ag" #-}                                      _hdInextTokenPos-                                     {-# LINE 6564 "src/GLuaFixer/AG/LexLint.hs" #-}+                                     {-# LINE 6566 "src/GLuaFixer/AG/LexLint.hs" #-}                                      )) of                               { _tlOnextTokenPos ->                               (case (({-# LINE 86 "src/GLuaFixer/AG/LexLint.ag" #-}                                       _hdIneqSyntax-                                      {-# LINE 6569 "src/GLuaFixer/AG/LexLint.hs" #-}+                                      {-# LINE 6571 "src/GLuaFixer/AG/LexLint.hs" #-}                                       )) of                                { _tlOneqSyntax ->                                (case (({-# LINE 82 "src/GLuaFixer/AG/LexLint.ag" #-}                                        _hdImultilineCommentSyntax-                                       {-# LINE 6574 "src/GLuaFixer/AG/LexLint.hs" #-}+                                       {-# LINE 6576 "src/GLuaFixer/AG/LexLint.hs" #-}                                        )) of                                 { _tlOmultilineCommentSyntax ->                                 (case (({-# LINE 81 "src/GLuaFixer/AG/LexLint.ag" #-}                                         _hdIlineCommentSyntax-                                        {-# LINE 6579 "src/GLuaFixer/AG/LexLint.hs" #-}+                                        {-# LINE 6581 "src/GLuaFixer/AG/LexLint.hs" #-}                                         )) of                                  { _tlOlineCommentSyntax ->                                  (case (({-# LINE 88 "src/GLuaFixer/AG/LexLint.ag" #-}                                          _hdIindentation-                                         {-# LINE 6584 "src/GLuaFixer/AG/LexLint.hs" #-}+                                         {-# LINE 6586 "src/GLuaFixer/AG/LexLint.hs" #-}                                          )) of                                   { _tlOindentation ->                                   (case (tl_ _tlOandSyntax _tlOconfig _tlOindentation _tlOlineCommentSyntax _tlOmultilineCommentSyntax _tlOneqSyntax _tlOnextTokenPos _tlOnotSyntax _tlOorSyntax _tlOstrSyntax) of                                    { ( _tlIandSyntax,_tlIcopy,_tlIindentation,_tlIlineCommentSyntax,_tlImultilineCommentSyntax,_tlIneqSyntax,_tlInextTokenPos,_tlInotSyntax,_tlIorSyntax,_tlIstrSyntax,_tlItokenWarnings,_tlIwarnings) ->                                        (case (({-# LINE 84 "src/GLuaFixer/AG/LexLint.ag" #-}                                                _tlIandSyntax-                                               {-# LINE 6591 "src/GLuaFixer/AG/LexLint.hs" #-}+                                               {-# LINE 6593 "src/GLuaFixer/AG/LexLint.hs" #-}                                                )) of                                         { _lhsOandSyntax ->                                         (case (({-# LINE 76 "src/GLuaFixer/AG/LexLint.ag" #-}                                                 (:) _hdIcopy _tlIcopy-                                                {-# LINE 6596 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                {-# LINE 6598 "src/GLuaFixer/AG/LexLint.hs" #-}                                                 )) of                                          { _copy ->                                          (case (({-# LINE 76 "src/GLuaFixer/AG/LexLint.ag" #-}                                                  _copy-                                                 {-# LINE 6601 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                 {-# LINE 6603 "src/GLuaFixer/AG/LexLint.hs" #-}                                                  )) of                                           { _lhsOcopy ->                                           (case (({-# LINE 88 "src/GLuaFixer/AG/LexLint.ag" #-}                                                   _tlIindentation-                                                  {-# LINE 6606 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                  {-# LINE 6608 "src/GLuaFixer/AG/LexLint.hs" #-}                                                   )) of                                            { _lhsOindentation ->                                            (case (({-# LINE 81 "src/GLuaFixer/AG/LexLint.ag" #-}                                                    _tlIlineCommentSyntax-                                                   {-# LINE 6611 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                   {-# LINE 6613 "src/GLuaFixer/AG/LexLint.hs" #-}                                                    )) of                                             { _lhsOlineCommentSyntax ->                                             (case (({-# LINE 82 "src/GLuaFixer/AG/LexLint.ag" #-}                                                     _tlImultilineCommentSyntax-                                                    {-# LINE 6616 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                    {-# LINE 6618 "src/GLuaFixer/AG/LexLint.hs" #-}                                                     )) of                                              { _lhsOmultilineCommentSyntax ->                                              (case (({-# LINE 86 "src/GLuaFixer/AG/LexLint.ag" #-}                                                      _tlIneqSyntax-                                                     {-# LINE 6621 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                     {-# LINE 6623 "src/GLuaFixer/AG/LexLint.hs" #-}                                                      )) of                                               { _lhsOneqSyntax ->                                               (case (({-# LINE 90 "src/GLuaFixer/AG/LexLint.ag" #-}                                                       _tlInextTokenPos-                                                      {-# LINE 6626 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                      {-# LINE 6628 "src/GLuaFixer/AG/LexLint.hs" #-}                                                       )) of                                                { _lhsOnextTokenPos ->                                                (case (({-# LINE 83 "src/GLuaFixer/AG/LexLint.ag" #-}                                                        _tlInotSyntax-                                                       {-# LINE 6631 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                       {-# LINE 6633 "src/GLuaFixer/AG/LexLint.hs" #-}                                                        )) of                                                 { _lhsOnotSyntax ->                                                 (case (({-# LINE 85 "src/GLuaFixer/AG/LexLint.ag" #-}                                                         _tlIorSyntax-                                                        {-# LINE 6636 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                        {-# LINE 6638 "src/GLuaFixer/AG/LexLint.hs" #-}                                                         )) of                                                  { _lhsOorSyntax ->                                                  (case (({-# LINE 87 "src/GLuaFixer/AG/LexLint.ag" #-}                                                          _tlIstrSyntax-                                                         {-# LINE 6641 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                         {-# LINE 6643 "src/GLuaFixer/AG/LexLint.hs" #-}                                                          )) of                                                   { _lhsOstrSyntax ->                                                   (case (({-# LINE 93 "src/GLuaFixer/AG/LexLint.ag" #-}                                                           _hdItokenWarnings ++ _tlItokenWarnings-                                                          {-# LINE 6646 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                          {-# LINE 6648 "src/GLuaFixer/AG/LexLint.hs" #-}                                                           )) of                                                    { _lhsOtokenWarnings ->                                                    (case (({-# LINE 79 "src/GLuaFixer/AG/LexLint.ag" #-}                                                            _hdIwarnings ++ _tlIwarnings-                                                           {-# LINE 6651 "src/GLuaFixer/AG/LexLint.hs" #-}+                                                           {-# LINE 6653 "src/GLuaFixer/AG/LexLint.hs" #-}                                                            )) of                                                     { _lhsOwarnings ->                                                     ( _lhsOandSyntax,_lhsOcopy,_lhsOindentation,_lhsOlineCommentSyntax,_lhsOmultilineCommentSyntax,_lhsOneqSyntax,_lhsOnextTokenPos,_lhsOnotSyntax,_lhsOorSyntax,_lhsOstrSyntax,_lhsOtokenWarnings,_lhsOwarnings) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))@@ -6665,67 +6667,67 @@        _lhsIstrSyntax ->          (case (({-# LINE 84 "src/GLuaFixer/AG/LexLint.ag" #-}                  _lhsIandSyntax-                 {-# LINE 6669 "src/GLuaFixer/AG/LexLint.hs" #-}+                 {-# LINE 6671 "src/GLuaFixer/AG/LexLint.hs" #-}                  )) of           { _lhsOandSyntax ->           (case (({-# LINE 76 "src/GLuaFixer/AG/LexLint.ag" #-}                   []-                  {-# LINE 6674 "src/GLuaFixer/AG/LexLint.hs" #-}+                  {-# LINE 6676 "src/GLuaFixer/AG/LexLint.hs" #-}                   )) of            { _copy ->            (case (({-# LINE 76 "src/GLuaFixer/AG/LexLint.ag" #-}                    _copy-                   {-# LINE 6679 "src/GLuaFixer/AG/LexLint.hs" #-}+                   {-# LINE 6681 "src/GLuaFixer/AG/LexLint.hs" #-}                    )) of             { _lhsOcopy ->             (case (({-# LINE 88 "src/GLuaFixer/AG/LexLint.ag" #-}                     _lhsIindentation-                    {-# LINE 6684 "src/GLuaFixer/AG/LexLint.hs" #-}+                    {-# LINE 6686 "src/GLuaFixer/AG/LexLint.hs" #-}                     )) of              { _lhsOindentation ->              (case (({-# LINE 81 "src/GLuaFixer/AG/LexLint.ag" #-}                      _lhsIlineCommentSyntax-                     {-# LINE 6689 "src/GLuaFixer/AG/LexLint.hs" #-}+                     {-# LINE 6691 "src/GLuaFixer/AG/LexLint.hs" #-}                      )) of               { _lhsOlineCommentSyntax ->               (case (({-# LINE 82 "src/GLuaFixer/AG/LexLint.ag" #-}                       _lhsImultilineCommentSyntax-                      {-# LINE 6694 "src/GLuaFixer/AG/LexLint.hs" #-}+                      {-# LINE 6696 "src/GLuaFixer/AG/LexLint.hs" #-}                       )) of                { _lhsOmultilineCommentSyntax ->                (case (({-# LINE 86 "src/GLuaFixer/AG/LexLint.ag" #-}                        _lhsIneqSyntax-                       {-# LINE 6699 "src/GLuaFixer/AG/LexLint.hs" #-}+                       {-# LINE 6701 "src/GLuaFixer/AG/LexLint.hs" #-}                        )) of                 { _lhsOneqSyntax ->                 (case (({-# LINE 90 "src/GLuaFixer/AG/LexLint.ag" #-}                         _lhsInextTokenPos-                        {-# LINE 6704 "src/GLuaFixer/AG/LexLint.hs" #-}+                        {-# LINE 6706 "src/GLuaFixer/AG/LexLint.hs" #-}                         )) of                  { _lhsOnextTokenPos ->                  (case (({-# LINE 83 "src/GLuaFixer/AG/LexLint.ag" #-}                          _lhsInotSyntax-                         {-# LINE 6709 "src/GLuaFixer/AG/LexLint.hs" #-}+                         {-# LINE 6711 "src/GLuaFixer/AG/LexLint.hs" #-}                          )) of                   { _lhsOnotSyntax ->                   (case (({-# LINE 85 "src/GLuaFixer/AG/LexLint.ag" #-}                           _lhsIorSyntax-                          {-# LINE 6714 "src/GLuaFixer/AG/LexLint.hs" #-}+                          {-# LINE 6716 "src/GLuaFixer/AG/LexLint.hs" #-}                           )) of                    { _lhsOorSyntax ->                    (case (({-# LINE 87 "src/GLuaFixer/AG/LexLint.ag" #-}                            _lhsIstrSyntax-                           {-# LINE 6719 "src/GLuaFixer/AG/LexLint.hs" #-}+                           {-# LINE 6721 "src/GLuaFixer/AG/LexLint.hs" #-}                            )) of                     { _lhsOstrSyntax ->                     (case (({-# LINE 93 "src/GLuaFixer/AG/LexLint.ag" #-}                             []-                            {-# LINE 6724 "src/GLuaFixer/AG/LexLint.hs" #-}+                            {-# LINE 6726 "src/GLuaFixer/AG/LexLint.hs" #-}                             )) of                      { _lhsOtokenWarnings ->                      (case (({-# LINE 79 "src/GLuaFixer/AG/LexLint.ag" #-}                              []-                             {-# LINE 6729 "src/GLuaFixer/AG/LexLint.hs" #-}+                             {-# LINE 6731 "src/GLuaFixer/AG/LexLint.hs" #-}                              )) of                       { _lhsOwarnings ->                       ( _lhsOandSyntax,_lhsOcopy,_lhsOindentation,_lhsOlineCommentSyntax,_lhsOmultilineCommentSyntax,_lhsOneqSyntax,_lhsOnextTokenPos,_lhsOnotSyntax,_lhsOorSyntax,_lhsOstrSyntax,_lhsOtokenWarnings,_lhsOwarnings) }) }) }) }) }) }) }) }) }) }) }) }) }))
src/GLuaFixer/BadSequenceFinder.hs view
@@ -1,25 +1,25 @@ {-# LANGUAGE LambdaCase #-}-module GLuaFixer.BadSequenceFinder (sequenceWarnings, checkFromString) where +module GLuaFixer.BadSequenceFinder (sequenceWarnings, checkFromString) where  import GLua.AG.Token+import qualified GLua.PSLexer as PSL import GLua.PSParser import GLuaFixer.LintMessage import GLuaFixer.LintSettings import Text.Parsec-import qualified GLua.PSLexer as PSL  -- | Satisfy for normal tokens pTSatisfy :: (Token -> Bool) -> AParser MToken pTSatisfy f = pMSatisfy f'- where+  where     f' :: MToken -> Bool     f' (MToken _ t) = f t  -- | Parse an identifier ident :: String -> AParser MToken ident s = pMSatisfy isIdent- where+  where     isIdent :: MToken -> Bool     isIdent (MToken _ (Identifier s')) = s == s'     isIdent _ = False@@ -41,7 +41,7 @@ -- | Parse anything that isn't whitespace notWhitespace :: AParser MToken notWhitespace = pMSatisfy isNotWhitespace- where+  where     isNotWhitespace :: MToken -> Bool     isNotWhitespace (MToken _ (Whitespace _)) = False     isNotWhitespace _ = True@@ -49,220 +49,241 @@ -- | Warnings for deprecated library functions libraryWarnings :: String -> AParser String -> AParser String libraryWarnings s p = do-    ident s-    pMTok Dot+  ident s+  pMTok Dot -    p+  p  -- | Warnings for the ai library aiWarnings :: AParser String-aiWarnings = libraryWarnings "ai" $-    "The function is broken" <$ ident "GetScheduleID" <|>-    "The function is broken" <$ ident "GetTaskID"+aiWarnings =+  libraryWarnings "ai" $+    "The function is broken" <$ ident "GetScheduleID"+      <|> "The function is broken" <$ ident "GetTaskID"  -- | Warnings for the math library mathWarnings :: AParser String-mathWarnings = libraryWarnings "math" $-    "Use math.Distance instead" <$ ident "Dist" <|>-    "Use math.fmod instead" <$ ident "mod"-+mathWarnings =+  libraryWarnings "math" $+    "Use math.Distance instead" <$ ident "Dist"+      <|> "Use math.fmod instead" <$ ident "mod"  -- | Warnings for the spawnmenu library spawnmenuWarnings :: AParser String-spawnmenuWarnings = libraryWarnings "spawnmenu" $-    "Use spawnmenu.SaveToTextFiles instead" <$ ident "DoSaveToTextFiles" <|>-    "Use spawnmenu.PopulateFromTextFiles instead" <$ ident "PopulateFromEngineTextFiles" <|>-    "The function is broken" <$ ident "SwitchToolTab"+spawnmenuWarnings =+  libraryWarnings "spawnmenu" $+    "Use spawnmenu.SaveToTextFiles instead" <$ ident "DoSaveToTextFiles"+      <|> "Use spawnmenu.PopulateFromTextFiles instead" <$ ident "PopulateFromEngineTextFiles"+      <|> "The function is broken" <$ ident "SwitchToolTab"  -- | Warnings for the string library stringWarnings :: AParser String-stringWarnings = libraryWarnings "string" $-    "Use either string.sub(str, index, index) or str[index]" <$ ident "GetChar" <|>-    "Use string.gmatch instead" <$ ident "gfind"+stringWarnings =+  libraryWarnings "string" $+    "Use either string.sub(str, index, index) or str[index]" <$ ident "GetChar"+      <|> "Use string.gmatch instead" <$ ident "gfind"  -- | Warnings for the surface library surfaceWarnings :: AParser String-surfaceWarnings = libraryWarnings "surface" $-    "Use ScrH instead" <$ ident "ScreenHeight" <|>-    "Use ScrW instead" <$ ident "ScreenWidth"+surfaceWarnings =+  libraryWarnings "surface" $+    "Use ScrH instead" <$ ident "ScreenHeight"+      <|> "Use ScrW instead" <$ ident "ScreenWidth"  -- | Warnings for the table library tableWarnings :: AParser String-tableWarnings = libraryWarnings "table" $-    "Use ipairs or something instead" <$ (-        ident "FindNext" <|>-        ident "FindPrev" <|>-        ident "foreach"  <|>-        ident "ForEach"  <|>-        ident "foreachi"-    ) <|>-    "Use next instead" <$ (-        ident "GetFirstKey" <|>-        ident "GetFirstValue"-    ) <|>-    "Use #tbl instead"      <$ ident "GetLastKey"   <|>-    "Use tbl[#tbl] instead" <$ ident "GetLastValue" <|>-    "Use #tbl instead"      <$ ident "getn"-+tableWarnings =+  libraryWarnings "table" $+    "Use ipairs or something instead"+      <$ ( ident "FindNext"+            <|> ident "FindPrev"+            <|> ident "foreach"+            <|> ident "ForEach"+            <|> ident "foreachi"+         )+      <|> "Use next instead"+        <$ ( ident "GetFirstKey"+              <|> ident "GetFirstValue"+           )+      <|> "Use #tbl instead" <$ ident "GetLastKey"+      <|> "Use tbl[#tbl] instead" <$ ident "GetLastValue"+      <|> "Use #tbl instead" <$ ident "getn"  -- | Warnings for the timer library timerWarnings :: AParser String-timerWarnings = libraryWarnings "timer" $-    "The function is broken" <$ ident "Check" <|>-    "Use timer.Remove instead" <$ ident "Destroy"+timerWarnings =+  libraryWarnings "timer" $+    "The function is broken" <$ ident "Check"+      <|> "Use timer.Remove instead" <$ ident "Destroy"  -- | Warnings for the umsg library umsgWarnings :: AParser String-umsgWarnings = libraryWarnings "umsg" $+umsgWarnings =+  libraryWarnings "umsg" $     "Use net messages." <$ ident "Start"  -- | Warnings for the util library utilWarnings :: AParser String-utilWarnings = libraryWarnings "util" $-    "Use tobool, without the util bit" <$ ident "tobool" <|>-    "The function is broken" <$ ident "TraceEntityHull"+utilWarnings =+  libraryWarnings "util" $+    "Use tobool, without the util bit" <$ ident "tobool"+      <|> "The function is broken" <$ ident "TraceEntityHull"  -- | Warnings for things to do with self selfWarnings :: AParser String-selfWarnings = libraryWarnings "self" $+selfWarnings =+  libraryWarnings "self" $     "Use self:GetOwner() instead" <$ ident "Owner"  -- | Warnings for meta functions metaFuncWarnings :: AParser String metaFuncWarnings = do-    pMTok Colon--    -- CLuaLocomotion functions-    "Use :IsUsingLadder instead"                                     <$ ident "IsAscendingOrDescendingLadder"       <|>--      -- Panel functions-      "Use :GetPaintBackground instead"                                <$ ident "GetDrawBackground"                   <|>-      "Use :SetPaintBackground instead"                                <$ ident "SetDrawBackground"                   <|>-      "The function is broken"                                         <$ ident "AddText"                             <|>-      "Only used by deprecated Derma controls"                         <$ ident "PostMessage"                         <|>-      "Only used in deprecated Derma controls"                         <$ ident "SetActionFunction"                   <|>-      "Use :SetKeyboardInputEnabled instead"                           <$ ident "SetKeyBoardInputEnabled"             <|>-      "The function is broken"                                         <$ ident "SetPaintFunction"                    <|>-      "Use :SetTooltip instead, notice the lowercase fucking t"        <$ ident "SetToolTip"                          <|>-      "use :SetTooltipPanel instead, notice the lowercase fucking t"   <$ ident "SetToolTipPanel"                     <|>-      "Use :IsValid instead"                                           <$ ident "Valid"                               <|>--      -- Entity functions-      "Use :GetHitBoxBone instead, note the capital fucking B"         <$ ident "GetHitboxBone"                       <|>-      "Use :GetNWAngle instead"                                        <$ ident "GetNetworkedAngle"                   <|>-      "Use :GetNWBool instead"                                         <$ ident "GetNetworkedBool"                    <|>-      "Use :GetNWEntity instead"                                       <$ ident "GetNetworkedEntity"                  <|>-      "Use :GetNWFloat instead"                                        <$ ident "GetNetworkedFloat"                   <|>-      "Use :GetNWInt instead"                                          <$ ident "GetNetworkedInt"                     <|>-      "Use :GetNWString instead"                                       <$ ident "GetNetworkedString"                  <|>-      "Use :GetNWVarProxy instead"                                     <$ ident "GetNetworkedVarProxy"                <|>-      "Use :GetNWVarTable instead"                                     <$ ident "GetNetworkedVarTable"                <|>-      "Use :GetNWVector instead"                                       <$ ident "GetNetworkedVector"                  <|>-      "The function is broken"                                         <$ ident "GetWorkshopID"                       <|>-      "Use :SetNWAngle instead"                                        <$ ident "SetNetworkedAngle"                   <|>-      "Use :SetNWBool instead"                                         <$ ident "SetNetworkedBool"                    <|>-      "Use :SetNWEntity instead"                                       <$ ident "SetNetworkedEntity"                  <|>-      "Use :SetNWFloat instead"                                        <$ ident "SetNetworkedFloat"                   <|>-      "Use :SetNWInt instead"                                          <$ ident "SetNetworkedInt"                     <|>-      "Use :SetNWString instead"                                       <$ ident "SetNetworkedString"                  <|>-      "Use :SetNWVarProxy instead"                                     <$ ident "SetNetworkedVarProxy"                <|>-      "Use :SetNWVector instead"                                       <$ ident "SetNetworkedVector"                  <|>--      -- Player functions-      "Use :GetViewPunchAngles instead"                                <$ ident "GetPunchAngle"                       <|>--      -- Material functions-      "The function is broken"                                         <$ ident "SetShader"                           <|>--      -- Vector functions-      "Use :Dot instead"                                               <$ ident "DotProduct"+  pMTok Colon +  -- CLuaLocomotion functions+  "Use :IsUsingLadder instead" <$ ident "IsAscendingOrDescendingLadder"+    <|>+    -- Panel functions+    "Use :GetPaintBackground instead" <$ ident "GetDrawBackground"+    <|> "Use :SetPaintBackground instead" <$ ident "SetDrawBackground"+    <|> "The function is broken" <$ ident "AddText"+    <|> "Only used by deprecated Derma controls" <$ ident "PostMessage"+    <|> "Only used in deprecated Derma controls" <$ ident "SetActionFunction"+    <|> "Use :SetKeyboardInputEnabled instead" <$ ident "SetKeyBoardInputEnabled"+    <|> "The function is broken" <$ ident "SetPaintFunction"+    <|> "Use :SetTooltip instead, notice the lowercase fucking t" <$ ident "SetToolTip"+    <|> "use :SetTooltipPanel instead, notice the lowercase fucking t" <$ ident "SetToolTipPanel"+    <|> "Use :IsValid instead" <$ ident "Valid"+    <|>+    -- Entity functions+    "Use :GetHitBoxBone instead, note the capital fucking B" <$ ident "GetHitboxBone"+    <|> "Use :GetNWAngle instead" <$ ident "GetNetworkedAngle"+    <|> "Use :GetNWBool instead" <$ ident "GetNetworkedBool"+    <|> "Use :GetNWEntity instead" <$ ident "GetNetworkedEntity"+    <|> "Use :GetNWFloat instead" <$ ident "GetNetworkedFloat"+    <|> "Use :GetNWInt instead" <$ ident "GetNetworkedInt"+    <|> "Use :GetNWString instead" <$ ident "GetNetworkedString"+    <|> "Use :GetNWVarProxy instead" <$ ident "GetNetworkedVarProxy"+    <|> "Use :GetNWVarTable instead" <$ ident "GetNetworkedVarTable"+    <|> "Use :GetNWVector instead" <$ ident "GetNetworkedVector"+    <|> "The function is broken" <$ ident "GetWorkshopID"+    <|> "Use :SetNWAngle instead" <$ ident "SetNetworkedAngle"+    <|> "Use :SetNWBool instead" <$ ident "SetNetworkedBool"+    <|> "Use :SetNWEntity instead" <$ ident "SetNetworkedEntity"+    <|> "Use :SetNWFloat instead" <$ ident "SetNetworkedFloat"+    <|> "Use :SetNWInt instead" <$ ident "SetNetworkedInt"+    <|> "Use :SetNWString instead" <$ ident "SetNetworkedString"+    <|> "Use :SetNWVarProxy instead" <$ ident "SetNetworkedVarProxy"+    <|> "Use :SetNWVector instead" <$ ident "SetNetworkedVector"+    <|>+    -- Player functions+    "Use :GetViewPunchAngles instead" <$ ident "GetPunchAngle"+    <|>+    -- Material functions+    "The function is broken" <$ ident "SetShader"+    <|>+    -- Vector functions+    "Use :Dot instead" <$ ident "DotProduct"  -- | Parser for all deprecated sequences of tokens deprecatedSequence :: LintSettings -> AParser Issue-deprecatedSequence opts = if not (lint_deprecated opts) then parserZero else Deprecated <$> (--    -- Deprecated meta functions-    try metaFuncWarnings--    -- Library functions-    <|>try aiWarnings-    <|>try mathWarnings-    <|>try spawnmenuWarnings-    <|>try stringWarnings-    <|>try surfaceWarnings-    <|>try tableWarnings-    <|>try timerWarnings-    <|>try umsgWarnings-    <|>try utilWarnings-    <|>try selfWarnings--    -- Global functions-    <|> "Use collectgarbage(\"count\") instead"-        <$ ident "gcinfo"-    <|> "Use ConVar objects instead"-        <$ ident "GetConVarNumber"-    <|> "Use ConVar objects instead"-        <$ ident "GetConVarString"-    <|> "Use AddCSLuaFile in the file itself instead"-        <$ ident "IncludeCS"-    <|> "Use ScreenScale instead"-        <$ ident "SScale"-    <|> "Use IsUselessModel instead"-        <$ ident "UTIL_IsUselessModel"-    <|> "Use IsValid instead"-        <$ ident "ValidPanel"-    <|> "Use net messages."-        <$ ident "SendUserMessage"-    )+deprecatedSequence opts =+  if not (lint_deprecated opts)+    then parserZero+    else+      Deprecated+        <$> (+              -- Deprecated meta functions+              try metaFuncWarnings+                -- Library functions+                <|> try aiWarnings+                <|> try mathWarnings+                <|> try spawnmenuWarnings+                <|> try stringWarnings+                <|> try surfaceWarnings+                <|> try tableWarnings+                <|> try timerWarnings+                <|> try umsgWarnings+                <|> try utilWarnings+                <|> try selfWarnings+                -- Global functions+                <|> "Use collectgarbage(\"count\") instead"+                  <$ ident "gcinfo"+                <|> "Use ConVar objects instead"+                  <$ ident "GetConVarNumber"+                <|> "Use ConVar objects instead"+                  <$ ident "GetConVarString"+                <|> "Use AddCSLuaFile in the file itself instead"+                  <$ ident "IncludeCS"+                <|> "Use ScreenScale instead"+                  <$ ident "SScale"+                <|> "Use IsUselessModel instead"+                  <$ ident "UTIL_IsUselessModel"+                <|> "Use IsValid instead"+                  <$ ident "ValidPanel"+                <|> "Use net messages."+                  <$ ident "SendUserMessage"+            )  -- | Parser for all beginner mistakes beginnerMistakeSequence :: LintSettings -> AParser Issue-beginnerMistakeSequence opts = if not (lint_beginnerMistakes opts) then parserZero else BeginnerMistake <$>-    (try ("There's little fucking reason to use ';' in the first place, don't use it twice in a row" <$ pMTok Semicolon <* pMTok Semicolon) <|>-    try ("The server already knows who sent the net message, use the first parameter of net.Receive" <$ do-        ident "net"-        pMTok Dot-        ident "WriteEntity"-        pMTok LRound-        optional whitespace-        ident "LocalPlayer"-        optional whitespace-        pMTok LRound-        optional whitespace-        pMTok RRound-        ) <|>-    try ("Jesus christ fuck off already" <$ do-        pMTok While-        whitespace-        pMTok TTrue-        whitespace-        pMTok Do-        whitespace-        pMTok End-        )-    )+beginnerMistakeSequence opts =+  if not (lint_beginnerMistakes opts)+    then parserZero+    else+      BeginnerMistake+        <$> ( try ("There's little fucking reason to use ';' in the first place, don't use it twice in a row" <$ pMTok Semicolon <* pMTok Semicolon)+                <|> try+                  ( "The server already knows who sent the net message, use the first parameter of net.Receive" <$ do+                      ident "net"+                      pMTok Dot+                      ident "WriteEntity"+                      pMTok LRound+                      optional whitespace+                      ident "LocalPlayer"+                      optional whitespace+                      pMTok LRound+                      optional whitespace+                      pMTok RRound+                  )+                <|> try+                  ( "Jesus christ fuck off already" <$ do+                      pMTok While+                      whitespace+                      pMTok TTrue+                      whitespace+                      pMTok Do+                      whitespace+                      pMTok End+                  )+            )  whiteSpaceStyleSequence :: LintSettings -> AParser Issue-whiteSpaceStyleSequence opts = if not (lint_whitespaceStyle opts) then parserZero else WhitespaceStyle <$> (-    try ("Please put some whitespace after 'if'" <$ pMTok If <* notFollowedBy whitespace)            <|>-    try ("Please put some whitespace after 'elseif'" <$ pMTok Elseif <* notFollowedBy whitespace)    <|>-    try ("Please put some whitespace after 'while'" <$ pMTok While <* notFollowedBy whitespace)      <|>-    try ("Please put some whitespace after 'until'" <$ pMTok Until <* notFollowedBy whitespace)      <|>--    try ("Please put some whitespace after ')'" <$ do-        pMTok RRound-        pTSatisfy (\t -> not (isWhitespace t) && t `notElem` [Colon, RRound, LRound, LSquare, RSquare, LCurly, RCurly, Comma, Dot, Semicolon])-        ) <|>-    try ("Please put some whitespace before the operator" <$ do-        notWhitespace-        choice [pMTok Plus, pMTok Multiply, pMTok Divide, pMTok Modulus, pMTok TEq, pMTok TNEq, pMTok TCNEq, pMTok TLEQ, pMTok TGEQ, pMTok TLT, pMTok TGT, pMTok Equals, pMTok Concatenate, pMTok And, pMTok CAnd, pMTok Or, pMTok COr]-        ) <|>-    try ("Please put some whitespace after the operator" <$ do-        choice [pMTok Plus, pMTok Multiply, pMTok Divide, pMTok Modulus, pMTok TEq, pMTok TNEq, pMTok TCNEq, pMTok TLEQ, pMTok TGEQ, pMTok TLT, pMTok TGT, pMTok Equals, pMTok Concatenate, pMTok And, pMTok CAnd, pMTok Or, pMTok COr]-        notWhitespace-        )-    )+whiteSpaceStyleSequence opts =+  if not (lint_whitespaceStyle opts)+    then parserZero+    else+      WhitespaceStyle+        <$> ( try ("Please put some whitespace after 'if'" <$ pMTok If <* notFollowedBy whitespace)+                <|> try ("Please put some whitespace after 'elseif'" <$ pMTok Elseif <* notFollowedBy whitespace)+                <|> try ("Please put some whitespace after 'while'" <$ pMTok While <* notFollowedBy whitespace)+                <|> try ("Please put some whitespace after 'until'" <$ pMTok Until <* notFollowedBy whitespace)+                <|> try+                  ( "Please put some whitespace after ')'" <$ do+                      pMTok RRound+                      pTSatisfy (\t -> not (isWhitespace t) && t `notElem` [Colon, RRound, LRound, LSquare, RSquare, LCurly, RCurly, Comma, Dot, Semicolon])+                  )+                <|> try+                  ( "Please put some whitespace before the operator" <$ do+                      notWhitespace+                      choice [pMTok Plus, pMTok Multiply, pMTok Divide, pMTok Modulus, pMTok TEq, pMTok TNEq, pMTok TCNEq, pMTok TLEQ, pMTok TGEQ, pMTok TLT, pMTok TGT, pMTok Equals, pMTok Concatenate, pMTok And, pMTok CAnd, pMTok Or, pMTok COr]+                  )+                <|> try+                  ( "Please put some whitespace after the operator" <$ do+                      choice [pMTok Plus, pMTok Multiply, pMTok Divide, pMTok Modulus, pMTok TEq, pMTok TNEq, pMTok TCNEq, pMTok TLEQ, pMTok TGEQ, pMTok TLT, pMTok TGT, pMTok Equals, pMTok Concatenate, pMTok And, pMTok CAnd, pMTok Or, pMTok COr]+                      notWhitespace+                  )+            )  -- | Matches any token but the given one pNotTToken :: Token -> AParser MToken@@ -273,19 +294,19 @@ -- prettyprint_spaceEmptyParens settings spaceAfterParenthesis :: LintSettings -> AParser Issue spaceAfterParenthesis settings-    | not (lint_spaceBetweenParens settings) = parserZero-    | otherwise =-        case (prettyprint_spaceBetweenParens settings, prettyprint_spaceEmptyParens settings) of-          (True, True) ->-            SpaceAfterParenthesis AddSpace <$ try (pMTok LRound >> notWhitespace)-          (False, False) ->-            SpaceAfterParenthesis RemoveSpace <$ try (pMTok LRound >> pTSatisfy isSpaces)-          (True, False) ->-            SpaceAfterParenthesis AddSpace <$ try (pMTok LRound >> notWhitespaceAndNotClose) <|>-            SpaceAfterParenthesis RemoveSpace <$ try (pMTok LRound >> pTSatisfy isSpaces >> pMTok RRound)-          (False, True) ->-            SpaceAfterParenthesis RemoveSpace <$ try (pMTok LRound >> pTSatisfy isSpaces >> pNotTToken RRound) <|>-            SpaceAfterParenthesis AddSpace <$ try (pMTok LRound >> pMTok RRound)+  | not (lint_spaceBetweenParens settings) = parserZero+  | otherwise =+      case (prettyprint_spaceBetweenParens settings, prettyprint_spaceEmptyParens settings) of+        (True, True) ->+          SpaceAfterParenthesis AddSpace <$ try (pMTok LRound >> notWhitespace)+        (False, False) ->+          SpaceAfterParenthesis RemoveSpace <$ try (pMTok LRound >> pTSatisfy isSpaces)+        (True, False) ->+          SpaceAfterParenthesis AddSpace <$ try (pMTok LRound >> notWhitespaceAndNotClose)+            <|> SpaceAfterParenthesis RemoveSpace <$ try (pMTok LRound >> pTSatisfy isSpaces >> pMTok RRound)+        (False, True) ->+          SpaceAfterParenthesis RemoveSpace <$ try (pMTok LRound >> pTSatisfy isSpaces >> pNotTToken RRound)+            <|> SpaceAfterParenthesis AddSpace <$ try (pMTok LRound >> pMTok RRound)   where     notWhitespaceAndNotClose :: AParser MToken     notWhitespaceAndNotClose = pTSatisfy $ \case@@ -296,17 +317,17 @@ -- | Warn about adding or removing spaces before a closing parenthesis spaceBeforeParenthesis :: LintSettings -> AParser Issue spaceBeforeParenthesis settings-    | not (lint_spaceBetweenParens settings) = parserZero-    | otherwise =-        case (prettyprint_spaceBetweenParens settings, prettyprint_spaceEmptyParens settings) of-          (True, True) ->-            SpaceBeforeParenthesis AddSpace <$ try (notWhitespace >> pMTok RRound)-          (False, False) ->-            SpaceBeforeParenthesis RemoveSpace <$ try (pTSatisfy isSpaces >> pMTok RRound)-          (True, False) ->-            SpaceBeforeParenthesis AddSpace <$ try (notWhitespaceAndNotOpen >> pMTok RRound)-          (False, True) ->-            SpaceBeforeParenthesis RemoveSpace <$ try (pNotTToken LRound >> pTSatisfy isSpaces >> pMTok RRound)+  | not (lint_spaceBetweenParens settings) = parserZero+  | otherwise =+      case (prettyprint_spaceBetweenParens settings, prettyprint_spaceEmptyParens settings) of+        (True, True) ->+          SpaceBeforeParenthesis AddSpace <$ try (notWhitespace >> pMTok RRound)+        (False, False) ->+          SpaceBeforeParenthesis RemoveSpace <$ try (pTSatisfy isSpaces >> pMTok RRound)+        (True, False) ->+          SpaceBeforeParenthesis AddSpace <$ try (notWhitespaceAndNotOpen >> pMTok RRound)+        (False, True) ->+          SpaceBeforeParenthesis RemoveSpace <$ try (pNotTToken LRound >> pTSatisfy isSpaces >> pMTok RRound)   where     notWhitespaceAndNotOpen :: AParser MToken     notWhitespaceAndNotOpen = pTSatisfy $ \case@@ -319,19 +340,19 @@ -- prettyprint_spaceEmptyBraces settings spaceAfterBraces :: LintSettings -> AParser Issue spaceAfterBraces settings-    | not (lint_spaceBetweenBraces settings) = parserZero-    | otherwise =-        case (prettyprint_spaceBetweenBraces settings, prettyprint_spaceEmptyBraces settings) of-          (True, True) ->-            SpaceAfterBrace AddSpace <$ try (pMTok LCurly >> notWhitespace)-          (False, False) ->-            SpaceAfterBrace RemoveSpace <$ try (pMTok LCurly >> pTSatisfy isSpaces)-          (True, False) ->-            SpaceAfterBrace AddSpace <$ try (pMTok LCurly >> notWhitespaceAndNotClose) <|>-            SpaceAfterBrace RemoveSpace <$ try (pMTok LCurly >> pTSatisfy isSpaces >> pMTok RCurly)-          (False, True) ->-            SpaceAfterBrace RemoveSpace <$ try (pMTok LCurly >> pTSatisfy isSpaces >> pNotTToken RCurly) <|>-            SpaceAfterBrace AddSpace <$ try (pMTok LCurly >> pMTok RCurly)+  | not (lint_spaceBetweenBraces settings) = parserZero+  | otherwise =+      case (prettyprint_spaceBetweenBraces settings, prettyprint_spaceEmptyBraces settings) of+        (True, True) ->+          SpaceAfterBrace AddSpace <$ try (pMTok LCurly >> notWhitespace)+        (False, False) ->+          SpaceAfterBrace RemoveSpace <$ try (pMTok LCurly >> pTSatisfy isSpaces)+        (True, False) ->+          SpaceAfterBrace AddSpace <$ try (pMTok LCurly >> notWhitespaceAndNotClose)+            <|> SpaceAfterBrace RemoveSpace <$ try (pMTok LCurly >> pTSatisfy isSpaces >> pMTok RCurly)+        (False, True) ->+          SpaceAfterBrace RemoveSpace <$ try (pMTok LCurly >> pTSatisfy isSpaces >> pNotTToken RCurly)+            <|> SpaceAfterBrace AddSpace <$ try (pMTok LCurly >> pMTok RCurly)   where     notWhitespaceAndNotClose :: AParser MToken     notWhitespaceAndNotClose = pTSatisfy $ \case@@ -342,17 +363,17 @@ -- | Warn about adding or removing spaces before a closing brace (`}`) spaceBeforeBraces :: LintSettings -> AParser Issue spaceBeforeBraces settings-    | not (lint_spaceBetweenBraces settings) = parserZero-    | otherwise =-        case (prettyprint_spaceBetweenBraces  settings, prettyprint_spaceEmptyBraces settings) of-          (True, True) ->-            SpaceBeforeBrace AddSpace <$ try (notWhitespace >> pMTok RCurly)-          (False, False) ->-            SpaceBeforeBrace RemoveSpace <$ try (pTSatisfy isSpaces >> pMTok RCurly)-          (True, False) ->-            SpaceBeforeBrace AddSpace <$ try (notWhitespaceAndNotOpen >> pMTok RCurly)-          (False, True) ->-            SpaceBeforeBrace RemoveSpace <$ try (pNotTToken LCurly >> pTSatisfy isSpaces >> pMTok RCurly)+  | not (lint_spaceBetweenBraces settings) = parserZero+  | otherwise =+      case (prettyprint_spaceBetweenBraces settings, prettyprint_spaceEmptyBraces settings) of+        (True, True) ->+          SpaceBeforeBrace AddSpace <$ try (notWhitespace >> pMTok RCurly)+        (False, False) ->+          SpaceBeforeBrace RemoveSpace <$ try (pTSatisfy isSpaces >> pMTok RCurly)+        (True, False) ->+          SpaceBeforeBrace AddSpace <$ try (notWhitespaceAndNotOpen >> pMTok RCurly)+        (False, True) ->+          SpaceBeforeBrace RemoveSpace <$ try (pNotTToken LCurly >> pTSatisfy isSpaces >> pMTok RCurly)   where     notWhitespaceAndNotOpen :: AParser MToken     notWhitespaceAndNotOpen = pTSatisfy $ \case@@ -364,78 +385,78 @@ -- for and wants the user to do depends on the prettyprint_spaceBetweenBracket spaceAfterBrackets :: LintSettings -> AParser Issue spaceAfterBrackets settings-    | not (lint_spaceBetweenBrackets settings) = parserZero-    | prettyprint_spaceBetweenBrackets settings =+  | not (lint_spaceBetweenBrackets settings) = parserZero+  | prettyprint_spaceBetweenBrackets settings =       SpaceAfterBracket AddSpace <$ try (pMTok LSquare >> notWhitespace)-    | otherwise =+  | otherwise =       SpaceAfterBracket RemoveSpace <$ try (pMTok LSquare >> pTSatisfy isSpaces)  -- | Warn about adding or removing spaces before a closing bracket (`]`) spaceBeforeBrackets :: LintSettings -> AParser Issue spaceBeforeBrackets settings-    | not (lint_spaceBetweenBrackets settings) = parserZero-    | prettyprint_spaceBetweenBrackets settings =+  | not (lint_spaceBetweenBrackets settings) = parserZero+  | prettyprint_spaceBetweenBrackets settings =       SpaceBeforeBracket AddSpace <$ try (notWhitespace >> pMTok RSquare)-    | otherwise =+  | otherwise =       SpaceBeforeBracket RemoveSpace <$ try (pTSatisfy isSpaces >> pMTok RSquare)  -- | Warn about adding or removing spaces after a comma spaceAfterComma :: LintSettings -> AParser Issue spaceAfterComma settings-    | not (lint_spaceAfterComma settings) = parserZero-    | prettyprint_spaceAfterComma settings =+  | not (lint_spaceAfterComma settings) = parserZero+  | prettyprint_spaceAfterComma settings =       SpaceAfterComma AddSpace <$ try (pMTok Comma >> notWhitespace)-    | otherwise =+  | otherwise =       SpaceAfterComma RemoveSpace <$ try (pMTok Comma >> pTSatisfy isSpaces)  -- | Warn about adding or removing spaces before a comma spaceBeforeComma :: LintSettings -> AParser Issue spaceBeforeComma settings-    | not (lint_spaceBeforeComma settings) = parserZero-    | prettyprint_spaceBeforeComma settings =+  | not (lint_spaceBeforeComma settings) = parserZero+  | prettyprint_spaceBeforeComma settings =       SpaceBeforeComma AddSpace <$ try (notWhitespace >> pMTok Comma)-    | otherwise =+  | otherwise =       SpaceBeforeComma RemoveSpace <$ try (pTSatisfy isSpaces >> pMTok Comma)  -- | Parser for all profanity profanitySequence :: LintSettings -> AParser Issue-profanitySequence opts = if not (lint_profanity opts) then parserZero else Profanity <$ (-    ident "anus"                    <|>-    ident "bitch"                   <|>-    ident "cock"                    <|>-    ident "cocks"                   <|>-    ident "cunt"                    <|>-    ident "dick"                    <|>-    ident "dicks"                   <|>-    ident "fuck"                    <|>-    ident "fucking"                 <|>-    ident "goddamnit"               <|>-    ident "knob"                    <|>-    ident "knobs"                   <|>-    ident "motherfucker"            <|>-    ident "nipple"                  <|>-    ident "shit"-    )+profanitySequence opts =+  if not (lint_profanity opts)+    then parserZero+    else+      Profanity+        <$ ( ident "anus"+              <|> ident "bitch"+              <|> ident "cock"+              <|> ident "cocks"+              <|> ident "cunt"+              <|> ident "dick"+              <|> ident "dicks"+              <|> ident "fuck"+              <|> ident "fucking"+              <|> ident "goddamnit"+              <|> ident "knob"+              <|> ident "knobs"+              <|> ident "motherfucker"+              <|> ident "nipple"+              <|> ident "shit"+           )  -- | Parses for any bad sequence badSequence :: LintSettings -> AParser Issue badSequence opts =-    deprecatedSequence opts <|>-    profanitySequence opts <|>-    beginnerMistakeSequence opts <|>-    whiteSpaceStyleSequence opts <|>--    spaceAfterParenthesis opts <|>-    spaceBeforeParenthesis opts <|>--    spaceAfterBraces opts <|>-    spaceBeforeBraces opts <|>--    spaceAfterBrackets opts <|>-    spaceBeforeBrackets opts <|>--    spaceAfterComma opts <|>-    spaceBeforeComma opts+  deprecatedSequence opts+    <|> profanitySequence opts+    <|> beginnerMistakeSequence opts+    <|> whiteSpaceStyleSequence opts+    <|> spaceAfterParenthesis opts+    <|> spaceBeforeParenthesis opts+    <|> spaceAfterBraces opts+    <|> spaceBeforeBraces opts+    <|> spaceAfterBrackets opts+    <|> spaceBeforeBrackets opts+    <|> spaceAfterComma opts+    <|> spaceBeforeComma opts  -- | Creates a warning for a certain sequence at any position badSequenceWarning :: Region -> Issue -> [FilePath -> LintMessage] -> [FilePath -> LintMessage]@@ -444,21 +465,23 @@ -- | Searches for all the bad sequences badSequenceParser :: LintSettings -> AParser [String -> LintMessage] badSequenceParser opts =-    -- A bad sequence-    annotated badSequenceWarning (badSequence opts) <*> badSequenceParser opts <|>+  -- A bad sequence+  annotated badSequenceWarning (badSequence opts) <*> badSequenceParser opts+    <|>     -- Continue searching-    anyToken *> badSequenceParser opts <|>+    anyToken *> badSequenceParser opts+    <|>     -- end of input     return []  -- | Returns all the warnings for a lexicon sequenceWarnings :: LintSettings -> [MToken] -> [String -> LintMessage] sequenceWarnings opts mts = case execAParser "source.lua" (badSequenceParser opts) mts of-    Left _ -> error "[Error] line 1, column 1: Sequence finding error! Report an issue!"-    Right warnings -> warnings+  Left _ -> error "[Error] line 1, column 1: Sequence finding error! Report an issue!"+  Right warnings -> warnings  -- | Helper function: check from string checkFromString :: AParser a -> String -> Either ParseError a checkFromString p inp = do-    lexed <- PSL.execParseTokens inp-    execAParser "source.lua" p lexed+  lexed <- PSL.execParseTokens inp+  execAParser "source.lua" p lexed
src/GLuaFixer/Interface.hs view
@@ -54,9 +54,8 @@       Left [LintMessage LintError (PSL.sp2Rg $ errorPos err) (IssueParseError err) filepath | lint_syntaxErrors lintSettings]     Right ast -> Right ast -{- | Parse a lexicon into an Abstract Syntax Tree using the slower, but error-correcting-uu-parsinglib--}+-- | Parse a lexicon into an Abstract Syntax Tree using the slower, but error-correcting+-- uu-parsinglib parseUU :: [MToken] -> (AST, [Error Region]) parseUU = UUP.parseGLua 
src/GLuaFixer/LintMessage.hs view
@@ -1,5 +1,6 @@-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+ module GLuaFixer.LintMessage where  import Control.Monad@@ -10,11 +11,12 @@ import Text.Parsec (ParseError) import Text.ParserCombinators.UU.BasicInstances hiding (msgs) -import GLua.AG.Token import GLua.AG.PrettyPrint+import GLua.AG.Token  -- | Output formats for logging data LogFormat = StandardLogFormat | GithubLogFormat+ data LogFormatChoice = AutoLogFormatChoice | LogFormatChoice !LogFormat  instance Show LogFormat where@@ -38,7 +40,7 @@     "standard" -> pure $ LogFormatChoice StandardLogFormat     "github" -> pure $ LogFormatChoice GithubLogFormat     "auto" -> pure AutoLogFormatChoice-    _ -> fail ( "Please use either \"auto\" \"standard\" or \"github\" but was " ++ show logFormat )+    _ -> fail ("Please use either \"auto\" \"standard\" or \"github\" but was " ++ show logFormat)   parseJSON _ = mzero  data Severity = LintWarning | LintError@@ -56,12 +58,15 @@ -- Many of these Strings can later be rewritten to their own types if necessary. data Issue   = IssueParseError ParseError+  | -- From BadSequenceFinder -    -- From BadSequenceFinder-  | Deprecated !String -- ^ Reason+    -- | Reason+    Deprecated !String   | Profanity-  | BeginnerMistake !String -- ^ message-  | WhitespaceStyle !String -- ^ message+  | -- | message+    BeginnerMistake !String+  | -- | message+    WhitespaceStyle !String   | SpaceAfterParenthesis !RemoveOrAddSpace   | SpaceBeforeParenthesis !RemoveOrAddSpace   | SpaceAfterBracket !RemoveOrAddSpace@@ -70,25 +75,27 @@   | SpaceBeforeBrace !RemoveOrAddSpace   | SpaceAfterComma !RemoveOrAddSpace   | SpaceBeforeComma !RemoveOrAddSpace--  -- Issues found in the lexicon (see LexLint.ag)-  | TrailingWhitespace+  | -- Issues found in the lexicon (see LexLint.ag)+    TrailingWhitespace   | InconsistentTabsSpaces   | SyntaxInconsistency-    !String -- ^ First encountered-    !String -- ^ Second encountered--  -- Line length limit (see LineLimitParser.hs)-  | LineTooLong--  -- Issues found in the AST (see ASTLint.ag)-  | VariableShadows-    !String -- ^ Name of the variable being shadowed-    !Region -- ^ Definition location of variable being shadowed+      !String+      -- ^ First encountered+      !String+      -- ^ Second encountered+  | -- Line length limit (see LineLimitParser.hs)+    LineTooLong+  | -- Issues found in the AST (see ASTLint.ag)+    VariableShadows+      !String+      -- ^ Name of the variable being shadowed+      !Region+      -- ^ Definition location of variable being shadowed   | GotoAsIdentifier   | InconsistentVariableNaming   | ScopePyramids-  | UnusedVariable !String -- ^ Variable name+  | -- | Variable name+    UnusedVariable !String   | AvoidGoto   | EmptyDoBlock   | EmptyWhileLoop@@ -102,27 +109,27 @@   | SelfEntity   | SelfWeapon   | UnnecessaryParentheses-  | SillyNegation !String -- ^ Alternative to using the negation-  | DuplicateKeyInTable !Token -- ^ The key that is duplicated-  deriving Eq+  | -- | Alternative to using the negation+    SillyNegation !String+  | -- | The key that is duplicated+    DuplicateKeyInTable !Token+  deriving (Eq)  -- | Represents lint messages-data LintMessage-  = LintMessage-    { lintmsg_severity :: !Severity-    , lintmsg_region   :: !Region-    , lintmsg_message  :: !Issue-    , lintmsg_file     :: !FilePath-    }+data LintMessage = LintMessage+  { lintmsg_severity :: !Severity+  , lintmsg_region :: !Region+  , lintmsg_message :: !Issue+  , lintmsg_file :: !FilePath+  }   deriving (Eq)  instance Show LintMessage where-    show = formatLintMessageDefault+  show = formatLintMessageDefault  issueDescription :: Issue -> String issueDescription = \case   IssueParseError parseError -> renderPSError parseError-   Deprecated reason -> "Deprecated: " ++ reason   Profanity -> "Watch your profanity"   BeginnerMistake msg -> msg@@ -143,14 +150,11 @@   SpaceAfterComma AddSpace -> "Style: Please add a space after the comma"   SpaceBeforeComma RemoveSpace -> "Style: Please remove the space before the comma"   SpaceBeforeComma AddSpace -> "Style: Please add a space before the comma"-   TrailingWhitespace -> "Trailing whitespace"   InconsistentTabsSpaces -> "Inconsistent use of tabs and spaces for indentation"   SyntaxInconsistency firstEncountered secondEncountered ->     "Inconsistent use of '" ++ firstEncountered ++ "' and '" ++ secondEncountered ++ "'"-   LineTooLong -> "Style: Line too long"-   VariableShadows lbl (Region start _) ->     "Variable '" ++ lbl ++ "' shadows existing binding, defined at " ++ renderPos start   GotoAsIdentifier ->@@ -225,7 +229,6 @@   SillyNegation _ -> "Unnecessary negation"   DuplicateKeyInTable _ -> "Duplicate key" - logFormatChoiceToLogFormat :: LogFormatChoice -> IO LogFormat logFormatChoiceToLogFormat = \case   LogFormatChoice format -> pure format@@ -233,9 +236,8 @@     actionsExists <- isJust <$> lookupEnv "GITHUB_ACTIONS"     workflowExists <- isJust <$> lookupEnv "GITHUB_WORKFLOW"     if actionsExists && workflowExists-    then pure GithubLogFormat-    else pure StandardLogFormat-+      then pure GithubLogFormat+      else pure StandardLogFormat  formatLintMessage :: LogFormat -> LintMessage -> String formatLintMessage StandardLogFormat lintMsg = formatLintMessageDefault lintMsg@@ -248,11 +250,14 @@       LintWarning -> "Warning"       LintError -> "Error"   in-    showString file .-    showString ": [" . showString level . showString "] " .-    showString (renderRegion region) . showString ": " .-    showString (issueDescription msg) $-    ""+    showString file+      . showString ": ["+      . showString level+      . showString "] "+      . showString (renderRegion region)+      . showString ": "+      . showString (issueDescription msg)+      $ ""  formatLintMessageGithub :: LintMessage -> String formatLintMessageGithub (LintMessage severity (Region (LineColPos line col _) (LineColPos endLine endCol _)) msg file) =@@ -261,15 +266,23 @@       LintWarning -> "warning"       LintError -> "error"   in-    showString "::" . showString level .-    showString " file=" . showString file .-    showString ",line=" . shows (succ line) .-    showString ",col=" . shows (succ col) .-    showString ",endLine=" . shows (succ endLine) .-    showString ",endColumn=" . shows (succ endCol) .-    showString ",title=" . shows (issueTitle msg) .-    showString "::" . showString (issueDescription msg) $-    ""+    showString "::"+      . showString level+      . showString " file="+      . showString file+      . showString ",line="+      . shows (succ line)+      . showString ",col="+      . shows (succ col)+      . showString ",endLine="+      . shows (succ endLine)+      . showString ",endColumn="+      . shows (succ endCol)+      . showString ",title="+      . shows (issueTitle msg)+      . showString "::"+      . showString (issueDescription msg)+      $ ""  -- | Sort lint messages on file and then region sortLintMessages :: [LintMessage] -> [LintMessage]
src/GLuaFixer/LintSettings.hs view
@@ -1,27 +1,30 @@ {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-}+ module GLuaFixer.LintSettings where  import Control.Applicative ((<|>))-import Data.Aeson-    ( FromJSON(parseJSON),-      ToJSON(toJSON),-      (.!=),-      (.:?),-      object,-      Value(Object),-      KeyValue((.=)) )-import Control.Monad ( MonadPlus(mzero) )+import Control.Monad (MonadPlus (mzero))+import Data.Aeson (+  FromJSON (parseJSON),+  KeyValue ((.=)),+  ToJSON (toJSON),+  Value (Object),+  object,+  (.!=),+  (.:?),+ ) import Data.String (IsString)-import GLua.AG.PrettyPrint ( PrettyPrintConfig(..) )-import GLuaFixer.LintMessage-    ( LogFormatChoice(AutoLogFormatChoice) )+import GLua.AG.PrettyPrint (PrettyPrintConfig (..))+import GLuaFixer.LintMessage (+  LogFormatChoice (AutoLogFormatChoice),+ )  -- | Indentation used for pretty printing code-newtype Indentation = Indentation { unIndentation :: String }-  deriving IsString-  deriving newtype Show+newtype Indentation = Indentation {unIndentation :: String}+  deriving (IsString)+  deriving newtype (Show)  -- | Whether a file is read from stdin or from files data StdInOrFiles@@ -34,58 +37,56 @@ parseStdInOrFiles "stdin" = UseStdIn parseStdInOrFiles other = UseFiles [other] -data LintSettings =-    LintSettings-    { lint_maxScopeDepth :: !Int-    , lint_syntaxErrors :: !Bool-    , lint_syntaxInconsistencies :: !Bool-    , lint_deprecated :: !Bool-    , lint_trailingWhitespace :: !Bool-    , lint_whitespaceStyle :: !Bool-    , lint_beginnerMistakes :: !Bool-    , lint_emptyBlocks :: !Bool-    , lint_shadowing :: !Bool-    , lint_gotos :: !Bool-    , lint_goto_identifier :: !Bool-    , lint_doubleNegations :: !Bool-    , lint_redundantIfStatements :: !Bool-    , lint_redundantParentheses :: !Bool-    , lint_duplicateTableKeys :: !Bool-    , lint_profanity :: !Bool-    , lint_unusedVars :: !Bool-    , lint_unusedParameters :: !Bool-    , lint_unusedLoopVars :: !Bool-    , lint_inconsistentVariableStyle :: !Bool-    , lint_spaceBetweenParens :: !Bool-    , lint_spaceBetweenBrackets :: !Bool-    , lint_spaceBetweenBraces :: !Bool-    , lint_spaceBeforeComma :: !Bool-    , lint_spaceAfterComma :: !Bool-    , lint_maxLineLength :: !Int-    , lint_ignoreFiles :: ![String]--    , prettyprint_spaceBetweenParens :: !Bool-    , prettyprint_spaceBetweenBrackets :: !Bool-    , prettyprint_spaceBetweenBraces :: !Bool-    , prettyprint_spaceEmptyParens :: !Bool-    , prettyprint_spaceEmptyBraces :: !Bool-    , prettyprint_spaceAfterLabel :: !Bool-    , prettyprint_spaceBeforeComma :: !Bool-    , prettyprint_spaceAfterComma :: !Bool-    , prettyprint_semicolons :: !Bool-    , prettyprint_cStyle :: !Bool-    , prettyprint_removeRedundantParens :: !Bool-    , prettyprint_minimizeParens :: !Bool-    , prettyprint_assumeOperatorAssociativity :: !Bool-    , prettyprint_rejectInvalidCode :: !Bool-    , prettyprint_indentation :: !String--    , log_format :: !LogFormatChoice-    } deriving (Show)+data LintSettings = LintSettings+  { lint_maxScopeDepth :: !Int+  , lint_syntaxErrors :: !Bool+  , lint_syntaxInconsistencies :: !Bool+  , lint_deprecated :: !Bool+  , lint_trailingWhitespace :: !Bool+  , lint_whitespaceStyle :: !Bool+  , lint_beginnerMistakes :: !Bool+  , lint_emptyBlocks :: !Bool+  , lint_shadowing :: !Bool+  , lint_gotos :: !Bool+  , lint_goto_identifier :: !Bool+  , lint_doubleNegations :: !Bool+  , lint_redundantIfStatements :: !Bool+  , lint_redundantParentheses :: !Bool+  , lint_duplicateTableKeys :: !Bool+  , lint_profanity :: !Bool+  , lint_unusedVars :: !Bool+  , lint_unusedParameters :: !Bool+  , lint_unusedLoopVars :: !Bool+  , lint_inconsistentVariableStyle :: !Bool+  , lint_spaceBetweenParens :: !Bool+  , lint_spaceBetweenBrackets :: !Bool+  , lint_spaceBetweenBraces :: !Bool+  , lint_spaceBeforeComma :: !Bool+  , lint_spaceAfterComma :: !Bool+  , lint_maxLineLength :: !Int+  , lint_ignoreFiles :: ![String]+  , prettyprint_spaceBetweenParens :: !Bool+  , prettyprint_spaceBetweenBrackets :: !Bool+  , prettyprint_spaceBetweenBraces :: !Bool+  , prettyprint_spaceEmptyParens :: !Bool+  , prettyprint_spaceEmptyBraces :: !Bool+  , prettyprint_spaceAfterLabel :: !Bool+  , prettyprint_spaceBeforeComma :: !Bool+  , prettyprint_spaceAfterComma :: !Bool+  , prettyprint_semicolons :: !Bool+  , prettyprint_cStyle :: !Bool+  , prettyprint_removeRedundantParens :: !Bool+  , prettyprint_minimizeParens :: !Bool+  , prettyprint_assumeOperatorAssociativity :: !Bool+  , prettyprint_rejectInvalidCode :: !Bool+  , prettyprint_indentation :: !String+  , log_format :: !LogFormatChoice+  }+  deriving (Show)  defaultLintSettings :: LintSettings defaultLintSettings =-    LintSettings+  LintSettings     { lint_maxScopeDepth = 7     , lint_syntaxErrors = True     , lint_syntaxInconsistencies = True@@ -113,7 +114,6 @@     , lint_spaceAfterComma = False     , lint_maxLineLength = 0     , lint_ignoreFiles = []-     , prettyprint_spaceBetweenParens = False     , prettyprint_spaceBetweenBrackets = False     , prettyprint_spaceBetweenBraces = False@@ -129,79 +129,75 @@     , prettyprint_assumeOperatorAssociativity = True     , prettyprint_rejectInvalidCode = False     , prettyprint_indentation = "    "-     , log_format = AutoLogFormatChoice-  }+    }  instance FromJSON LintSettings where-    parseJSON (Object v) =-        LintSettings <$>-          v .:? "lint_maxScopeDepth" .!= lint_maxScopeDepth defaultLintSettings <*>-          v .:? "lint_syntaxErrors" .!= lint_syntaxErrors defaultLintSettings <*>-          v .:? "lint_syntaxInconsistencies" .!= lint_syntaxInconsistencies defaultLintSettings <*>-          v .:? "lint_deprecated" .!= lint_deprecated defaultLintSettings <*>-          v .:? "lint_trailingWhitespace" .!= lint_trailingWhitespace defaultLintSettings <*>-          v .:? "lint_whitespaceStyle" .!= lint_whitespaceStyle defaultLintSettings <*>-          v .:? "lint_beginnerMistakes" .!= lint_beginnerMistakes defaultLintSettings <*>-          v .:? "lint_emptyBlocks" .!= lint_emptyBlocks defaultLintSettings <*>-          v .:? "lint_shadowing" .!= lint_shadowing defaultLintSettings <*>-          v .:? "lint_gotos" .!= lint_gotos defaultLintSettings <*>-          v .:? "lint_goto_identifier" .!= lint_goto_identifier defaultLintSettings <*>-          v .:? "lint_doubleNegations" .!= lint_doubleNegations defaultLintSettings <*>-          v .:? "lint_redundantIfStatements" .!= lint_redundantIfStatements defaultLintSettings <*>-          v .:? "lint_redundantParentheses" .!= lint_redundantParentheses defaultLintSettings <*>-          v .:? "lint_duplicateTableKeys" .!= lint_duplicateTableKeys defaultLintSettings <*>-          v .:? "lint_profanity" .!= lint_profanity defaultLintSettings <*>-          v .:? "lint_unusedVars" .!= lint_unusedVars defaultLintSettings <*>-          v .:? "lint_unusedParameters" .!= lint_unusedParameters defaultLintSettings <*>-          v .:? "lint_unusedLoopVars" .!= lint_unusedLoopVars defaultLintSettings <*>-          v .:? "lint_inconsistentVariableStyle" .!= lint_inconsistentVariableStyle defaultLintSettings <*>--          -- Backwards compatible change: accept both the newer spaceBetween and the older-          -- spaceAfter-          (v .:? "lint_spaceBetweenParens" .!= lint_spaceBetweenParens defaultLintSettings <|>-          v .:? "lint_spaceAfterParens" .!= lint_spaceBetweenParens defaultLintSettings) <*>--          (v .:? "lint_spaceBetweenBrackets" .!= lint_spaceBetweenBrackets defaultLintSettings <|>-          v .:? "lint_spaceAfterBrackets" .!= lint_spaceBetweenBrackets defaultLintSettings) <*>--          (v .:? "lint_spaceBetweenBraces" .!= lint_spaceBetweenBraces defaultLintSettings <|>-          v .:? "lint_spaceAfterBraces" .!= lint_spaceBetweenBraces defaultLintSettings) <*>--          v .:? "lint_spaceBeforeComma" .!= lint_spaceBeforeComma defaultLintSettings <*>-          v .:? "lint_spaceAfterComma" .!= lint_spaceAfterComma defaultLintSettings <*>-          v .:? "lint_maxLineLength" .!= lint_maxLineLength defaultLintSettings <*>--          v .:? "lint_ignoreFiles" .!= lint_ignoreFiles defaultLintSettings <*>--          (v .:? "prettyprint_spaceBetweenParens" .!= prettyprint_spaceBetweenParens defaultLintSettings <|>-          v .:? "prettyprint_spaceAfterParens" .!= prettyprint_spaceBetweenParens defaultLintSettings) <*>--          (v .:? "prettyprint_spaceBetweenBrackets" .!= prettyprint_spaceBetweenBrackets defaultLintSettings <|>-          v .:? "prettyprint_spaceAfterBrackets" .!= prettyprint_spaceBetweenBrackets defaultLintSettings) <*>--          (v .:? "prettyprint_spaceBetweenBraces" .!= prettyprint_spaceBetweenBraces defaultLintSettings <|>-          v .:? "prettyprint_spaceAfterBraces" .!= prettyprint_spaceBetweenBraces defaultLintSettings) <*>--          v .:? "prettyprint_spaceEmptyParens" .!= prettyprint_spaceEmptyParens defaultLintSettings <*>-          v .:? "prettyprint_spaceEmptyBraces" .!= prettyprint_spaceEmptyBraces defaultLintSettings <*>-          v .:? "prettyprint_spaceAfterLabel" .!= prettyprint_spaceAfterLabel defaultLintSettings <*>-          v .:? "prettyprint_spaceBeforeComma" .!= prettyprint_spaceBeforeComma defaultLintSettings <*>-          v .:? "prettyprint_spaceAfterComma" .!= prettyprint_spaceAfterComma defaultLintSettings <*>-          v .:? "prettyprint_semicolons" .!= prettyprint_semicolons defaultLintSettings <*>-          v .:? "prettyprint_cStyle" .!= prettyprint_cStyle defaultLintSettings <*>-          v .:? "prettyprint_removeRedundantParens" .!= prettyprint_removeRedundantParens defaultLintSettings <*>-          v .:? "prettyprint_minimizeParens" .!= prettyprint_minimizeParens defaultLintSettings <*>-          v .:? "prettyprint_assumeOperatorAssociativity" .!= prettyprint_assumeOperatorAssociativity defaultLintSettings <*>-          v .:? "prettyprint_rejectInvalidCode" .!= prettyprint_rejectInvalidCode defaultLintSettings <*>-          v .:? "prettyprint_indentation" .!= prettyprint_indentation defaultLintSettings <*>-          v .:? "log_format" .!= log_format defaultLintSettings--    parseJSON _          = mzero+  parseJSON (Object v) =+    LintSettings+      <$> v .:? "lint_maxScopeDepth" .!= lint_maxScopeDepth defaultLintSettings+      <*> v .:? "lint_syntaxErrors" .!= lint_syntaxErrors defaultLintSettings+      <*> v .:? "lint_syntaxInconsistencies" .!= lint_syntaxInconsistencies defaultLintSettings+      <*> v .:? "lint_deprecated" .!= lint_deprecated defaultLintSettings+      <*> v .:? "lint_trailingWhitespace" .!= lint_trailingWhitespace defaultLintSettings+      <*> v .:? "lint_whitespaceStyle" .!= lint_whitespaceStyle defaultLintSettings+      <*> v .:? "lint_beginnerMistakes" .!= lint_beginnerMistakes defaultLintSettings+      <*> v .:? "lint_emptyBlocks" .!= lint_emptyBlocks defaultLintSettings+      <*> v .:? "lint_shadowing" .!= lint_shadowing defaultLintSettings+      <*> v .:? "lint_gotos" .!= lint_gotos defaultLintSettings+      <*> v .:? "lint_goto_identifier" .!= lint_goto_identifier defaultLintSettings+      <*> v .:? "lint_doubleNegations" .!= lint_doubleNegations defaultLintSettings+      <*> v .:? "lint_redundantIfStatements" .!= lint_redundantIfStatements defaultLintSettings+      <*> v .:? "lint_redundantParentheses" .!= lint_redundantParentheses defaultLintSettings+      <*> v .:? "lint_duplicateTableKeys" .!= lint_duplicateTableKeys defaultLintSettings+      <*> v .:? "lint_profanity" .!= lint_profanity defaultLintSettings+      <*> v .:? "lint_unusedVars" .!= lint_unusedVars defaultLintSettings+      <*> v .:? "lint_unusedParameters" .!= lint_unusedParameters defaultLintSettings+      <*> v .:? "lint_unusedLoopVars" .!= lint_unusedLoopVars defaultLintSettings+      <*> v .:? "lint_inconsistentVariableStyle" .!= lint_inconsistentVariableStyle defaultLintSettings+      <*>+      -- Backwards compatible change: accept both the newer spaceBetween and the older+      -- spaceAfter+      ( v .:? "lint_spaceBetweenParens" .!= lint_spaceBetweenParens defaultLintSettings+          <|> v .:? "lint_spaceAfterParens" .!= lint_spaceBetweenParens defaultLintSettings+      )+      <*> ( v .:? "lint_spaceBetweenBrackets" .!= lint_spaceBetweenBrackets defaultLintSettings+              <|> v .:? "lint_spaceAfterBrackets" .!= lint_spaceBetweenBrackets defaultLintSettings+          )+      <*> ( v .:? "lint_spaceBetweenBraces" .!= lint_spaceBetweenBraces defaultLintSettings+              <|> v .:? "lint_spaceAfterBraces" .!= lint_spaceBetweenBraces defaultLintSettings+          )+      <*> v .:? "lint_spaceBeforeComma" .!= lint_spaceBeforeComma defaultLintSettings+      <*> v .:? "lint_spaceAfterComma" .!= lint_spaceAfterComma defaultLintSettings+      <*> v .:? "lint_maxLineLength" .!= lint_maxLineLength defaultLintSettings+      <*> v .:? "lint_ignoreFiles" .!= lint_ignoreFiles defaultLintSettings+      <*> ( v .:? "prettyprint_spaceBetweenParens" .!= prettyprint_spaceBetweenParens defaultLintSettings+              <|> v .:? "prettyprint_spaceAfterParens" .!= prettyprint_spaceBetweenParens defaultLintSettings+          )+      <*> ( v .:? "prettyprint_spaceBetweenBrackets" .!= prettyprint_spaceBetweenBrackets defaultLintSettings+              <|> v .:? "prettyprint_spaceAfterBrackets" .!= prettyprint_spaceBetweenBrackets defaultLintSettings+          )+      <*> ( v .:? "prettyprint_spaceBetweenBraces" .!= prettyprint_spaceBetweenBraces defaultLintSettings+              <|> v .:? "prettyprint_spaceAfterBraces" .!= prettyprint_spaceBetweenBraces defaultLintSettings+          )+      <*> v .:? "prettyprint_spaceEmptyParens" .!= prettyprint_spaceEmptyParens defaultLintSettings+      <*> v .:? "prettyprint_spaceEmptyBraces" .!= prettyprint_spaceEmptyBraces defaultLintSettings+      <*> v .:? "prettyprint_spaceAfterLabel" .!= prettyprint_spaceAfterLabel defaultLintSettings+      <*> v .:? "prettyprint_spaceBeforeComma" .!= prettyprint_spaceBeforeComma defaultLintSettings+      <*> v .:? "prettyprint_spaceAfterComma" .!= prettyprint_spaceAfterComma defaultLintSettings+      <*> v .:? "prettyprint_semicolons" .!= prettyprint_semicolons defaultLintSettings+      <*> v .:? "prettyprint_cStyle" .!= prettyprint_cStyle defaultLintSettings+      <*> v .:? "prettyprint_removeRedundantParens" .!= prettyprint_removeRedundantParens defaultLintSettings+      <*> v .:? "prettyprint_minimizeParens" .!= prettyprint_minimizeParens defaultLintSettings+      <*> v .:? "prettyprint_assumeOperatorAssociativity" .!= prettyprint_assumeOperatorAssociativity defaultLintSettings+      <*> v .:? "prettyprint_rejectInvalidCode" .!= prettyprint_rejectInvalidCode defaultLintSettings+      <*> v .:? "prettyprint_indentation" .!= prettyprint_indentation defaultLintSettings+      <*> v .:? "log_format" .!= log_format defaultLintSettings+  parseJSON _ = mzero  lint2ppSetting :: LintSettings -> PrettyPrintConfig lint2ppSetting ls =-    PPConfig+  PPConfig     { spaceAfterParens = prettyprint_spaceBetweenParens ls     , spaceAfterBrackets = prettyprint_spaceBetweenBrackets ls     , spaceAfterBraces = prettyprint_spaceBetweenBraces ls@@ -219,46 +215,47 @@     }  instance ToJSON LintSettings where-    toJSON ls = object-        [ "lint_maxScopeDepth" .= lint_maxScopeDepth ls-        , "lint_syntaxErrors" .= lint_syntaxErrors ls-        , "lint_syntaxInconsistencies" .= lint_syntaxInconsistencies ls-        , "lint_deprecated" .= lint_deprecated ls-        , "lint_trailingWhitespace" .= lint_trailingWhitespace ls-        , "lint_whitespaceStyle" .= lint_whitespaceStyle ls-        , "lint_beginnerMistakes" .= lint_beginnerMistakes ls-        , "lint_emptyBlocks" .= lint_emptyBlocks ls-        , "lint_shadowing" .= lint_shadowing ls-        , "lint_gotos" .= lint_gotos ls-        , "lint_goto_identifier" .= lint_goto_identifier ls-        , "lint_doubleNegations" .= lint_doubleNegations ls-        , "lint_redundantIfStatements" .= lint_redundantIfStatements ls-        , "lint_redundantParentheses" .= lint_redundantParentheses ls-        , "lint_duplicateTableKeys" .= lint_duplicateTableKeys ls-        , "lint_profanity" .= lint_profanity ls-        , "lint_unusedVars" .= lint_unusedVars ls-        , "lint_unusedParameters" .= lint_unusedParameters ls-        , "lint_unusedLoopVars" .= lint_unusedLoopVars ls-        , "lint_inconsistentVariableStyle" .= lint_inconsistentVariableStyle ls-        , "lint_spaceBetweenParens" .= lint_spaceBetweenParens ls-        , "lint_spaceBetweenBrackets" .= lint_spaceBetweenBrackets ls-        , "lint_spaceBetweenBraces" .= lint_spaceBetweenBraces ls-        , "lint_maxLineLength" .= lint_maxLineLength ls-        , "lint_ignoreFiles" .= lint_ignoreFiles ls-        , "prettyprint_spaceBetweenParens" .= prettyprint_spaceBetweenParens ls-        , "prettyprint_spaceBetweenBrackets" .= prettyprint_spaceBetweenBrackets ls-        , "prettyprint_spaceBetweenBraces" .= prettyprint_spaceBetweenBraces ls-        , "prettyprint_spaceEmptyParens" .= prettyprint_spaceEmptyParens ls-        , "prettyprint_spaceEmptyBraces" .= prettyprint_spaceEmptyBraces ls-        , "prettyprint_spaceAfterLabel" .= prettyprint_spaceAfterLabel ls-        , "prettyprint_spaceBeforeComma" .= prettyprint_spaceBeforeComma ls-        , "prettyprint_spaceAfterComma" .= prettyprint_spaceAfterComma ls-        , "prettyprint_semicolons" .= prettyprint_semicolons ls-        , "prettyprint_cStyle" .= prettyprint_cStyle ls-        , "prettyprint_removeRedundantParens" .= prettyprint_removeRedundantParens ls-        , "prettyprint_minimizeParens" .= prettyprint_minimizeParens ls-        , "prettyprint_assumeOperatorAssociativity" .= prettyprint_assumeOperatorAssociativity ls-        , "prettyprint_rejectInvalidCode" .= prettyprint_rejectInvalidCode ls-        , "prettyprint_indentation" .= prettyprint_indentation ls-        , "log_format" .= log_format ls-        ]+  toJSON ls =+    object+      [ "lint_maxScopeDepth" .= lint_maxScopeDepth ls+      , "lint_syntaxErrors" .= lint_syntaxErrors ls+      , "lint_syntaxInconsistencies" .= lint_syntaxInconsistencies ls+      , "lint_deprecated" .= lint_deprecated ls+      , "lint_trailingWhitespace" .= lint_trailingWhitespace ls+      , "lint_whitespaceStyle" .= lint_whitespaceStyle ls+      , "lint_beginnerMistakes" .= lint_beginnerMistakes ls+      , "lint_emptyBlocks" .= lint_emptyBlocks ls+      , "lint_shadowing" .= lint_shadowing ls+      , "lint_gotos" .= lint_gotos ls+      , "lint_goto_identifier" .= lint_goto_identifier ls+      , "lint_doubleNegations" .= lint_doubleNegations ls+      , "lint_redundantIfStatements" .= lint_redundantIfStatements ls+      , "lint_redundantParentheses" .= lint_redundantParentheses ls+      , "lint_duplicateTableKeys" .= lint_duplicateTableKeys ls+      , "lint_profanity" .= lint_profanity ls+      , "lint_unusedVars" .= lint_unusedVars ls+      , "lint_unusedParameters" .= lint_unusedParameters ls+      , "lint_unusedLoopVars" .= lint_unusedLoopVars ls+      , "lint_inconsistentVariableStyle" .= lint_inconsistentVariableStyle ls+      , "lint_spaceBetweenParens" .= lint_spaceBetweenParens ls+      , "lint_spaceBetweenBrackets" .= lint_spaceBetweenBrackets ls+      , "lint_spaceBetweenBraces" .= lint_spaceBetweenBraces ls+      , "lint_maxLineLength" .= lint_maxLineLength ls+      , "lint_ignoreFiles" .= lint_ignoreFiles ls+      , "prettyprint_spaceBetweenParens" .= prettyprint_spaceBetweenParens ls+      , "prettyprint_spaceBetweenBrackets" .= prettyprint_spaceBetweenBrackets ls+      , "prettyprint_spaceBetweenBraces" .= prettyprint_spaceBetweenBraces ls+      , "prettyprint_spaceEmptyParens" .= prettyprint_spaceEmptyParens ls+      , "prettyprint_spaceEmptyBraces" .= prettyprint_spaceEmptyBraces ls+      , "prettyprint_spaceAfterLabel" .= prettyprint_spaceAfterLabel ls+      , "prettyprint_spaceBeforeComma" .= prettyprint_spaceBeforeComma ls+      , "prettyprint_spaceAfterComma" .= prettyprint_spaceAfterComma ls+      , "prettyprint_semicolons" .= prettyprint_semicolons ls+      , "prettyprint_cStyle" .= prettyprint_cStyle ls+      , "prettyprint_removeRedundantParens" .= prettyprint_removeRedundantParens ls+      , "prettyprint_minimizeParens" .= prettyprint_minimizeParens ls+      , "prettyprint_assumeOperatorAssociativity" .= prettyprint_assumeOperatorAssociativity ls+      , "prettyprint_rejectInvalidCode" .= prettyprint_rejectInvalidCode ls+      , "prettyprint_indentation" .= prettyprint_indentation ls+      , "log_format" .= log_format ls+      ]
+ tests/golden/Spec.hs view
@@ -0,0 +1,42 @@+import qualified Data.ByteString.Lazy as LBS+import qualified Data.ByteString.Lazy.Char8 as LBS8+import qualified GLuaFixer.Interface as GLua+import GLuaFixer.LintSettings (LintSettings, defaultLintSettings)+import System.FilePath (replaceExtension, takeBaseName)+import Test.Tasty (TestTree, defaultMain, testGroup)+import Test.Tasty.Golden (findByExtension, goldenVsFile, goldenVsString)++main :: IO ()+main = defaultMain =<< goldenTests++data TestPair = TestPair {inputFile :: FilePath, outputFile :: FilePath}++goldenTests :: IO TestTree+goldenTests = do+  inputFiles <- findByExtension [".lua"] "tests/golden/data/input"+  expectedOutputFiles <- findByExtension [".lua"] "tests/golden/data/output"+  let+    testPairs = zipWith TestPair inputFiles expectedOutputFiles++  pure $+    testGroup+      "Golden pretty print tests"+      [ goldenVsString+        (takeBaseName input)+        output+        (prettyPrintFile input)+      | TestPair input output <- testPairs+      ]++prettyPrintFile :: FilePath -> IO LBS.ByteString+prettyPrintFile inputFile = do+  contents <- readFile inputFile+  let+    Right mtokens = GLua.lex lintSettings inputFile contents+    Right ast = GLua.parse lintSettings inputFile mtokens+    prettyprinted = GLua.prettyprint lintSettings ast++  pure $ LBS8.pack prettyprinted++lintSettings :: LintSettings+lintSettings = defaultLintSettings