|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: R T
Length: 1897 (0x769) Types: TextFile Names: »README«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦this⟧ »EUUGD11/euug-87hel/sec1/clex/README«
C++ Lexical Scanner (in C++) Following this note is a shar-format file containing a lexical scanner for C++. Use it however you like. It should be adequate to drop into a full compiler. For such a use, error reporting would probably need some refinement. Also, if the compiler was to have a built-in preprocessor (i.e. not using cpp) the handler for "#" lines would need a bit of work. I will be interested in bug reports, significant improvements. Nathan Myers tektronix!sequent!mntgfx!nmyers The following source files are included: clex.c clex.h clex_sym.h clex_test.c kwhash.c Makefile They implement a self-contained lexical scanner class for C++. It is extensible by derivation primarily in the area of processing "#" compiler directives (currently, it only interprets the "#line" construct). It has one other degree of flexibility, in its handling of bracket-enclosed expressions "[]". These may be treated as a normal sequence of tokens or as delimited strings; the former is of greater use in a traditional parser, while the latter is favored for extraction of declarations by a code browser. To allay some confusion, I should point out here that clex_sym.h is used in an unusual way: it is included twice in the module clex.c; once for declaration part, once for the (static) definition part. It is built this way to keep all knowledge of keywords in a single place. The file kwhash.c is a standard C standalone program used to arrive at the collision-free hash function used to recognize C++ keywords. Any new keyword stands about one chance in 3 of colliding with an existing keyword, thus requiring that a new hash function be generated. The file clex_test.c compiles to a program which reads C or C++ code from standard input and emits token names on the standard output. Try it with different values in the constructor's second argument.