NOUSERMACRO(lex setDebug main)
includefile(preamble)

affiliation(url(University of Groningen)(http://www.rug.nl/))
report(Flexc++ (Version _CurVers_) User Guide)
        (
        url(Frank B. Brokken)(mailto:f.b.brokken@rug.nl), 
        url(Jean-Paul van Oosten)(mailto:j.p.van.oosten@rug.nl), and
        (until 0.5.3) Richard Berendsen) 
       (_CurYrs_)

lchapter(Introduction)(Introduction)

    includefile(intro/intro.yo)
    
    sect(Running Flexc++)
    includefile(intro/flexc++)

        lsubsect(OPTIONS)(Flexc++ options)
        includefile(intro/options)    

    lsect(simpleexamples)(Some simple examples)
    
        lsubsect(lexermain)(A simple lexer file and main function)
        includefile(intro/simple.yo)

        subsect(An interactive scanner supporting command-line editing)
        includefile(intro/interactive.yo)

lchapter(differences)(Differences between flex and flexc++)

    includefile(differences/intro.yo)
    
    lsect(code_blocks)(Format of the input file)
    includefile(differences/codeblocks.yo)
    
        lsubsect(diffdef)(Definition section)
        includefile(differences/definitions.yo)
    
        lsubsect(diffrules)(Rules section)
        includefile(differences/rules.yo)
    
        lsubsect(diffusercode)(User code section)
        includefile(differences/usercode.yo)
    
    lsect(diffpatterns)(Patterns)
    includefile(differences/patterns)
    
    lsect(files)(Generated files)
    includefile(differences/files)
    
    sect(Comment)
    includefile(differences/comment)

    lsect(functions)(Members and macros)
    includefile(differences/members)
    
    sect(Multiple input streams)
    includefile(differences/multiple)

lchapter(FILEFORMAT)(Format of the input file)
includefile(lexer/intro)

    lsect(definitionsection)(Definitions section)
    includefile(lexer/definitions)

        lsubsect(DIRECTIVES)(Directives)
        includefile(lexer/directives)

    lsect(rulessection)(Rules section)
    includefile(lexer/rules)

    lsect(comments)(Comment)
    includefile(lexer/comment)

    lsect(patterns)(Patterns)
    includefile(lexer/patterns)
    
    lsect(actions)(Actions)
    includefile(lexer/actions)
    
    lsect(STARTCONDITIONS)(Startconditions (Miniscanners))
    includefile(lexer/startconditions)
    
        subsect(Notation details)
        includefile(lexer/notation)

    sect(Members)
    includefile(lexer/members)

    sect(Handling input your own way)
    includefile(lexer/input)
    
    
lchapter(generated-files)(Generated files)
includefile(files/intro)

    lsect(multiplestreams)(Multiple input streams)
    includefile(files/multiple)

chapter(Technical documentation (PIPETHROUGH(date -R)()))

    includefile(technical/intro)
    
    lsect(NOTATION)(Notation, Terminology)
    includefile(technical/notations)
    
    COMMENT(
            lsubsect(FINACALGO)(The FinAc computing algorithm)
            includefile(technical/finacalgo)
    END)
    
    lsect(PARSER)(The parser)
    includefile(technical/parser)

    lsect(SEMVAL)(Semantic Data, struct DataType and the class SemUnion)
    TODO

        lsubsect(PATTERNVAL)(The class Pattern)
        includefile(technical/patternval)    
    
        lsubsect(CHARCLASS)(The class CharClass)
        TODO
    
        lsubsect(INTERVAL)(The class Interval)
        TODO
    
    
    lsect(STARTCOND)(Start Conditions and the class StartConditions)
    TODO
    
    lsect(BLOCKS)(Code (action)  blocks)
    includefile(technical/blocks)

    lsect(STATE)(The class State)
    includefile(technical/state)
    
    lsect(STATES)(States)
    includefile(technical/states)
    
    lsect(RULES)(Rules and the class Rule)
    includefile(technical/rules)
    
    lsect(PATTERNS)(Patterns)
    includefile(technical/pattern)
    
    lsect(RANGES)(Ranges)
    includefile(technical/ranges)
    
    lsect(TAILCOUNT)(The class TailCount)
    includefile(technical/tailcount)
    
    sect(The class DFAs)
    includefile(technical/dfas)
    
        lsect(DFA)(The DFA)
    includefile(technical/dfa)
    
        lsubsect(TAILLOGIC)(The logic used in 'setTailCount')
        includefile(technical/taillogic)
    
    lsect(DFAROW)(The rows of the DFA: DFAROW)
    includefile(technical/dfarow)
    
    lsect(LOOKAHEAD)(Patterns using the lookahead operator (LOP))
    
        subsect(The LOP handling algorithm)
        includefile(technical/lopalgo)
    
        subsect(LOP handling: a more extensive example)
        includefile(technical/abbaabba)
    
        lsubsect(LOPPROBLEM)(LOP handling: a problem case)
        includefile(technical/lopproblem)
    
        subsect(The steps of the LOP handling algorithm)
        includefile(technical/lopalgosteps)
    
COMMENT(
        subsect(Implementation)
        includefile(technical/lookahead)
END)
    
    lsect(FINALSTATE)(Final states and ^xyz vs. xyz patterns)
    includefile(technical/bolrules)
    
    sect(Generating Code)
    includefile(technical/gencode)
    
        lsubsect(RANGETAB)(The range-table)
        includefile(technical/rangetable)
    
        subsect(The DFAs)
        includefile(technical/gendfas)
    
        lsubsect(SFINACINFO)(The Final-Accept info array)
        includefile(technical/finac)
    
    lsect(RUNTIME)(Run-time operations)
    includefile(technical/runtime)
    
    sect(Generating code)
    includefile(technical/codegeneration)
    
    sect(Reflex: refreshing flexc++)
    includefile(technical/reflex)
    
    COMMENT(includefile(technical/developernotes))
