!\      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ /Scientific-notation numbers with explicit radix(c) Eric Mertens, 2019ISCemertens@gmail.comSafe27  config-value?Radix used for a number. Some radix modes support an exponent. config-valuebinary, base 2 config-value octal, base 8 config-value"decimal, base 10, exponent base 10 config-value$hexdecimal, base 16, exponent base 2 config-value;Numbers are represented as base, coefficient, and exponent.TThe most convenient way to get numbers into and out of this form is to use one of:  ,  ,  , or  .This representation is explicit about the radix and exponent used to facilitate better pretty-printing. By using explicit exponents extremely large numbers can be represented compactly. Consider that it is easy to write  `1e100000000`C which would use a significant amount of memory if realized as an \m. This representation allows concerned programs to check bounds before converting to a representation like \.  config-value6Returns the radix as an integer ignoring any exponent.  config-valueConvert a number to a ]R. Warning: This can use a lot of member in the case of very large exponent parts.  config-valueConvert a number to a \R. Warning: This can use a lot of member in the case of very large exponent parts.  config-value\ to a radix 10  with no exponent  config-value] to a radix 10  with no exponent   Trustworthy=?Fh^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG`9 a9 Safe+ H config-valueTypes of lexical errorsI config-valueThe token type used by  Config.Lexer and  Config.ParserJ config-value-A value annotated with its text file position config-valueA position in a text fileK config-value The initial  for the start of a fileL config-valueXProcess a list of position-annotated tokens inserting layout end tokens as appropriate.M config-valueSingle step of the layout passN config-value/Extract the column number from a located thing.O config-value/Return True when a token starts a layout scope.L config-valuetokens without layout markers  config-valuetokens with layout markers M config-valuecurrent token  config-valuecontinuation  config-valuestack of layout scopes  config-valuetoken stream with layout !HPQRSTUIVWXYZ[\]^_`abcJdefKLSafeH"g config-value2Type of actions used by lexer upon matching a ruleh config-valueNThe lexer can be in any of four modes which determine which rules are active.i config-value Start of comment and return modej config-valueStart of string and return modek config-valueStart of string and input textl config-value<The generated code expects the lexer input type to be named lm config-value7Get the next characteristic byte from the input source.n config-value>Advance the position according to the kind of character lexed.o config-valueIAction to perform upon end of file. Produce errors if EOF was unexpected.p config-valueoTerminate the line if needed and move the cursor to column 0 to ensure that it terminates any top-level block.q config-value8Action to perform when lexer gets stuck. Emits an error.r config-value Helper function for building an g using the lexemes config-value Helper function for building an g where the lexeme is unused.t config-value%Used to enter one of the nested modesu config-valueEnter the string literal lexerv config-valueASuccessfully terminate the current mode and emit tokens as neededw config-value'Action for unterminated string constantx config-value Construct a W token from a token using a given base. This function expect the token to be legal for the given base. This is checked by Alex.y config-valueProcess a section heading tokenz config-valueAlex is driven by looking up elements in a 128 element array. This function maps each ASCII character to its ASCII encoding and it maps non-ASCII code-points to a character class (0-6)g config-value#match length  config-value#current input  config-value#lexer mode  config-value#updated lexer mode, emitted tokens x config-valuesign-prefix-digits hijk{lmoqrstuvwxy TrustworthyFMX| config-valueAttempt to produce a token stream from an input file. In the case of an error the line and column of the error are returned instead.} config-value5Compute the Alex state corresponding to a particular h| config-valueSource text  config-valueTokens with position | Safe24567Xt  config-value2Sum type of the values supported by this language. is parameterized over an annotation type indented to be used for file position or other application specific information. When no annotations are needed, '()' is a fine choice.  config-valuelists of key-value pairs! config-valuenumbers" config-valuequoted strings# config-valueunquoted strings$ config-valuelists% config-valueWrapper to distinguish % from B by type in a configuration. Atoms can be constructed using the OverloadedStrings extension.( config-valueA single section of a Example:my-key: my-value is ( _ (% _ "my-key") (% _ "my-value")- config-value#Returns the annotation for a value."!#$ %&'()*+,- Safe[. config-valuePretty-print a  as shown in the example. Sections will nest complex values underneath with indentation and simple values will be rendered on the same line as their section..  Trustworthy=?Fha~ config-valueConvert number token to number value. This needs a custom function like this because there are multiple values matched from the constructor. config-value]Attempt to parse a layout annotated token stream or the token that caused the parse to fail. config-valuelayout annotated token stream  config-valuetoken at failure or result 9 9 'Lenses and traversals for manipulating  values.(c) Eric Mertens, 2017ISCemertens@gmail.comSafer / config-value+Traversal for the subsections of the given  when that value is a  . and the section name matches the given name. config-valueTraversal for the  contained inside the given (. when its section name matches the given name.0 config-valueTraversal for the [(] contained inside the given  when it is a  .1 config-valueTraversal for the  contained inside the given .2 config-valueTraversal for the % contained inside the given .3 config-valueTraversal for the  contained inside the given .4 config-valueTraversal for the [] contained inside the given  when it is a $.5 config-value@Traversal for the immediate values in a list or a sections list.!This is intended to be used with Control.Lens.Plated.6 config-valueTraversal for the  elements inside the given  when it is a $. 6 = 4 .  7 config-value'Lens for the annotation component of a / config-value section name  config-value section name /01234567 /12346075-Configuration file parser and abstract syntax(c) Eric Mertens, 2017ISCemertens@gmail.comSafe{8 config-valueLError messages that can occur during parsing annotated with a file position.: config-valuehParse a configuration file and return the result on the right, or the position of an error on the left.<The resulting value is annotated with source file locations.2Note: Text file lines are terminated by new-lines.; config-value implements a pretty format: config-valuesource text  config-valueerror message or parsed value  "!#$ %&'()*+,-.89::.()*+,"!#$ %&'- 89JConfiguration pre-processor adding support for aliases and common sections(c) Eric Mertens, 2020ISCemertens@gmail.comSafe456SX& @ config-valueErrors thrown by LA config-valuefailure to parse a fileB config-valuefailure to expand macrosC config-valueA pair of filepath and positionE config-value/Errors from macro expansion annotated with the - from the 4 nearest to the problem (typically a file position).F config-value"Variable used before its defintionG config-valueUnknown directiveH config-valueIncorrect use of @spliceI config-valueIncorrect use of @loadJ config-value'Expand macros in a configuration value.@load not supported and results in a I error.K config-valueIExpand macros in a configuration value using a pre-populated environment.L config-value2Load a configuration value from a given file path.@loadv will compute included file path from the given function given the load argument and current configuration file path.Valid @loadQ arguments are string literals use as arguments to the path resolution function.Throws  from file loads and @K config-valuefailure  config-value@load implementation  config-valuevariable environment  config-valuevalue to expand  config-valueexpanded value L config-valueinclusion path resolution  config-valuestarting file path  config-valuemacro-expanded config value @ABCDEFGHIJKL EFGHIJK@ABCDL   !"#$%&&'() * +  , - . - / 0 1 1 2 3 4 5 6789:;<=>?@@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijjklmmnoopqrstuvwxyz{|}~      !"#$%&'()*+,-./01;23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]1-N^_`abcdePfghijklmnopqrstuvwx;yz{|} ; ~ j jyeee'config-value-0.8-A5BxiU7MowqCcp02HtmvSu Config.NumberConfig Config.Lens Config.MacroConfig.NumberParser Config.TokensConfig.LexerUtils Config.Lexer Config.Value Config.Pretty Config.ParserRadixRadix2Radix8Radix10Radix16NumberMkNumber numberRadixnumberCoefficient radixToIntnumberToRationalnumberToIntegerintegerToNumberrationalToNumber $fEqRadix $fOrdRadix $fReadRadix $fShowRadix $fDataRadix$fGenericRadix $fEqNumber $fOrdNumber $fReadNumber $fShowNumber $fDataNumber$fGenericNumberPositionposIndexposLine posColumnValueSectionsTextAtomListMkAtomatomNameSection sectionAnn sectionName sectionValuevalueAnnprettykeysectionstextatomnumberlist valuePlatevaluesann ParseErrorparse$fExceptionParseError$fReadParseError$fShowParseError$fEqParseError$fOrdParseError LoadFileErrorLoadFileParseErrorLoadFileMacroError FilePosition MacroErrorUndeclaredVariableUnknownDirective BadSpliceBadLoad expandMacros expandMacros'loadFileWithMacros$fExceptionMacroError$fExceptionLoadFileError$fEqMacroError$fReadMacroError$fShowMacroError$fFunctorMacroError$fFoldableMacroError$fTraversableMacroError$fReadFilePosition$fShowFilePosition$fOrdFilePosition$fEqFilePosition$fEqLoadFileError$fReadLoadFileError$fShowLoadFileError integer-gmpGHC.Integer.TypeIntegerbaseGHC.RealRational HappyAddrHappyA#HappyStk Happy_IntList HappyCons HappyIdentityHappyAny HappyAbsSynhappyIn4 happyOut4happyIn5 happyOut5happyIn6 happyOut6happyIn7 happyOut7happyIn8 happyOut8happyIn9 happyOut9 happyIn10 happyOut10 happyIn11 happyOut11 happyIn12 happyOut12 happyIn13 happyOut13 happyIn14 happyOut14 happyIn15 happyOut15 happyIn16 happyOut16 happyIn17 happyOut17 happyIn18 happyOut18 happyIn19 happyOut19 happyIn20 happyOut20 happyInTok happyOutTok happyExpListhappyExpListPerStatehappyActOffsetshappyGotoOffsetshappyAdjustOffsethappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nonterms happyReduce_1happyReduction_1 happyReduce_2happyReduction_2 happyReduce_3happyReduction_3 happyReduce_4happyReduction_4 happyReduce_5happyReduction_5 happyReduce_6happyReduction_6 happyReduce_7happyReduction_7 happyReduce_8happyReduction_8 happyReduce_9happyReduction_9happyReduce_10happyReduction_10happyReduce_11happyReduction_11happyReduce_12happyReduction_12happyReduce_13happyReduction_13happyReduce_14happyReduction_14happyReduce_15happyReduction_15happyReduce_16happyReduction_16happyReduce_17happyReduction_17happyReduce_18happyReduction_18happyReduce_19happyReduction_19happyReduce_20happyReduction_20happyReduce_21happyReduction_21happyReduce_22happyReduction_22happyReduce_23happyReduction_23happyReduce_24happyReduction_24happyReduce_25happyReduction_25happyReduce_26happyReduction_26happyReduce_27happyReduction_27happyReduce_28happyReduction_28happyReduce_29happyReduction_29happyReduce_30happyReduction_30happyReduce_31happyReduction_31happyReduce_32happyReduction_32happyReduce_33happyReduction_33happyReduce_34happyReduction_34happyReduce_35happyReduction_35happyReduce_36happyReduction_36happyReduce_37happyReduction_37happyReduce_38happyReduction_38happyReduce_39happyReduction_39happyReduce_40happyReduction_40happyReduce_41happyReduction_41happyReduce_42happyReduction_42happyReduce_43happyReduction_43happyReduce_44happyReduction_44happyReduce_45happyReduction_45happyReduce_46happyReduction_46happyReduce_47happyReduction_47happyReduce_48happyReduction_48happyReduce_49happyReduction_49happyReduce_50happyReduction_50happyReduce_51happyReduction_51happyReduce_52happyReduction_52happyReduce_53happyReduction_53happyReduce_54happyReduction_54happyReduce_55happyReduction_55happyReduce_56happyReduction_56happyReduce_57happyReduction_57happyReduce_58happyReduction_58happyReduce_59happyReduction_59happyReduce_60happyReduction_60happyReduce_61happyReduction_61happyReduce_62happyReduction_62happyReduce_63happyReduction_63happyReduce_64happyReduction_64happyReduce_65happyReduction_65happyReduce_66happyReduction_66happyReduce_67happyReduction_67happyReduce_68happyReduction_68happyReduce_69happyReduction_69 happyNewToken happyError_ happyIdentityhappyRunIdentity happyThen happyReturn happyThen1 happyReturn1 happyError'happySeqmkNumnegNumtoInttoFrac happyError happyParse happyAccept happyDoActionindexShortOffAddrhappyLt readArrayBit happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll happyTcHack happyDoSeq happyDontSeqErrorTokenLocatedstartPos layoutPasssteptoCol usesLayout UntermComment UntermString UntermListUntermSections BadEscapeNoMatchStringEOFBulletCommaOpenList CloseListOpenMapCloseMap LayoutSep LayoutEnd locPositionlocThingAction LexerMode InCommentInCommentStringInString AlexInput alexGetBytemove eofActionpark errorActiontokentoken_nestMode startStringendMode untermStringsection byteForCharInNormal scanTokens stateToInt parseValueData.TraversabletraverseGHC.Exception.TypedisplayExceptionGHC.IO.ExceptionIOError