Index: tools/prettyprinter/parse.cc
===================================================================
--- tools/prettyprinter/parse.cc	(revision 7d4f6ed5e24a81ba67229ed1240413b39513e433)
+++ 	(revision )
@@ -1,94 +1,0 @@
-//                              -*- Mode: C++ -*- 
-// 
-// Pretty Printer, Copyright (C) Richard C. Bilson and Rodolfo G. Esteves 2001
-// 
-// parse.cc -- 
-// 
-// Author           : Richard C. Bilson and Rodolfo G. Esteves
-// Created On       : Sun Dec 16 15:06:31 2001
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Apr  9 22:38:19 2002
-// Update Count     : 435
-// 
-
-#include "parse.h"
-#include "filter.h"
-#include "yacc.tab.h" 
-
-
-Token::Token( const string &text, int kind ) : text(text), kind(kind) {
-    left = down = NULL;
-} // Token::Token
-
-Token::Token( const string &text, list<string> &ws_list, int kind ) : text(text), kind(kind) {
-//    cerr << "Token3 : text \"" << text << "\"";
-//    for ( list<string>::iterator i = ws_list.begin(); i != ws_list.end(); i ++ ) {
-//	cerr << " WSt: \"" << *i << "\"";
-//    }
-//    cerr << endl;
-    left = down = NULL;
-    // O(1) transfer of the current lex whitespace list to the token's
-    // whitespace list, and clearing the lex whitespace list.
-    Token::ws_list.splice( Token::ws_list.end(), ws_list );
-} // Token::Token
-
-void Token::addLeftTail( Token *n ) {
-    Token *p = this;
-    while ( p->left != 0 ) {
-	p = p->left;
-    } // while
-    p->left = n;
-} // Token::addLeftTail
-
-void Token::addDownLeftTail( Token *n ) {
-    if ( down == 0 ) {
-	down = n;
-    } else {
-	down->addLeftTail( n );
-    } // if
-} // Token::addDownLeftTail
-
-bool Token::isTerminal() {
-    return kind < END_TERMINALS;
-} // Token::isTerminal
-
-int Token::getKind() const {
-    return kind;
-} // Token::getKind()
-
-string Token::getText() const {
-    return text;
-} // Token::getText()
-
-string Token::getWS() {
-    string ret;
-    // concatenate whitespace and comment text
-    for ( list<string>::iterator i = ws_list.begin(); i != ws_list.end(); i ++ ) {
-	ret += *i;
-    } // for
-    return ret;
-} // Token::getWS
-
-bool Token::isComment() {
-    return ws_list.size() > 1 || ( ws_list.size() == 1 && (*ws_list.begin())[0] == '/' );
-} // Token::isComment
-
-string Token::getComment() {
-    string ret;
-    // concatenate whitespace and comment text up to the last comment
-    if ( ws_list.size() > 1 ) {
-	list<string>::iterator end = -- ws_list.end();
-	if ( (*end)[0] == '/' ) end ++;
-	for ( list<string>::iterator i = ws_list.begin(); i != end; i ++ ) {
-	    ret += *i;
-	} // for
-    } else if ( ws_list.size() == 1 ) {
-	if ( (*ws_list.begin())[0] == '/' ) ret = *ws_list.begin();
-    } // if
-    return ret;
-} // Token::getComment
-
-
-// Local Variables: //
-// compile-command: "gmake" //
-// End: //
Index: tools/prettyprinter/parse.h
===================================================================
--- tools/prettyprinter/parse.h	(revision 7d4f6ed5e24a81ba67229ed1240413b39513e433)
+++ 	(revision )
@@ -1,57 +1,0 @@
-//                              -*- Mode: C++ -*- 
-// 
-// Pretty Printer, Copyright (C) Richard C. Bilson and Rodolfo G. Esteves 2001
-// 
-// parse.h - Various declarations that are needed so that the generated parser
-//           and lexer compile with C++, and to share information between the
-//           parser, lexer, and driver program
-// 
-// Author           : Richard C. Bilson and Rodolfo G. Esteves
-// Created On       : Sun Dec 16 15:00:49 2001
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Dec 17 10:55:31 2002
-// Update Count     : 163
-// 
-
-#ifndef __PARSE_H__
-#define __PARSE_H__
-
-#define YYDEBUG_LEXER_TEXT( yylval )			// lexer loads this up each time
-#define YYDEBUG 1					// get the pretty debugging code to compile
-
-int yylex();
-
-#include <iostream>
-#include <string>
-#include <list>
-
-using std::cout;
-using std::cerr;
-using std::endl;
-using std::string;
-using std::list;
-
-struct Token {
-    string text;					// text of terminal or non-terminal token
-    int kind;						// kind of terminal or non-terminal token
-    list<string> ws_list;				// list of whitespace and comments before terminal token
-    Token *left, *down;					// binary parse tree links
-
-    Token( const string &, int );
-    Token( const string &, list<string> &, int );
-    void addLeftTail( Token * );
-    void addDownLeftTail( Token * );
-    bool isTerminal();
-    int getKind() const;
-    string getText() const;
-    string getWS();
-    bool isComment();
-    string getComment();
-};
-
-#endif /* __PARSE_H__ */
-
-
-// Local Variables: //
-// compile-command: "gmake" //
-// End: //
Index: tools/prettyprinter/yacc.yy
===================================================================
--- tools/prettyprinter/yacc.yy	(revision 7d4f6ed5e24a81ba67229ed1240413b39513e433)
+++ 	(revision )
@@ -1,481 +1,0 @@
-/*                               -*- Mode: C -*- 
- * 
- *  Pretty Printer, Copyright (C) Rodolfo G. Esteves and Peter A. Buhr 2001
- *      Permission is granted to copy this grammar and to use it within software systems.
- *      THIS GRAMMAR IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.
- * 
- * yacc.y -- 
- * 
- * Author           : Rodolfo G. Esteves
- * Created On       : Sat Dec 15 13:44:21 2001
- * Last Modified By : Peter A. Buhr
- * Last Modified On : Mon Jun 27 21:51:06 2016
- * Update Count     : 1028
- */
-
-%{
-#include <stdio.h>
-#include "parse.h"
-#include "filter.h"
-
-#define YYDEBUG 1			// get the pretty debugging code to compile
-
-extern list<string> ws_list;		// lex variable containing accumulated whitespace
-void lexC( void );
-string lexYacc( void );
-
-void yyerror( char *s ) {
-    extern int yylineno;
-
-    cerr << "Error in line: " << yylineno << ": " << s << endl;
-    return;
-}
-
-Token *declstart;
-Token *rulestart;
-Token *nameliststart;
-%}
-
-%union {
-    Token *tokenp;
-}
-
-%token<tokenp>	','
-%token<tokenp>	'<'
-%token<tokenp>	'>'
-%token<tokenp>	'{'
-%token<tokenp>	'}'
-%token<tokenp>	':'
-%token<tokenp>	';'
-%token<tokenp>	'|'
-
-%token<tokenp>	MARK			// %%
-%token<tokenp>	LCURL			// %{
-%token<tokenp>	RCURL			// %}
-
-%token<tokenp>	INTEGER			// integer constant
-%token<tokenp>	CHARACTER		// character constant
-%token<tokenp>	IDENTIFIER		// identifier
-%token<tokenp>	CODE			// C code
-
-%token<tokenp>	START			// %start
-%token<tokenp>	UNION			// %union
-%token<tokenp>	TOKEN			// %token
-%token<tokenp>	LEFT			// %left
-%token<tokenp>	RIGHT			// %right
-%token<tokenp>	NONASSOC		// %nonassoc
-%token<tokenp>	TYPE			// %type
-%token<tokenp>	PURE_PARSER		// %pure_parser
-%token<tokenp>	SEMANTIC_PARSER		// %semantic_parser
-%token<tokenp>	EXPECT			// %expect
-%token<tokenp>	THONG			// %thong
-
-%token<tokenp>	PREC			// %prec
-
-%token		END_TERMINALS		// ALL TERMINAL TOKEN NAMES MUST APPEAR BEFORE THIS
-
-%type<tokenp>	sections
-%token		_SECTIONS
-%type<tokenp>	mark
-%type<tokenp>	defsection_opt
-%token		_DEFSECTION_OPT
-%type<tokenp>	declarations
-%type<tokenp>	literalblock
-%token		_LITERALBLOCK
-%type<tokenp>	declaration
-%token		_DECLARATION
-%type<tokenp>	union
-%type<tokenp>	rword
-%type<tokenp>	tag_opt
-%token		_TAG_OPT
-%type<tokenp>	namenolist
-%token		_NAMENOLIST
-%type<tokenp>	nameno
-%token		_NAMENO
-%type<tokenp>	namelist
-%token		_NAMELIST
-%type<tokenp>	name
-%type<tokenp>	rulesection
-%token		_RULESECTION
-%type<tokenp>	rules
-%token		_RULE
-%type<tokenp>	lhs
-%token		_LHS
-%type<tokenp>	rhs
-%token		_RHS
-%type<tokenp>	prod
-%type<tokenp>	prec
-%token		_PREC
-%type<tokenp>	action
-%token		_ACTION
-%type<tokenp>	usersection_opt
-%token		_USERSECTION_OPT
-%type<tokenp>	ccode_opt
-%type<tokenp>	blocks
-
-%start grammar
-
-%%
-grammar		: sections
-			{
-			    filter( $1 );		/* filter parse tree */
-			    freeTree( $1 );		/* free parse-tree storage (optional: used with purify) */
-			}
-		;
-
-sections	: defsection_opt mark rulesection usersection_opt
-			{
-			    $$ = new Token( "sections", _SECTIONS );
-			    $1->left = $2;
-			    $2->left = $3;
-			    $3->left = $4;
-			    $$->down = $1;
-			}
-		;
-
-mark		: MARK
-		| error					/* missing %% */
-			{
-			    cerr << "no input grammar, missing %% mark" << endl;
-			    exit( -1 );
-			}
-		;
-
-defsection_opt	: /* empty */
-			{
-			    //cerr << "defsection_opt1: " << endl;
-			    $$ = new Token( "declaration_opt", _DEFSECTION_OPT );
-			}
-		| declarations
-			{
-			    //cerr << "defsection_opt2: " << $1->text << "(" << $1 << ")" << endl;
-			    $$ = new Token( "declaration_opt", _DEFSECTION_OPT );
-			    $$->down = declstart;
-			}
-		;
-
-declarations	: literalblock
-			{
-			    //cerr << "declarations1: " << $1->text << "(" << $1 << ")" << endl;
-			    $$ = declstart = $1;
-			}
-		| declaration
-			{
-			    //cerr << "declarations2: " << $1->text << "(" << $1 << ")" << endl;
-			    $$ = declstart = new Token( "declaration", _DECLARATION );
-			    $$->down = $1;
-			}
-		| declarations literalblock
-			{
-			    //cerr << "declarations3: "<< $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
-			    $1->left = $2;
-			    $$ = $2;
-			}
-		| declarations declaration
-			{
-			    //cerr << "declarations4: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
-			    $$ = new Token( "declaration", _DECLARATION );
-			    $1->left = $$;
-			    $$->down = $2;
-			}
-		;
-
-literalblock	: LCURL
-			{ lexC(); }
-		  ccode_opt
-			{ $<tokenp>$ = new Token( lexYacc(), CODE ); }
-		  RCURL
-			{
-			    //cerr << "literalblock: " << $1->text << "(" << $1 << ") " << $<tokenp>4->text << " " << $5->text << "(" << $5 << ")" << endl;
-			    $1->left = $<tokenp>4;
-			    $<tokenp>4->left = $5;
-			    $$ = new Token( "literalblock", _LITERALBLOCK );
-			    $$->down = $1;
-			}
-		;
-
-declaration	: union
-		| START IDENTIFIER
-			{
-			    $1->left = $2;
-			    $$ = $1;
-			}
-                | rword tag_opt namenolist
-			{
-			    Token *n = new Token( "namenolist", _NAMENOLIST );
-			    n->down = nameliststart;
-			    $1->left = $2;
-			    $2->left = n;
-			    $$ = $1;
-			}
-		| TYPE tag_opt namelist
-			{
-			    Token *n = new Token( "namelist", _NAMELIST );
-			    n->down = nameliststart;
-			    $1->left = $2;
-			    $2->left = n;
-			    $$ = $1;
-			}
-                | PURE_PARSER
-		| SEMANTIC_PARSER
-                | EXPECT INTEGER			/* bison */
-			{
-			    $1->left = $2;
-			    $$ = $1;
-			}
-                | THONG					/* bison */
-		;
-
-union		: UNION
-		  '{'
-			{ lexC(); }
-		  ccode_opt
-			{
-			    // Remove the trailing '}' which is added in lex.
-			    string temp( lexYacc() );
-			    $<tokenp>$ = new Token( temp.substr( 0, temp.length() - 1 ), CODE );
-			}
-		  '}'
-			{
-			    $1->left = $2;
-			    $2->left = $<tokenp>5;
-			    $<tokenp>5->left = $6;
-			    $$ = $1;
-			}
-		;
-
-rword		: TOKEN
-		| LEFT
-		| RIGHT
-		| NONASSOC
-		;
-
-tag_opt		: /* empty */
-			{
-			    //cerr << "tag_opt" << endl;
-			    $$ = new Token( "tag_opt", _TAG_OPT );
-			}
-		| '<' IDENTIFIER '>'
-			{
-			    $1->left = $2;
-			    $2->left = $3;
-			    $$ = new Token( "tag_opt", _TAG_OPT );
-			    $$->down = $1;
-			}
-		;
-
-namenolist	: nameno
-			{
-			    //cerr << "namenolist1: " << $1->text << "(" << $1 << ")" << endl;
-			    $$ = nameliststart = $1;
-			}
-		| namenolist nameno
-			{
-			    //cerr << "namenolist2: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
-			    $1->left = $2;
-			    $$ = $2;
-			}
-		| namenolist ',' nameno
-			{
-			    //cerr << "namenolist3: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ") " << $3->text << "(" << $3 << ")" << endl;
-			    $1->left = $2;
-			    $2->left = $3;
-			    $$ = $3;
-			}
-		;
-
-nameno		: name
-			{
-			    $$ = new Token( "nameno", _NAMENO );
-			    $$->down = $1;
-			}
-		| name INTEGER
-			{
-			    $$ = new Token( "nameno", _NAMENO );
-			    $1->left = $2;
-			    $$->down = $1;
-			}
-		;
-
-namelist	: name
-			{
-			    //cerr << "namelist1: " << $1->text << "(" << $1 << ")" << endl;
-			    $$ = nameliststart = $1;
-			}
-		| namelist name
-			{
-			    //cerr << "namelist2: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
-			    $1->left = $2;
-			    $$ = $2;
-			}
-		| namelist ',' name
-			{
-			    //cerr << "namelist3: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ") " << $3->text << "(" << $3 << ")" << endl;
-			    $1->left = $2;
-			    $2->left = $3;
-			    $$ = $3;
-			}
-		;
-
-name		: IDENTIFIER
-		| CHARACTER
-		;
-
-rulesection	: rules
-			{
-			    //cerr << "rulesection1: " << $1->text << "(" << $1 << ")" << endl;
-			    $$ = new Token( "rulesection", _RULESECTION );
-			    $$->down = $1;
-			}
-		| error					/* no rules */
-			{
-			    cerr << "no rules in the input grammar" << endl;
-			    exit( -1 );
-			}
-		;
-
-// These grammar rules are complex because the Yacc language is LR(2) due to the optional ';' at the end of
-// rules. The following rules convert the LR(2) grammar into LR(1) by lengthening the rules to allow
-// sufficient look ahead. Unfortunately, this change makes handling the semantic actions more complex because
-// there are two lists (rules, rhs) being built but only one list tail can be returned through $$ for
-// chaining.
-
-rules		: lhs rhs
-			{
-			    //cerr << "rules1: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
-			    $$ = rulestart;
-			}
-		| lhs rhs ';'
-			{
-			    //cerr << "rules2: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ") " << $3->text << "(" << $3 << ")" << endl;
-			    $2->addDownLeftTail( $3 );
-			    $$ = rulestart;
-			}
-		;
-
-lhs		: IDENTIFIER ':'
-			{
-			    //cerr << "lhs: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
-			    $$ = new Token( "lhs", _LHS );
-			    //cerr << " lhs: "  << $$->text << "(" << $$ << ")" << endl;
-			    $1->left = $2;
-			    $$->down = $1;
-			}
-		;
-
-rhs		: /* empty */
-			{
-			    //cerr << "rhs1: " << $<tokenp>0->text << "(" << $<tokenp>0 << ")"  << endl;
-			    rulestart = new Token( "rule", _RULE );
-			    rulestart->down = $<tokenp>0; // initial lhs is already on the stack from "rules"
-			    $$ = new Token( "rhs", _RHS );
-			    //cerr << "  rhs: " << $$->text << "(" << $$ << ")" << endl;
-			    $<tokenp>0->left = $$;
-			}
-		| rhs lhs
-			{
-			    //cerr << "rhs2: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
-			    Token *temp = new Token( "rule", _RULE );
-			    rulestart->addLeftTail( temp );
-			    temp->down = $2;
-			    $$ = new Token( "rhs", _RHS );
-			    //cerr << "  rhs: "  << $$->text << "(" << $$ << ")" << endl;
-			    $2->left = $$;
-			}
-		| rhs ';' lhs
-			{
-			    //cerr << "rhs3: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ") " << $3->text << "(" << $3 << ")" << endl;
-			    $1->addDownLeftTail( $2 );
-			    Token *temp = new Token( "rule", _RULE );
-			    rulestart->addLeftTail( temp );
-			    temp->down = $3;
-			    $$ = new Token( "rhs", _RHS );
-			    //cerr << "  rhs: "  << $$->text << "(" << $$ << ")" << endl;
-			    $3->left = $$;
-			}
-		| rhs prod
-			{
-			    //cerr << "rhs4: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
-			    $1->addDownLeftTail( $2 );
-			    $$ = $1;
-			}
-		| rhs '|'
-			{
-			    //cerr << "rhs5: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
-			    $1->addDownLeftTail( $2 );
-			    $$ = new Token( "rhs", _RHS );
-			    $1->left = $$;
-			    //cerr << "  rhs: "  << $$->text << "(" << $$ << ")" << endl;
-			}
-		;
-
-prod		: action
-		| IDENTIFIER
-		| CHARACTER
-		| prec
-		;
-
-prec		: PREC name
-			{
-			    //cerr << "prec: " << $1->text << "(" << $1 << ") " << $2->text << "(" << $2 << ")" << endl;
-			    $1->left = $2;
-			    $$ = new Token( "prec", _PREC );
-			    $$->down = $1;
-			}
-		;
-
-action		: '{'
-			{ lexC(); }
-		  ccode_opt
-			{
-			    // Remove the trailing '}' added in lex.
-			    string temp( lexYacc() );
-			    $<tokenp>$ = new Token( temp.substr( 0, temp.length() - 1 ), CODE );
-			}
-		  '}'
-			{
-			    $1->left = $<tokenp>4;
-			    $<tokenp>4->left = $5;
-			    $$ = new Token( "action", _ACTION );
-			    $$->down = $1;
-			}
-		;
-
-usersection_opt	: /* empty */
-			{
-			    //cerr << "usersection_opt" << endl;
-			    // attach remaining WS to fictitious code
-			    Token *temp = new Token( "", ws_list, CODE );
-			    $$ = new Token( "usersection_opt", _USERSECTION_OPT );
-			    $$->down = temp;
-			}
-		| MARK
-			{ lexC(); }
-		  ccode_opt
-			{
-			    Token *temp = new Token( lexYacc(), CODE );
-			    //cerr << "usersection_opt: " << $1->text << " " << temp->text << endl;
-			    $1->left = temp;
-			    $$ = new Token( "usersection_opt", _USERSECTION_OPT );
-			    $$->down = $1;
-			}
-		;
-
-ccode_opt	: /* empty */			{}
-		| blocks
-		;
-
-// This rule matches internal braces "{}" in C code to the level of the braces of a union/action.  These
-// internal braces are returned as Tokens from the lexer but are unused because the braces are already
-// concatenated into the code string built by the lexer. Therefore, the tokens for the braces are immediately
-// deleted.
-
-blocks		: '{' { delete $1; } ccode_opt '}' { delete $4; }
-		| blocks '{' { delete $2; } ccode_opt '}' { delete $5; }
-		;
-%%
-
-/* Local Variables: */
-/* fill-column: 110 */
-/* compile-command: "gmake" */
-/* End: */
