DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T c

⟦a506ec2d2⟧ TextFile

    Length: 1555 (0x613)
    Types: TextFile
    Names: »clex.h«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/clex/clex.h« 

TextFile



#ifndef INCLUDED_CLEX
#define INCLUDED_CLEX 1

#ifndef INCLUDED_STDIO
#include <stdio.h>
#endif

enum Boolean { FALSE, TRUE };

#include "clex_sym.h"

class Clex
    { 
 friend class Cparse;
    enum Clex_mode
        { CL_NONE=0, CL_COMMENT=1, CL_QUOTE=2, CL_POUND=4, CL_BRACK=8 };

 protected:
    short   look;           // a one-char lookahead
    FILE*   fp;
    Boolean block_brack;    // if TRUE, treat contents of "[]" as a string
    long    line_num;       // line number in original source file
    char    filename[256];  // name of original source file
    short   bufsiz;         // number of chars currently in buf
    char    buf[256];

    void eat_one()          { look = short(getc(fp)); }
    void put_in_buf(char c) { if (bufsiz < sizeof(buf)-1) buf[bufsiz++] = c; }
    void buf_one()          { put_in_buf(look); eat_one(); }
    Clex_sym terminate(Clex_sym s)  { buf[bufsiz] = '\0'; return s; }
    Clex_sym eat_return(Clex_sym);
    Clex_sym num(char);
    Clex_sym ident(char);
    Clex_sym lbrack(Clex_mode);
    Clex_sym quote(char, Clex_sym, Clex_mode);
    void block_comment(Clex_mode);
    void line_comment();
    void eoln(Clex_mode);

    virtual Boolean pound(Clex_mode, char*, short len);

 public:
    Clex_sym    next();
    const char* str()           { return buf; }
    short       strlen()        { return bufsiz; }
    long        line_no()       { return line_num; }
    const char* fname()         { return filename; }
    const char* debug(Clex_sym);

    Clex(FILE*, Boolean block_brack);
    };

#endif