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 &copy; 1993-1999, Parsifal Software. <BR>
+                  All Rights Reserved.<BR>
+</FONT></ADDRESS>
+
+</BODY>
+</HTML>