1
0
mirror of https://github.com/twiglet/cs2j.git synced 2025-01-18 13:15:17 +01:00
cs2j/CSharpTranslator/antlr2/Translator/CSharpParser_README.TXT
2010-05-29 10:08:47 -05:00

140 lines
5.5 KiB
Plaintext

kcsparse - a ECMA-334 C# Grammar Sample for ANTLR 2.7.7
1 December, 2005
Kunle Odutola : kunle UNDERSCORE odutola AT hotmail DOT com
Micheal Jordan
1. INTRODUCTION
Congratulations, you have found 'kcsparse' - a nice YAC#GFA[*]!
We hope you find 'kcsparse' delightful and useful even but, as per the
license under which you may use it, this software is not guaranteed to
work. See LICENSE.TXT for the full text of the license.
----------------------------------------------------------------------
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
2. WHAT'S A YAC#GFA?
Yet Another C# Grammar For ANTLR.
This particular example is called 'kcsparse' and we hope you like it.
It is probably a more complete and usable YAC#GFA than others. It is
deliberately packaged in the style of the samples that are included with
ANTLR itself (and may become one of the standard samples). In any event,
it should just work out-of-the box for many C# source files.
2.1 WHAT kcsparse CAN DO
- Parse C# 1.x source code including some with C# preprocessing directives.
- Build an AST from the C# source.
- Display the AST it builts from C# source.
- Unparse the AST (i.e. pretty prints the AST) back to source code.
2.2 WHAT kcsparse CAN'T DO?
- Full parse and resolve of the input C# source code.
(kcsparse is NOT a C# front-end but, you can build one based on it)
- Parse all C# 1.x source code (esp. those with use of preprocessing directives).
(kcsparse is NOT a full C# 1.0 parser - it particularly fails on C# source
files where simply deleting (or commenting out) all preprocessing directives
results in illegal C# source but, you extend it to be)
- Parse C# source code with C# 2.0 or later features like generics.
(kcsparse is NOT a C# 2.0 parser but, you extend it to be)
- Compile C# source code to MSIL, bytecode or any other lanaguage
(kcsparse is NOT a C# translator/compiler but, you can build one based on it)
- Interpret C# source code
(kcsparse is NOT a C# interpreter but, you can build one based on it)
- Mow your lawns or fetch you a cold beer
(But we would like it to be!)
3. WHAT'S IN THE PACK?
Along with this with file, you should have received the following:
README.TXT This file
LICENSE.TXT Our license for this software
csharp_v1.build NAnt build file
CSharpLexer.g Main C# lexer grammar file
CSharpPreprocessorLexer.g C# lexer grammar file (used for preprocessor directives)
CSharpPreprocessorHooverLexer.g C# lexer grammar file (used for preprocessor directives)
CSharpLexerBase.g Common base for all C# lexer grammars
UnicodeLexerBase.g Common base for unicode-savvy lexer grammars
CSharpParser.g C# parser grammar file
CSharpPrettyPrinter.g C# pretty printer grammar file
CustomHiddenStreamToken.cs Custom IToken class
ASTNode.cs Custom AST node class
ASTNodeFactory.cs Custom ASTFactory class
CodeMaskEnums.cs Helper class
Main.cs Contains sample parsing application
csharp.flex Lexer grammar file for use with C# Flex
testfiles Directory containing test files to test C# parsing
AllCSharpConstructs.cs
Empty.cs
EmptyNamespace.cs
Testing.cs
Using.cs
UsingGlobalAttributes.cs
Tools
csflex.exe C# Flex executable
runtime.dll [supplied with C# Flex]
4. USING kscparse
The easiest way to use kcsparse is to unpack the files into a directory below
the %ANTLR_HOME%/examples/csharp/ directory. This would "install" it just like
any of the other ANTLR C# examples. Be sure to maintain the directory
structure of the archive as shown above.
Then, just type 'nant' (without the single quotes) to build and try kcsparse.
This assumes that the ANTLR C# runtimes files have been compiled and are in the
expected location.
Once it is built, you can also run kcsparse directly yourself:
kcsparse <filename> -- parse the specified <filename>
kcsparse -flex <filename> -- parse the specified <filename> (uses flex lexer)
kcsparse <directory> -- parse all *.cs files in <directory>
kcsparse -flex <directory> -- parse all *.cs files in <directory> (uses flex lexer)
kcsparse -showtree <file_or_directory> -- parse all *.cs files in <file_or_directory> and
display the AST
kcsparse -prettyprint <filename> -- parse <filename> and unparse (pretty-print)
the AST to the console
kcsparse -flex -prettyprint <filename> -- parse <filename> and unparse (pretty-print)
the AST to the console (uses flex lexer)
5. kscparse STATUS
kcsparse still has some bugs. kcsparse is mostly complete but expect a few rough edges.