Lex and Yacc
Scanning and parsing tools
Overview
Application Development
Lex & Yacc scanning and parsing tools automate the process of translating user input. Lex
builds a lexical analyser, a C, C++, or Borland Pascal function that takes a stream of input and
breaks it up into tokens according to the rules you specify. YACC builds a parser, a C, C++, or
Turbo Pascal function that takes a stream of tokens (such as those provided by MKS LEX) and
matches them against the grammar you provide. Lex & Yacc includes the new Yacc Tracker, an
interactive trace facility for MKS YACC-generated parsers. It also includes a new symbol table
tutorial and example code, a sample code generator, and on-line manual pages.
"I've tried the other Yaccs and MKS Lex & Yacc is by far the best on the market, with the best documentation and the neatest technical support people."
Tom Campbell, Systems & Software Inc.
How Lex and Yacc can help
Lex & Yacc Scanning and Parsing Tools
Do you need powerful compiler construction tools? Do you need to better automate the processing
and translation of user input? Do you need tools to help you build language translators or
database query languages? Does your ideal solution integrate with your development environment?
MKS Lex & Yacc is the answer
For software development professionals, any tool that makes the job easier is a valuable
commodity. MKS Lex & Yacc simplifies the development of interpretive and analytical software
such as customized compilers and parsers. By automating complex processes like user input
translation, MKS Lex & Yacc provides valuable aid to those who write compilers, database
query languages and text processing applications. This allows developers to concentrate more on
creativity, and spend less time on the monotony of lexical analysis and grammar matching.
Together, the MKS Lexical scanner and MKS Yacc parser generators form a powerful program
generation tool which processes any language specification you provide into usable C, C++, or
Borland Turbo Pascal code.
Typical Uses
MKS Lex & Yacc can be used to build: - compiler front ends (scanning and parsing phase of
compilation) - interpreters for interpreted languages; for example, the calculator component of a
spreadsheet, a report generator - language translators - "little languages" such as database
query languages and page description languages Interoperability MKS Lex & Yacc is fully
compatible with lex and yacc on UNIX System V and BSD UNIX. The grammars and generated code are
portable between DOS, OS/2, Windows NT, and UNIX systems. MKS Lex & Yacc is available for
DOS, OS/2, and Windows NT.
Lex and Yacc features
Integrated with Microsoft Visual Studio v6.0
MKS Lex & Yacc includes a Microsoft Visual Studio v6.0 Add-in which allows you to develop
robust scanners and parsers directly within the VC++ 6.0 IDE. Include Lex and Yacc source files
and build rules in VC++ projects along with traditional C and C++ sources and resources.
Interoperability
MKS Lex & Yacc is fully compatible with lex and yacc on UNIX System V and BSD UNIX. MKS Lex
& Yacc is available for Windows 95/98/Me, Windows NT, and Windows 2000.
Generate code for Windows applications
MKS Lex & Yacc can now generate code for Windows applications. The scanner and parser tables
created by MKS Lex & Yacc can be created as loadable resources, which means a much more
efficient use of memory under Windows.
Use 32-bit executables on DOS
The DOS version of MKS Lex & Yacc includes 32-bit protected mode versions of the lex and yacc
executables. This feature allows DOS users to access all available memory resources for
generating large parsers and scanners. Simplify parser development with Yacc Tracker Yacc
Tracker, included with MKS Lex & Yacc, provides you with a way to see inside a running
parser, giving you a much clearer mental picture of how yacc generated parsers do their magic.
Yacc Tracker will help you to: - gain a better understanding of how yacc parses its input - focus
on portions of a grammar that do not work as expected - gain insight so you can modify a grammar
to work as intended