j\i     Safe05 2Sum type of the values supported by this language.The first field of the R constructor is the based used in the concrete syntax of the configuration value.The  constructor stores the coefficient and power-of-10 exponent used in the concrete syntax. This allows representing numbers that would otherwise overflow a . Examples:0xff is  16 255123 is  10 123123e10 is  123 10123.45 is  12345 (-2)lists of key-value pairs8integer literal base (2, 8, 10, or 16) and integer value#coef exponent: coef * 10 ^ exponentquoted stringsunquoted stringslistsWrapper to distinguish  from B by type in a configuration. Atoms can be constructed using the OverloadedStrings extension. A single section of a Example:my-key: my-value is   ( "my-key") ( "my-value")    SafeTypes of lexical errorsThe token type used by  Config.Lexer and  Config.Parser-A value annotated with its text file positionA position in a text fileXProcess a list of position-annotated tokens inserting layout end tokens as appropriate. Single step of the layout pass!/Return True when a token starts a layout scope.'"#$%&'()*+,-./0123456789:;<=>?tokens without layout markers tokens with layout markers current token continuation stack of layout scopes token stream with layout @!A %&'()0+/8*,5-.1234679:;<=>? "#$%&'()*+,-./0123456789:;<=>? @!ASafePretty-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. BCDEFGHI BCDEFGHI BCDEFGHI Trustworthy9;BJConvert number token to number value. This needs a custom function like this because there are two value matched from the constructor.KConvert floating token to floating value. This needs a custom function like this because there are two value matched from the constructor.L]Attempt to parse a layout annotated token stream or the token that caused the parse to fail.}MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~JKLlayout annotated token stream token at failure or result LyMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~JKLO9 P9 Safe2Type of actions used by lexer upon matching a ruleNThe lexer can be in any of four modes which determine which rules are active. Start of comment and return modeStart of string and return modeStart of string and input text<The generated code expects the lexer input type to be named 7Get the next characteristic byte from the input source. The initial  for the start of a file>Advance the position according to the kind of character lexed.IAction to perform upon end of file. Produce errors if EOF was unexpected.8Action to perform when lexer gets stuck. Emits an error. Helper function for building an  using the lexeme Helper function for building an  where the lexeme is unused.%Used to enter one of the nested modesEnter the string literal lexerASuccessfully terminate the current mode and emit tokens as needed'Action for unterminated string constant Construct a / 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. Construct a  token from a lexeme.Process a section heading tokenAlex 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)#match length #current input #lexer mode #updated lexer mode, emitted tokens prefix length base sign-prefix-digits %sign-integer-[. decimal][e exponent]  TrustworthyBAttempt 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.5Compute the Alex state corresponding to a particular 7Source text Tokens with position      ,     SafeMApply a function to the subsections of the given value when that value is a Sections9 and the subsection name matches the given section name Apply a function to the  contained inside the given 2 when it is a section name matches the given name.Apply a function to the [ ] contained inside the given  when it is a Sections.Apply a function to the  contained inside the given  when it is a Text.Apply a function to the  contained inside the given  when it is a TextC. This traversal is only valid if the output atom is a valid atom!Apply a function to the  contained inside the given  when it is a Number.Apply a function to the [] contained inside the given  when it is a List.Apply a function to the  elements inside the given  when it is a List. values = list . traverse section name  section name -Configuration file parser and abstract syntax(c) Eric Mertens, 2017ISCemertens@gmail.comSafeParse a configuration file and return the result on the right, or the position of an error on the left. Note: Text file lines are terminated by new-lines.source text error message or parsed value          !"#$ %&'()*+,-.-/0123456  789:&;<=(>?)@ABCDEFGHIJKLMNOPQQRSTUUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~M     )config-value-0.5.1-J4anGlJpt9KLcXSRVzq78UConfig Config.Lens Config.Value Config.Tokens Config.Pretty Config.ParserConfig.LexerUtils Config.LexerValueSectionsNumberFloatingTextAtomListMkAtomatomNameSection sectionName sectionValueprettykeysectionstextatomnumberlistvaluesparsebase GHC.Floatghc-prim GHC.TypesDouble#text-1.2.2.1-FeA6fTH3E2n883cNXIS2LiData.Text.Internal$fIsStringAtomErrorTokenLocatedPosition layoutPassstep usesLayoutLayoutNoLayout UntermComment UntermString UntermFile BadEscapeNoMatchStringBulletCommaOpenList CloseListOpenMapCloseMap LayoutSep LayoutEndEOF locPositionlocThingposIndexposLine posColumntoCol$fFunctorLocated prettyNumprettyFloating prettyTextprettySectionsprettyBigSectionprettySmallSectionsprettySmallSectionisBigfloating parseValue HappyAddrHappyA#HappyStk Happy_IntList HappyConsHappyAny HappyAbsSynhappyIn4 happyOut4happyIn5 happyOut5happyIn6 happyOut6happyIn7 happyOut7happyIn8 happyOut8happyIn9 happyOut9 happyIn10 happyOut10 happyIn11 happyOut11 happyIn12 happyOut12 happyIn13 happyOut13 happyInTok happyOutTok happyExpListhappyExpListPerStatehappyActOffsetshappyGotoOffsetshappyDefActions 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_25 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError'confighappySeqerrorP happyParse happyAccept happyDoActionindexShortOffAddr readArrayBit happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll happyTcHack happyDoSeq happyDontSeqAction LexerMode InCommentInCommentStringInString AlexInput alexGetBytestartPosmove eofAction errorActiontokentoken_nestMode startStringendMode untermStringsection byteForCharInNormal scanTokens stateToIntAlexAcc AlexAccNone AlexAccSkip AlexLastAccAlexNone AlexLastSkip AlexReturnAlexEOF AlexErrorAlexSkip AlexTokenAlexAddrAlexA# alex_tab_size alex_base alex_table alex_check alex_deflt alex_accept alex_actionscomment commentstring stringlit alex_action_2 alex_action_3 alex_action_4 alex_action_5 alex_action_6 alex_action_7 alex_action_8 alex_action_9alex_action_10alex_action_11alex_action_12alex_action_13alex_action_14alex_action_15alex_action_16alex_action_19alex_action_21alex_action_22alex_action_23alex_action_24alex_action_27alex_action_28alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkn integer-gmpGHC.Integer.TypeIntegerexplain explainError