1
0
mirror of https://github.com/twiglet/cs2j.git synced 2025-01-18 13:15:17 +01:00

add translations for simple types

This commit is contained in:
Kevin Glynn 2011-01-10 11:23:24 +01:00
parent 2a07a862ee
commit 6f76bbc7f9

View File

@ -72,7 +72,7 @@ scope SymTab {
protected TypeRepTemplate ObjectType { protected TypeRepTemplate ObjectType {
get { get {
if (objectType == null) { if (objectType == null) {
objectType = findType("System.Object"); objectType = AppEnv.Search("System.Object");
} }
return objectType; return objectType;
} }
@ -333,9 +333,22 @@ namespace_or_type_name returns [String name, List<string> tyargs]:
type_or_generic { $name = $type_or_generic.name; $tyargs = $type_or_generic.tyargs; } type_or_generic { $name = $type_or_generic.name; $tyargs = $type_or_generic.tyargs; }
| ^('::' namespace_or_type_name type_or_generic) { $name = "System.Object"; } // give up, we don't support these | ^('::' namespace_or_type_name type_or_generic) { $name = "System.Object"; } // give up, we don't support these
| ^(d='.' n1=namespace_or_type_name type_or_generic) { WarningAssert($n1.tyargs == null, $d.token.Line, "Didn't expect type arguments in prefix of type name"); $name = $n1.name + "." + $type_or_generic.name; $tyargs = $type_or_generic.tyargs; } ; | ^(d='.' n1=namespace_or_type_name type_or_generic) { WarningAssert($n1.tyargs == null, $d.token.Line, "Didn't expect type arguments in prefix of type name"); $name = $n1.name + "." + $type_or_generic.name; $tyargs = $type_or_generic.tyargs; } ;
type_or_generic returns [String name, List<String> tyargs]:
(identifier generic_argument_list) => identifier { $name = $identifier.thetext; } generic_argument_list { $tyargs = $generic_argument_list.argTexts; } type_or_generic returns [String name, List<String> tyargs]
| identifier { $name = $identifier.thetext; }; :
(identifier_type generic_argument_list) => t=identifier_type { $name = $identifier_type.thetext; } generic_argument_list { $tyargs = $generic_argument_list.argTexts; }
| t=identifier_type { $name = $identifier_type.thetext; } ;
identifier_type returns [string thetext]
@init {
TypeRepTemplate tyRep = null;
}
@after{
$thetext = $t.thetext;
}:
t=identifier { tyRep = findType($t.thetext); if (tyRep != null) Imports.Add(tyRep.Imports); }
-> { tyRep != null }? IDENTIFIER[$t.tree.Token, tyRep.Java]
-> $t;
qid: // qualified_identifier v2 qid: // qualified_identifier v2
^(access_operator qid type_or_generic) ^(access_operator qid type_or_generic)