Ausführliche Beschreibung | tcLex is a lexer (lexical analyzer) generator extension to Tcl. It is
inspired by Unix and GNU lex and flex, which are "tools for
generating programs that perform pattern-matching on text". tcLex is
very similar to these programs, except it uses Tcl philosophy and
syntax, whereas the others use their own syntax and are used in
conjunction with the C language. People used to lex or flex should
then feel familiar with tcLex. tcLex is a small extension (the
Windows compiled version is about 20kb, and the source is about
150kb), because it extensively uses the Tcl library. However, the
current doesn't use Tcl's regexp code anymore but a patched version
is now included in tcLex, which makes it slightly bigger (by a few
KB). tcLex should work with Tcl 8.0 and later. tcLex will NEVER work
with earlier versions, because it uses Tcl 8.0's "object" system for
performance. The most interesting features are:
.
* cross-platform support, thanks to Tcl. Though it has been
developed on Windows and tested on Windows and Unix only, it
should work on other platforms as long as Tcl exists on these
platforms. Supported Tcl platforms are Windows 95/NT, Unix (Linux,
Solaris...) and Macintosh. Other platforms are VMS, OS/2,
NeXTStep, Amiga...
.
* unlike lex and flex, which only generate static lexers written in
C and intended to be compiled, tcLex dynamically generates Tcl
commands that can be used like other C commands or Tcl procedures
from within Tcl scripts or C programs.
.
* it uses Tcl regular expressions. That means you don't have to
learn another regexp language.
.
* it works with Tcl namespaces
.
* the generated lexer commands can be used in one pass or
incrementally, because they maintain state information. That way,
several instances of the same lexer (eg a HTML parser) can run at
the same time in distinct call frames and maintain distinct states
(local variables...). Lexer need not be specially designed in
order to be used incrementally, the same lexer can transparently
be used in one pass or incrementally. This feature is especially
useful when processing text from a file or an Internet socket (Web
pages for example), when data is not necessarily available at the
beginning of the processing.
|