Mercurial > ~dholland > hg > ag > index.cgi
diff doc/misc/html/examples/mpp/ct.html @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/misc/html/examples/mpp/ct.html Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,101 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> +<HTML> +<HEAD> +<TITLE>Token Classifier - Macro preprocessor and C Parser </TITLE> +</HEAD> + + +<BODY BGCOLOR="#ffffff" BACKGROUND="tilbl6h.gif" + TEXT="#000000" LINK="#0033CC" + VLINK="#CC0033" ALINK="#CC0099"> + +<P> +<IMG ALIGN="right" SRC="../../images/agrsl6c.gif" ALT="AnaGram" + WIDTH=124 HEIGHT=30 > +<BR CLEAR="all"> +Back to : +<A HREF="../../index.html">Index</A> | +<A HREF="index.html">Macro preprocessor overview</A> +<P> + + +<IMG ALIGN="bottom" SRC="../../images/rbline6j.gif" ALT="----------------------" + WIDTH=1010 HEIGHT=2 > +<P> + +<H1>Token Classifier - Macro preprocessor and C Parser </H1> + +<IMG ALIGN="bottom" SRC="../../images/rbline6j.gif" ALT="----------------------" + WIDTH=1010 HEIGHT=2 > +<P> +<BR> +<H2>Introduction</H2> +<P> + The token classifier module, <tt>ct.syn</tt>, exists only to deal + with one very specific problem: When two tokens are spliced + together in accordance with the "##" operator during a macro + expansion, it is necessary to determine the syntactic type + of the resulting token. Although it is conceivable that the + token scanner could accomplish the job, it was felt that it + would be simpler to simply extract the appropriate syntax + from <tt>ts.syn</tt> and create a separate + module. <tt>ct.syn</tt> is the + result. + + The parser for the token classifier is <tt>ct()</tt>. It uses pointer + mode input. The interface function for the token classifier, + <tt>classify_token</tt>, takes a string pointer as an argument and + returns a <tt>token_id</tt>: +<PRE> + token_id classify_token(char *); +</PRE> +<BR> + +<H2> Theory of Operation </H2> + + The syntax found in <tt>ct.syn</tt> is simply the token recognition + syntax of <tt>ts.syn</tt>. The reduction procedures are limited to + those necessary to identifying the type of token presented. +<P> + The parser is set up to use pointer input, since the string + to be scanned is always in memory. The address of the input + is saved in <tt>input_string</tt> in case it is necessary to check + for a reserved word. +<P> + There are no error diagnostics. If the token is not + recognizable, it is given a token_id of <tt>UNRECOGNIZED</tt>. +<P> + The default token type parameter is set to <tt>token_id</tt> in order + to avoid specifying a type for each relevant token. Note + that "name" is set to type <tt>void</tt> in order to avoid a compiler + error. Since the return value of the reduction procedures + is <tt>character_sink</tt>, without the void declaration, the + compiler will try to convert <tt>character_sink</tt> to + <tt>token_id</tt>. + +<P> +<BR> + + +<IMG ALIGN="bottom" SRC="../../images/rbline6j.gif" ALT="----------------------" + WIDTH=1010 HEIGHT=2 > +<P> +<IMG ALIGN="right" SRC="../../images/pslrb6d.gif" ALT="Parsifal Software" + WIDTH=181 HEIGHT=25> +<BR CLEAR="right"> + +<P> +Back to : +<A HREF="../../index.html">Index</A> | +<A HREF="index.html">Macro preprocessor overview</A> + +<P> +<ADDRESS><FONT SIZE="-1"> + AnaGram parser generator - examples<BR> + Token Classifier - Macro preprocessor and C Parser <BR> + Copyright © 1993-1999, Parsifal Software. <BR> + All Rights Reserved.<BR> +</FONT></ADDRESS> + +</BODY> +</HTML>