diff --git a/CSharpTranslator/antlr3/src/cs2j/CLR/cs2j.cs b/CSharpTranslator/antlr3/src/cs2j/CLR/cs2j.cs
index f389d13..d683ba1 100644
--- a/CSharpTranslator/antlr3/src/cs2j/CLR/cs2j.cs
+++ b/CSharpTranslator/antlr3/src/cs2j/CLR/cs2j.cs
@@ -231,7 +231,7 @@ namespace RusticiSoftware.Translator.CSharp
w.Close();
}
}
- // keving: comment out for now doFile(new FileInfo(args[i]), ".cs", translateFile, exclude); // parse it
+ // keving: comment out for now doFile(new FileInfo(args[i]), ".cs", translateFile, exclude); // parse it
if (enumXmlWriter != null)
{
enumXmlWriter.WriteEndElement();
@@ -358,17 +358,18 @@ namespace RusticiSoftware.Translator.CSharp
///
private static void DumpNodes(CommonTreeNodeStream nodes)
{
- // Dump out nodes if -n on command line
- // if (Util.Args.IsFlagSet("-n"))
- // {
Console.ForegroundColor = ConsoleColor.Magenta;
Console.WriteLine("Nodes");
int spaces = 0;
string str_spaces = " ";
object o_prev = string.Empty;
- for (int n = 0; n < nodes.Count; ++n)
+ //for (int n = 0; n < nodes.Count; ++n)
+ object o = nodes.NextElement();
+ while (!nodes.IsEndOfFile(o))
{
- object o = nodes.Get(n);
+ //object o = nodes.Get(n);
+ //object o = nodes[n];
+
if (o.ToString() == "DOWN")
{
spaces += 2;
@@ -385,13 +386,13 @@ namespace RusticiSoftware.Translator.CSharp
Console.Write(" {0}", o_prev.ToString());
o_prev = o;
+ o = nodes.NextElement();
}
if (o_prev.ToString() != "UP" && o_prev.ToString() != "DOWN")
Console.WriteLine(" {0}", o_prev.ToString());
Console.ResetColor();
- //}
}
-
+
// Here's where we do the real work...
public static void addNetTranslation(string fullName, Stream s)
{
@@ -406,8 +407,8 @@ namespace RusticiSoftware.Translator.CSharp
if (t != null)
{
// A prescan of all files to build an environment mapping qualified name to typereptemplate
- // CSharpEnvBuilder envBuilder = new CSharpEnvBuilder();
- // envBuilder.compilationUnit(t, null, appEnv);
+ // CSharpEnvBuilder envBuilder = new CSharpEnvBuilder();
+ // envBuilder.compilationUnit(t, null, appEnv);
}
}
diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/PreProcessor.cs b/CSharpTranslator/antlr3/src/cs2j/CSharp/PreProcessor.cs
index 3ec54ea..d24e2f7 100644
--- a/CSharpTranslator/antlr3/src/cs2j/CSharp/PreProcessor.cs
+++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/PreProcessor.cs
@@ -1,15 +1,15 @@
// PreProcessor.cs
//
+// Andrew Bradnan 2009-2010
+// andrew.bradnan@gmail.com
using System;
-using System.Collections;
using System.Collections.Generic;
using System.Text;
using Antlr.Runtime;
using System.Diagnostics;
-using Debug = System.Diagnostics.Debug;
-namespace RusticiSoftware.Translator.CSharp
+namespace Browse
{
/// PreProcessor
/// The lexer preprocesses the CSharp code.
@@ -25,33 +25,14 @@ namespace RusticiSoftware.Translator.CSharp
Processing.Push(true);
// Grab what's defined from the command line
- //string[] args = Environment.GetCommandLineArgs();
- //for(int n = 0; n < args.Length; ++n)
- //{
- // if (args[n] == "-D")
- // if ((n + 1) < args.Length)
- // MacroDefines.Add(args[n + 1], string.Empty);
- //}
+ string[] args = Environment.GetCommandLineArgs();
+ for(int n = 0; n < args.Length; ++n)
+ {
+ if (args[n] == "-D")
+ if ((n + 1) < args.Length)
+ MacroDefines.Add(args[n + 1], string.Empty);
+ }
}
-
- public PreProcessor(ICharStream input)
- {
- // By default we are preprocessing input
- Processing.Push(true);
-
- base.CharStream = input;
-
- }
-
- ///
- /// Add a macro variable to the environment
- ///
- /// Name of macro to define
- public void AddDefine(string define)
- {
- MacroDefines.Add(define, string.Empty);
- }
-
public override void mTokens()
{
base.mTokens();
@@ -99,7 +80,8 @@ namespace RusticiSoftware.Translator.CSharp
///
public override String GetErrorMessage(RecognitionException e, String[] tokenNames)
{
- IList stack = GetRuleInvocationStack(e, this.GetType().Name);
+ IList stack = GetRuleInvocationStack(e, this.GetType().Name);
+ String msg = null;
StringBuilder sb = new StringBuilder();
sb.Append("\r\n");
foreach (object o in stack)
diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g
index 6a8d319..7f4c725 100644
--- a/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g
+++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g
@@ -8,47 +8,56 @@
grammar cs;
-
options {
backtrack=true;
memoize=true;
output=AST;
language=CSharp2;
}
-
+
tokens
{
+ ARGUMENTS;
ASSIGNMENT;
BLOCK;
CAST_EXPRESSION;
CLASS_DECL;
+ CLASS_INHERITANCE;
DELEGATE_DECL;
ELSE;
+ EMPTY_BODY;
ENUM_DECL;
EXPRESSION;
FIELD_DECL;
+ FIXED_PARAMETER;
+ ID;
IF;
INTERFACE_DECL;
INVOCATION_EXPRESSION;
+ LOCAL_VAR;
LOCAL_VARIABLE_DECLARATOR;
MEMBER_ACCESS;
METHOD_DECL;
NAMESPACE_DECL;
NAMESPACE_OR_TYPE_NAME;
+ NON_ASSIGNMENT_EXPRESSION;
+ NSTN;
PREDEFINED_TYPE;
+ PRIMARY;
PROPERTY_DECLARATION;
QID_PART;
- RETURN_TYPE;
+ TYPE;
+ TYPE_NAME;
UNARY_EXPRESSION;
USING_DIRECTIVE;
-
+ VARIABLE_DECLARATOR;
+
TELEMENT;
TMEMBER;
- TINVOCATION;
+ TINVOCATION;
}
-
+
@lexer::header {
- using System.Collections.Generic;
using System.Diagnostics;
using Debug = System.Diagnostics.Debug;
}
@@ -66,10 +75,7 @@ tokens
@header
{
- using System.Collections.Generic;
using System.Text;
-
-
}
/********************************************************************************************
@@ -81,27 +87,11 @@ compilation_unit:
// extern_alias_directives?
using_directives?
global_attributes?
- namespace_declaration?
- namespace_body
+ namespace_body? // specific namespace or in the global namespace
;
namespace_declaration:
'namespace' qualified_identifier namespace_block ';'?
-> ^(NAMESPACE_DECL 'namespace' qualified_identifier namespace_block ';'?) ;
-qualified_identifier:
- identifier ('.' identifier)* ;
-
-qid: // qualified_identifier v2
- qid_start qid_part* ;
-qid_start:
- identifier ('::' identifier)? generic_argument_list?
- | 'this'
- | 'base'
- | predefined_type
- | literal ; // 0.ToString() is legal
-qid_part:
- access_operator identifier generic_argument_list?
- -> ^(QID_PART access_operator identifier generic_argument_list?) ;
-
namespace_block:
'{' namespace_body '}' ;
namespace_body:
@@ -134,14 +124,31 @@ type_declaration:
qualified_alias_member:
identifier '::' identifier generic_argument_list? ;
+// Identifiers
+qualified_identifier:
+ identifier ('.' identifier)* ;
+
+qid: // qualified_identifier v2
+ qid_start qid_part* ;
+qid_start:
+ identifier ('::' identifier)? generic_argument_list?
+ | 'this'
+ | 'base'
+ | predefined_type
+ | literal ; // 0.ToString() is legal
+qid_part:
+ access_operator identifier generic_argument_list?
+ -> ^(QID_PART access_operator identifier generic_argument_list?) ;
+
+
// B.2.1 Basic Concepts
namespace_name
: namespace_or_type_name ;
type_name:
- namespace_or_type_name ;
+ namespace_or_type_name -> ^(TYPE_NAME namespace_or_type_name) ;
namespace_or_type_name:
- id1 = identifier ga1 = generic_argument_list? ('::' id2 = identifier ga2 = generic_argument_list?)? ('.' id3 = identifier ga3 = generic_argument_list?)*
- -> ^(NAMESPACE_OR_TYPE_NAME $id1 $ga1? ('::' $id2 $ga2?)? ('.' $id3 $ga3?)* )
+ id1 = identifier ga1 = generic_argument_list? ('::' id2 = identifier ga2 = generic_argument_list?)? ('.' id3 += identifier ga3 += generic_argument_list?)*
+ -> ^(NAMESPACE_OR_TYPE_NAME ^(NSTN $id1 $ga1?) ^(NSTN '::' $id2 $ga2?)? ^(NSTN $id3 $ga3?)*)
// | qualified_alias_member (the :: part)
;
@@ -190,14 +197,15 @@ attribute_argument_expression:
/* I'm going to ignore the mostly semantic bnf in the C Sharp spec and just do syntax */
type:
- (type_name | predefined_type) rank_specifiers '*'*
- | type_name '*'+
- | type_name '?'
- | type_name
- | predefined_type '*'+
- | predefined_type '?'
- | predefined_type
- | 'void' '*'+ ;
+ (type_name | predefined_type) rank_specifiers '*'* ->
+ ^(TYPE type_name? predefined_type? rank_specifiers '*'*)
+ | type_name '*'+ -> ^(TYPE type_name '*'+)
+ | type_name '?' -> ^(TYPE type_name '?')
+ | type_name -> ^(TYPE type_name)
+ | predefined_type '*'+ -> ^(TYPE predefined_type '*'+)
+ | predefined_type '?' -> ^(TYPE predefined_type '?')
+ | predefined_type -> ^(TYPE predefined_type)
+ | 'void' '*'+ -> ^(TYPE 'void' '*'+) ;
non_nullable_type:
(type_name | predefined_type) rank_specifiers '*'*
| type_name '*'+
@@ -240,6 +248,13 @@ type_variable_name:
expression:
non_assignment_expression -> ^(EXPRESSION non_assignment_expression)
| assignment -> ^(EXPRESSION assignment);
+non_assignment_expression:
+ conditional_expression
+ | lambda_expression
+ | query_expression ;
+assignment:
+ unary_expression assignment_operator expression
+ -> ^(ASSIGNMENT unary_expression assignment_operator expression) ;
unary_expression:
cast_expression // primary_expression... has parenthesized_expression
| '+' unary_expression
@@ -252,6 +267,8 @@ unary_expression:
| primary_or_array_creation_expression '++'? '--'? -> ^(UNARY_EXPRESSION primary_or_array_creation_expression '++'? '--'?)
| pointer_indirection_expression
| addressof_expression ;
+assignment_operator:
+ '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>' '>=' ;
pre_increment_expression:
'++' unary_expression ;
pre_decrement_expression:
@@ -260,13 +277,6 @@ pointer_indirection_expression:
'*' unary_expression ;
addressof_expression:
'&' unary_expression ;
-non_assignment_expression:
- conditional_expression
- | lambda_expression
- | query_expression;
-assignment:
- unary_expression assignment_operator expression
- -> ^(ASSIGNMENT unary_expression assignment_operator expression) ;
variable_reference:
expression ;
@@ -293,31 +303,8 @@ primary_or_array_creation_expression:
primary_expression
| array_creation_expression ;
-texpr:
- tmember ;
-
-//tinvocation:
-// te1=telement arguments? (access_operator te2=telement arguments?)*;
-
-tinvocation:
- tmember tinvocation_part? ;
-tinvocation_part:
- arguments+ (access_operator! tinvocation)
- | arguments+ telement_part
- | arguments+ ;
-
-telement:
- tmember telement_part? ;
-telement_part:
- bracket_expression+ (access_operator telement) -> ^(TELEMENT bracket_expression+ telement)
- | bracket_expression+ tinvocation_part -> ^(TELEMENT bracket_expression+ tinvocation_part)
- | bracket_expression+ -> ^(TELEMENT bracket_expression) ;
-
-tmember:
- identifier (access_operator identifier)* -> ^(TMEMBER identifier+) ;
-
primary_expression:
- primary_expression_start primary_expression_part*
+ primary_expression_start primary_expression_part* -> ^(PRIMARY primary_expression_start primary_expression_part*)
| delegate_creation_expression // new FooDelegate (int X, string Y)
| anonymous_object_creation_expression // new {int X, string Y}
| sizeof_expression // sizeof (struct)
@@ -358,7 +345,7 @@ brackets_or_arguments:
access_operator:
'.' | '->' ;
arguments:
- '(' argument_list? ')' ;
+ '(' argument_list? ')' -> ^(ARGUMENTS argument_list*) ;
bracket_expression:
'[' expression_list? ']' ;
@@ -552,8 +539,6 @@ array_initializer:
variable_initializer_list:
variable_initializer (',' variable_initializer)* ;
// >>= check needed (no whitespace)
-assignment_operator:
- '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>' '>=' ;
lambda_expression:
anonymous_function_signature '=>' anonymous_function_body;
anonymous_function_signature:
@@ -632,8 +617,8 @@ class_modifiers:
class_modifier:
'new' | 'public' | 'protected' | 'internal' | 'private' | 'abstract' | 'sealed' | 'static' | 'unsafe';
class_base:
- ':' class_type (',' interface_type_list)?
- | ':' interface_type_list ;
+ ':' class_type (',' interface_type_list)? -> ^(CLASS_INHERITANCE class_type interface_type_list?)
+ | ':' interface_type_list -> ^(CLASS_INHERITANCE interface_type_list) ;
interface_type_list:
t += type_name (',' t += type_name)*
-> $t+;
@@ -684,6 +669,11 @@ constant_modifiers:
constant_modifier+ ;
constant_modifier:
'new' | 'public' | 'protected' | 'internal' | 'private' ;
+constant_declarators:
+ constant_declarator (',' constant_declarator)* ;
+constant_declarator:
+ identifier ('=' constant_expression)? ;
+
field_declaration:
attributes? field_modifiers? type variable_declarators ';'
-> ^(FIELD_DECL attributes? field_modifiers? type variable_declarators)
@@ -693,10 +683,10 @@ field_modifiers:
field_modifier:
'new' | 'public' | 'protected' | 'internal' | 'private' | 'static' | 'readonly' | 'volatile' | 'unsafe' ;
variable_declarators:
- variable_declarator (',' variable_declarator)* ;
+ vd += variable_declarator (',' vd += variable_declarator)* -> $vd+;
variable_declarator:
// identifier ('=' variable_initializer)? ;
- type_name ('=' variable_initializer)? ; // eg. event EventHandler IInterface.VariableName;
+ type_name ('=' variable_initializer)? -> ^(VARIABLE_DECLARATOR type_name ('=' variable_initializer)?) ; // eg. event EventHandler IInterface.VariableName;
variable_initializer:
expression | array_initializer ;
// | literal ;
@@ -704,9 +694,9 @@ method_declarations:
method_declaration+ ;
method_declaration:
method_header method_body
- -> ^(METHOD_DECL method_header method_body);
-method_header:
- attributes? method_modifiers? 'partial'? return_type (member_name | 'get' | 'set') generic_parameter_list?
+ -> ^(METHOD_DECL method_header method_body?);
+method_header:
+ attributes? method_modifiers? 'partial'? return_type member_name generic_parameter_list?
'(' formal_parameter_list? ')' type_parameter_constraints_clauses? ;
method_modifiers:
method_modifier+ ;
@@ -714,27 +704,30 @@ method_modifier:
'new' | 'public' | 'protected' | 'internal' | 'private' | 'static' | 'virtual' | 'sealed' | 'override'
| 'abstract' | 'extern' | 'unsafe' ;
return_type:
- type -> ^(RETURN_TYPE type)
- | 'void' '*'* -> ^(RETURN_TYPE 'void' '*'*);
+ type
+ | 'void' '*'* -> ^(TYPE ^(PREDEFINED_TYPE 'void' '*'*));
method_body:
block ;
formal_parameter_list:
fp += formal_parameter (',' fp += formal_parameter)*
-> $fp+ ;
formal_parameter:
- fixed_parameter | parameter_array | '__arglist'; // __arglist is undocumented, see google
+ fixed_parameter
+ | parameter_array
+ | '__arglist'; // __arglist is undocumented, see google
fixed_parameters:
fixed_parameter+ ;
// 4.0
fixed_parameter:
- attributes? parameter_modifier? type identifier default_argument?;
+ attributes? parameter_modifier? type identifier default_argument?
+ -> ^(FIXED_PARAMETER attributes? parameter_modifier? type identifier default_argument?) ;
// 4.0
default_argument:
'=' expression;
parameter_modifier:
'ref' | 'out' | 'this' ;
parameter_array:
- attributes? 'params'? array_type identifier ;
+ attributes? 'params' type identifier ;
property_declaration:
attributes? property_modifiers? type member_name '{' accessor_declarations '}'
-> ^(PROPERTY_DECLARATION attributes? property_modifiers? type member_name '{' accessor_declarations '}') ;
@@ -952,7 +945,7 @@ fixed_pointer_initializer:
unsafe_statement:
'unsafe' block;
block:
- ';' -> ^(BLOCK)
+ ';' ->
| '{' statement_list? '}' -> ^(BLOCK statement_list?);
statement_list:
statement+ ;
@@ -964,7 +957,8 @@ declaration_statement:
(local_variable_declaration
| local_constant_declaration) ';' ;
local_variable_declaration:
- local_variable_type local_variable_declarators ;
+ local_variable_type local_variable_declarators ->
+ ^(LOCAL_VAR local_variable_type local_variable_declarators);
local_variable_type:
type
| 'var'
@@ -982,11 +976,6 @@ stackalloc_initializer:
'stackalloc' unmanaged_type '[' expression ']' ;
local_constant_declaration:
'const' type constant_declarators ;
-constant_declarators:
- constant_declarator (',' constant_declarator)* ;
-constant_declarator:
- identifier ('=' constant_expression)? ;
-// identifier ('=' literal)? ;
expression_statement:
expression ';' ;
statement_expression:
@@ -1086,8 +1075,8 @@ yield_statement:
| ('yield' 'break' ';') ;
identifier:
- IDENTIFIER
- | also_keyword ;
+ IDENTIFIER -> ^(ID IDENTIFIER)
+ | also_keyword -> ^(ID also_keyword);
literal:
Real_literal
@@ -1106,10 +1095,10 @@ keyword:
also_keyword:
'add' | 'alias' | 'assembly' | 'module' | 'field' | 'event' | 'method' | 'param' | 'property' | 'type'
- | 'yield' | 'from' | 'into' | 'join' | 'on' | 'where' | 'orderby' | 'group' | 'by' | 'ascending' | 'descending'
- | 'equals' | 'select' | 'pragma' | 'let' | 'remove' | 'set' | 'var' | '__arglist';
+ | 'yield' | 'from' | 'into' | 'join' | 'on' | 'where' | 'orderby' | 'group' | 'by' | 'ascending'
+ | 'descending' | 'equals' | 'select' | 'pragma' | 'let' | 'remove' | 'set' | 'var' | '__arglist' | 'dynamic';
///////////////////////////////////////////////////////
-// Lexer Section
+// Lexar Section
///////////////////////////////////////////////////////
TRUE : 'true';
diff --git a/CSharpTranslator/antlr3/src/cs2j/README.txt b/CSharpTranslator/antlr3/src/cs2j/README.txt
index 35c8150..c3ab13c 100644
--- a/CSharpTranslator/antlr3/src/cs2j/README.txt
+++ b/CSharpTranslator/antlr3/src/cs2j/README.txt
@@ -1,21 +1,15 @@
-
-- Rebuild cs parser
+cd "C:\Documents and Settings\developer\My Documents\gitrepos\cs2j\CSharpTranslator\antlr3\src\cs2j\CSharp"
+java -Xmx512m -jar ..\..\..\jar\antlr-3.3.jar cs.g
-cd My\ Documents/gitrepos/cs2j/CSharpTranslator/antlr3
-
-java -Xmx512m -jar jar\antlr-3.2.jar src\cs2j\CSharp\cs.g
-java -Xmx512m -jar jar\antlr-3.2.jar -debug src\cs2j\CSharp\cs.g
-
--- From git bash
-java -Xmx512m -jar jar/antlr-3.2.jar -fo src/cs2j/CSharp src/cs2j/CSharp/cs.g
-
-src\cs2j\bin\Debug\cs2j.exe -netdir "c:\Documents and Settings\DevUser\My Documents\TrunkBranch\CS2JLibrary" -appdir "c:\Documents and Settings\DevUser\My Documents\Visual Studio 2005\Projects\ScormEngineNetTrunk\src\app\ScormEngine.Core" "c:\Documents and Settings\DevUser\My Documents\Visual Studio 2005\Projects\ScormEngineNetTrunk\src\app\ScormEngine.Core\Logic"
-
-C:\Documents and Settings\DevUser\My Documents\gitrepos\CSharpTranslator>src\cs2
-j\bin\Debug\cs2j.exe -netdir "c:\Documents and Settings\DevUser\My Documents\Tru
-nkBranch\CS2JLibrary" -appdir "c:\Documents and Settings\DevUser\My Documents\Vi
-sual Studio 2005\Projects\ScormEngineNetTrunk\src\app\ScormEngine.Core\Util\Cach
-ing\NullCache.cs" "c:\Documents and Settings\DevUser\My Documents\Visual Studio
-2005\Projects\ScormEngineNetTrunk\src\app\ScormEngine.Core\Logic"
+-- parse one file
src\cs2j\bin\Debug\cs2j.exe -mindriver C:\Documents and Settings\DevUser\My Documents\kgtemp\getClass.cs
+
+-- parse Logic
+
+cd "C:\Documents and Settings\developer\My Documents\gitrepos\cs2j\CSharpTranslator\antlr3"
+
+src\cs2j\bin\Debug\cs2j.exe -netdir "c:\Documents and Settings\s\developer\My Documents\gitrepos\cs2j\CS2JLibrary\NetTranslations" -appdir "c:\Documents and Settings\developer\My Documents\Visual Studio 2005\Projects\ScormEngineNetTrunk\src\app\ScormEngine.Core" "c:\Documents and Settings\developer\My Documents\Visual Studio 2005\Projects\ScormEngineNetTrunk\src\app\ScormEngine.Core\Logic"
+
+