working "C++ / ISO 14882 parser" {
	description {
		\textit{BNF-parsing} script of the C++ grammar to be able to extract the AST and to
		provide smart and powerful C++ source file transformation.
	}

	state: progress;
}

working "UML / Rational ROSE 98" {
	description {
		\textit{BNF-parsing} script of a \samp{"*.mdl"} file generated by Rational ROSE for
		extracting class diagrams to start.
	}

	state: pending;
}

working "Modeling language" {
	description {
		\textit{BNF-parsing} script of a tailorable modeling language and some
		\textit{template-based} scripts to offer useful transversal features for the
		software infrastructure.
	}

	state: pending;
}


theme "XML" {
	description {
		This section proposes some scripts to work on XML, which isn't the native manner
		to represent the knowledge in \CodeWorker\ but that cannot be ignored as a very
		convenient and widely admitted format for expressing specifications.
	}

	subject "XML parser" {
		description {
			A script for scanning a XML file in general (with no DTD) and for populating a parse
			tree of \CodeWorker\ that conforms to the logic structure of the XML hierarchy.
		}
		script "XMLparser.cwp";
		example "XMLparser-example1.cws";
	}

	subject "DTD parser" {
		description {
			A script for building the AST (Abstract Syntactic Tree) of a DTD file. This AST
			might be used for translating from a DTD to a \textit{template-based} script or
			for any other application.
		}
		script "DTDparser.cwp";
		example link "DTDtoBNF-example1.cws";
	}

	subject "XSL parser" {
		description {
			A script for building the AST (Abstract Syntactic Tree) of a XSL file. This AST
			might be used for translating from XSL to \TLcleaveland\ (Template Language of
			Craig Cleaveland) or to a \textit{template-based} script or for any other application.
		}
		script "XSLparser.cwp";
	}
}

/*
theme "Grammars" {
	description {}

	subject "C++" {
		description {
			\textit{BNF-parsing} script of the C++ grammar to be able to extract the AST and to
			provide smart and powerful C++ source file transformation.
		}
		script "Cpp14882.cwp";
	}
}
*/

/*
theme "Modeling languages" {
	description {}

	subject "Default" {
		description {}
		state pending;
	}

	subject "UML / Rational ROSE 98" {
		description {}
		state pending;
	}
}
*/


theme "Program transformation" {
	description {A program transformation changes the source code, to do optimizations, code intrusion or rewriting.}

	subject "C++ profiling" {
		description {
			Here is a coding pattern that enables to include source code for profiling in the
			C++ function bodies. This transformation doesn't require to construct the AST
			of the C++ source code.
		}
		script "RawProfilingLeader.cws", "RawProfilingCppTransformation.cwp", "RawProfilingCpp.cwt", "RawProfilingHpp.cwt";
		file "RawProfiling.h";
		example "RawProfiling-example1.cws";
	}
}


theme "source-to-source translation" {
	description {
		A source-to-source translation consists on translating a text from a format to
		another. It may require a first pass to extract the parse tree of the text or may
		construct the target on the fly.
	}

	subject "\CodeWorker\ script to HTML" {
		description {
			Translates any CodeWorker script to HTML, highlighting the code according to
			the syntax and linking keywords to the online-documentation.
		}
		script "CWscript2HTML.cwp", "CodeWorker_grammar.cwp";
	}

	subject "DTD to \\textit{BNF-parsing} script" {
		description {
			Translating a DTD to a \CodeWorker\ script isn't a straightforward process, so
			the translation requires first to extract a parse tree of the DTD before
			generating the corresponding \textit{BNF-parsing} script.
		}
		script link "DTDparser.cwp", "DTDtoBNF.cwt";
		example "DTDtoBNF-example1.cws";
	}

	subject "XSL to \\textit{template-based} script" {
		description {
			Translating a XSL file to a \CodeWorker\ script isn't a straightforward process,
			so the translation requires first to extract a parse tree of the XSL file before
			generating the corresponding \textit{template-based} script.\\
			Executing the script will operate the corresponding XSL transformation.
		}
		script "XSLparser.cwp", "XSLtoCodeWorker.cwt";
		example "XSLtoBNF-example1.cws";
	}
}


theme "CGI scripts" {
	description {
		\CodeWorker\ is able to run as a CGI program since version \samp{2.10}. One presents
		some little use-cases for illustrating the advantage of using \CodeWorker\ on the
		\textit{Web server}-side.\\
		The scripts encountered below must be copied on the \textit{Web server}-side, after
		registration of \CodeWorker\ as attached to the \samp{".cwt"} file extension.
	}

	subject "Basic information" {
		description {
			A script for displaying all CGI environment variables and for showing the client
			request.
		}
		script "basicInformation.cwt";
	}

	subject "Simple hit counter" {
		description {
			A script for counting the number of hits by remote host and by date.
		}
		script "hitCounter.cwt", "hitCounterParser.cwp", "hitCounterUpdate.cwt";
	}

	subject "Remote graph generation" {
		description {
			The server generates the \samp{png} class diagram of an object modelling.
		}
		script "classDiagram.cwt", "classDiagramGraphViz.cwt", "CWML.cwp";
	}
}

/*
theme "active libraries" {
	description {
	}

	subject "Business classes" {
	}

	subject "Object walker" {
	}

	subject "Object reader/writer" {
	}

}
*/
