NOUSERMACRO(lex setDebug)

includefile(../../release.yo)

htmlbodyopt(text)(#27408B)
htmlbodyopt(bgcolor)(#FFFAF0)
whenhtml(mailto(Frank B. Brokken: f.b.brokken@rug.nl))

DEFINEMACRO(lsoption)(3)(\
    bf(--ARG1)=tt(ARG3) (bf(-ARG2))\
)
DEFINEMACRO(laoption)(2)(\
    bf(--ARG1)=tt(ARG2)\
)
DEFINEMACRO(loption)(1)(\
    bf(--ARG1)\
)
DEFINEMACRO(soption)(1)(\
    bf(-ARG1)\
)

DEFINEMACRO(flc)(0)(bf(flexc++))
DEFINEMACRO(Flc)(0)(bf(Flexc++))
DEFINEMACRO(Cpp)(0)(bf(C++))
DEFINEMACRO(prot)(0)(tt((prot)))

DELETEMACRO(tt)
DEFINEMACRO(tt)(1)(em(ARG1))
DEFINEMACRO(itt)(1)(it() tt(ARG1))
DEFINEMACRO(itb)(1)(it() bf(ARG1))

NOUSERMACRO( FILE Input Scanner ScannerBase YYText accept back begin close
debug echo filename files get interactiveLine leave length less lineNr lineno
matched more name out popStream preCode print push pushStream reRead redo
scanner setFilename setMatched startCondition streamStack switchIstream
switchOstream switchStreams api postCode
    )

COMMENT( man-request, section, date, distribution file, general name)
manpage(flexc++api)(3)(_CurYrs_)(flexc++._CurVers_)
        (flexc++ API)

COMMENT( man-request, larger title )
manpagename(flexc++api)
        (Application programmer's interface of flexc++ generated classes)


manpagedescription()

    Flc()(1) was designed after bf(flex)(1) and bf(flex++)(1). Like these
latter two programs flc() generates code performing pattern-matching on text,
possibly executing actions when certain em(regular expressions) are
recognized.

    Refer to bf(flexc++)(1) for a general overview. This manual page covers
the Application Programmer's Interface of classes generated by flc(), offering
the following sections:

    itemization(
    it() bf(1. INTERACTIVE SCANNERS): how to create an interactive scanner

    it() bf(2. THE CLASS INTERFACE: SCANNER.H): Constructors and members
        of the scanner class generated by flc() 
    it() bf(3. NAMING CONVENTION): symbols defined by flc() in the scanner
        class. 
    it() bf(4. CONSTRUCTORS): constructors defined in the scanner class.
    it() bf(5. PUBLIC MEMBER FUNCTION): public member declared in the scanner
        class.
    it() bf(6. PRIVATE MEMBER FUNCTIONS): private members declared in the
        scanner class.
    it() bf(7. SCANNER CLASS HEADER EXAMPLE): an example of a generated
        scanner class header

    it() bf(8. THE SCANNER BASE CLASS): the scanner class is derived from a
        base class. The base class is described in this section
    it() bf(9. PUBLIC ENUMS AND -TYPES): enums and types declared by the
        base class
    it() bf(10. PROTECTED ENUMS AND -TYPES): enumerations and types used by
        the scanner and scanner base classes
    it() bf(11. NO PUBLIC CONSTRUCTORS): the scanner base class does not
        offer public constructors.
    it() bf(12. PUBLIC MEMBER FUNCTIONS): several members defined by the
        scanner base class have public access rights.
    it() bf(13. PROTECTED CONSTRUCTORS): the base class can be constructed by
        a derived class. Usually this is the scanner class generated by flc().
    it() bf(14. PROTECTED MEMBER FUNCTIONS): this section covers the base
        class member functions that can only be used by scanner class or
        scanner base class members
    it() bf(15. PROTECTED DATA MEMBERS): this section covers the base class
        data members that can only be used by scanner class or scanner base
        class members
    it() bf(16. FLEX++ TO FLEXC++ MEMBERS): a short overview of frequently
        used bf(flex)(1) members that received different names in flc().

    it() bf(17. THE CLASS INPUT): the scanner's job is completely decoupled
        from the actual input stream. The class tt(Input), nested within the
        scanner base class handles the communication with the input
        streams. The  class tt(Input), is described in this section.
    it() bf(18. INPUT CONSTRUCTORS): the class tt(Input) can easily be
        replaced by another class. The constructor-requirements are described
        in this section.
    it() bf(19. REQUIRED PUBLIC MEMBER FUNCTIONS): this section covers the
        required public members of a self-made tt(Input) class
    )

manpagesection(UNDERSCORES)
includefile(include/underscores)

includefile(interactive.yo)
includefile(scanner.h.yo)
includefile(scannerbase.h.yo)
includefile(input.yo)

manpagefiles()

    Flc()'s default skeleton files are in tt(/usr/share/flexc++).nl()
    By default, flc() generates the following files:
        itemization(
        itt(Scanner.h): the header file containing the scanner class's
            interface. 
        itt(Scannerbase.h): the header file containing the interface of the 
            scanner class's base class.
        itt(Scanner.ih): the internal header file that is meant to be included
            by the scanner class's source files (e.g., it is included by
            tt(lex.cc), see the next item's file), and that should contain all
            declarations required for compiling the scanner class's sources.
        itt(lex.cc): the source file implementing the scanner class member
            function tt(lex) (and support functions), performing the lexical
            scan.
    )

manpageseealso()

    bf(flexc++)(1), bf(flexc++input)(7)

manpagebugs()

    itemization(
    it() Generating interactive and non-interactive scanners (see section
        1. INTERACTIVE SCANNERS) cannot be mixed.
    )

includefile(include/trailer.yo)
