From xemacs-m  Fri Feb 28 11:47:28 1997
Received: from neal.ctd.comsat.com (exim@neal.ctd.comsat.com [134.133.40.21])
	by xemacs.org (8.8.5/8.8.5) with SMTP id LAA08850
	for <xemacs-beta@xemacs.org>; Fri, 28 Feb 1997 11:47:27 -0600 (CST)
Received: from neal by neal.ctd.comsat.com with local (Exim 1.58 #2)
	id 0w0WP1-0002i9-00; Fri, 28 Feb 1997 12:47:27 -0500
To: xemacs-beta@xemacs.org
Subject: syntax hilighting
Mime-Version: 1.0 (generated by tm-edit 7.105)
Content-Type: text/plain; charset=US-ASCII
From: Neal Becker <neal@ctd.comsat.com>
Date: 28 Feb 1997 12:47:24 -0500
Message-ID: <u9d8tkrff7.fsf@neal.ctd.comsat.com>
Lines: 34
X-Mailer: Gnus v5.4.15/XEmacs 20.1

I just grabbed the latest gnu enscript.  It now features syntax
hilighting for many languages.  What caught my attention was the
design.  I standalone utility called "states" is used.  I wonder if
any of this could be useful for xemacs.

STATES                                                               STATES
                                Feb 6, 1997

NAME
     states - awk alike text processing tool

SYNOPSIS
     states [-hV] [-D var=val] [-f file] [-o outputfile] [-s startstate] [-W
     level] [filename ...]

DESCRIPTION
     States is an awk-alike text processing tool with some state machine
     extensions.  It is designed for program source code highlighting and
     to similar tasks where state information helps input processing.

     At a single point of time, States is in one state, each quite similar
     to awk's work environment, they have regular expressions which are
     matched from the input and actions which are executed when a match is
     found.  From the action blocks, states can perform state transitions;
     it can move to another state from which the processing is continued.
     State transitions are recorded so states can return to the calling
     state once the current state has finished.

     The biggest difference between states and awk, besides state machine
     extensions, is that states is not line-oriented.  It matches regular
     expressions tokens from the input and once a match is processed, it
     continues processing from the current position, not from the beginning
     of the next input line.
[...]

