X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=examples%2Fcpp_grammar_code%2Findex.html;fp=examples%2Fcpp_grammar_code%2Findex.html;h=0000000000000000000000000000000000000000;hb=8f403891425dfe131948be97cae4edf21f3f7869;hp=af2afda53bb8fd78d3523d5f3efe3192ba9605f5;hpb=a4d12589f1cd01826814842cde0b3eac95890bc9;p=feisty_meow.git diff --git a/examples/cpp_grammar_code/index.html b/examples/cpp_grammar_code/index.html deleted file mode 100644 index af2afda5..00000000 --- a/examples/cpp_grammar_code/index.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - -Ed's Toolkit - - - - -

Superset C++ Grammar

- -
- -

This work area supports a demonstration of the superset C++ -grammar described in Chapter 5 of Ed Willink's thesis on Meta-Compilation -for C++. It contains working lex and yacc grammars that -enable C++ source to be lexically analysed, then syntactically -analysed without semantic knowlege. The lex and yacc grammar have -their action routines defined by macros in the hope that -reconfiguration may be possible without editing the grammars -directly. The dummy implementations of the yacc macros do nothing -other than count statements and diagnose the back-tracking -behaviour. Users may add their own syntactic level code. A proper -C++ parser needs semantic analysis as well, including correction -of minor misprses at the syntactic level. Semantic interpretaion -is provided by FOG -from which this demonstration is split off.

- -

The work area is self-sufficient, requiring only lex -and yacc, or flex and bison.

- -
- -

Command Line

- -

The test grammar is a simple command line utility, for -analysing a single pre-processed source file -(use CC -E to run just the preprocessor on your source files)..

- -
	grammar [options] < source-file
- -

The full set of command line options is:

- -
	-c	Recognise only C keywords - approximates C rather than C++ parsing
-	-m	Display mark activity.
-	-n	Echo line numbers.
-	-t	Echo source line text.
-	-y	Display yacc diagnostics.
- -

On completion a three line diagnostic summarises the search -activity.

- -
- -

Files

- -

CxxSrc.tgz, CxxNtSrc.tgz -The source distribution kit including a Sun or NT executable.

- -

CxxLexer.l A simple lexer for all C -and/or C++ tokens

- -

CxxParser.y The parser, -automatically extracted from FogParser.y.

- -

CxxToken.hxx, CxxToken.cxx A trivial class used by the -parser to represent each parsed token.

- -

CxxLexing.hxx, CxxLexing.cxx Interface and -implementation of token creation routines for the lexer.

- -

CxxParsing.hxx, CxxParsing.cxx Interface and -implementation of token manioulation routines for the parser.

- -

CxxLexer.cpp, CxxParser.cpp, CxxToken.cpp -Degenerate compilation units for the above.

- -

makefile, makefile.macros, -makefile.unix Unix build scripts

- -

makefile.gmake, makefile.macros, grammar.dsw, -grammar.dsp NT build scripts and -DevStudio workspace and project

- -

sun4o/grammar Built executable (on Unix)

- -

Release/grammar.exe Built executable (on NT)

- -
- -

Unix Builds

- -

The code builds under Solaris 2.5 and with Sun C++ 4.2.

- -
	make sun
- -

or Gnu egcs-1.0.2 release, with flex 2.3.7, bison 1.16

- -
	make gnu
- -
- -

NT Builds

- -

The code builds under NT 4 and has been tested with DevStudio -V6 and cygwin 1.1.

- -

a) cygwin

- -

You need cygwin, the latest version of which is available ftp://sunsite.org.uk:21/Mirrors/sourceware.cygnus.com/pub/cygwin/setup.exe

- -

A slightly easier to install earlier version (used by the -author) is ftp://sunsite.org.uk:21/Mirrors/sourceware.cygnus.com/pub/cygwin/old/cygwin-b20/full.exe

- -

Use a mirror site listed at http://sources.redhat.com/cygwin/mirrors.html.

- -

The older cygwin is a simple standard NT installation - just -run full.exe (with administrator rights) and accept the default -installation paths (gnu tools build them in). The newer cygwin is -much smarter, doing automatic selective downloads - which the -author's firewall messes up.

- -

b) Path configuration

- -

You may want to make cygwin tools accessible from command -prompts so

- -
Start->Settings->ControlPanel
-	System|Environment
-		Add Variable PATH
-		Value C:\cygwin\cygwin-b20\H-i586-cygwin32\BIN
- -

c) DevStudio configuration

- -

You need to configure DevStudio to use cygwin.

- -

In DevStudio:

- -
Tools->Options->Directories
-	Show Directories For Executable files
-	Add C:\cygwin\bin
- -

d) Unpacking

- -

Then use winzip or gunzip to extract all of CxxNtSrc.tgz:

- -
double click in Explorer on CxxNtSrc.tgz
-	Yes to decompress archive to temporary file
-	Wait a few moments
-	Actions...->Extract
-		All Files, to e.g. C:\CxxGrammar, use Folder names, Extract
-	Close Winzip
- -

e) DevStudio build

- -
Double click in Explorer on grammar.dsw
-	If prompted to browse for a SourceSafe project Click No.
-	If prompted to attempt SourceSafe connection in another session click No.
-	Select your preferred configuration (Win32 Debug is default)
-	Select FileView|grammar Files->Targets->executable
-	<Ctrl>F7
-	after a few seconds everything is built
- -

DevStudio reports 0 errors and 1 warnings

- -
Build : warning : failed to (or don't know how to) build 'C:\CxxGrammar\Targets\executable'
- -

The warning is an artefact of fake build targets

- -

Everything in DevStudio is compiled using a makefile.gmake -target which is selected for a <CTRL>F7 in the Workspace -window. Steer clear of the standard DevStudio F7 which builds all -targets: backup then clean then executables then realclean then -test etc. No harm is done but it takes a long time.

- -
- -

Last updated 28 July, 2001.

- -