Fehler im Parser behoben: castexpression und primitive Typen entfernt

This commit is contained in:
JanUlrich 2015-06-10 13:17:06 +02:00
parent 21cf019ac4
commit aa5bb3c073
2 changed files with 1241 additions and 1363 deletions

File diff suppressed because it is too large Load Diff

View File

@ -44,7 +44,7 @@ void initUsedIdsToCheck() {
}
//PL 05-07-30 eingefuegt. ENDE
//LUAR 07-05-29 Anfang für Wildcard Test
//LUAR 07-05-29 Anfang f<EFBFBD>r Wildcard Test
public Menge<Pair> testPair = new Menge<Pair>();
//LUAR 07-05-29 Ende
%}
@ -158,9 +158,11 @@ public Menge<Pair> testPair = new Menge<Pair>();
%type <UsedId> interfacetype
%type <InterfaceList> interfaces
%type <InterfaceList> extendsinterfaces
/*
%type <BaseType> integraltype
%type <BaseType> numerictype
%type <BaseType> primitivetype
*/
%type <RefType> referencetype
%type <RefType> classtypelist
%type <Type> type
@ -236,7 +238,7 @@ public Menge<Pair> testPair = new Menge<Pair>();
%type <Block> constructorbody
%type <Statement> explicitconstructorinvocation
%type <Method> staticinitializer
%type <CastExpr> castexpression
// %type <CastExpr> castexpression // auskommentiert von Andreas Stadelmeier
%type <ParaList> paralist
%type <Menge> typelist parameter
%type <WildcardType> wildcardparameter
@ -712,7 +714,7 @@ classorinterfacetype : name parameter
{
if ($2 != null) {
//$1.set_ParaList($2.get_ParaList());
$1.set_ParaList($2);//Änderung von Andreas Stadelmeier. Type statt GenericVarType
$1.set_ParaList($2);//<EFBFBD>nderung von Andreas Stadelmeier. Type statt GenericVarType
/* otth: originale (also diese) Parameterliste retten */
//((UsedId)$1).vParaOrg = new Menge<Type>( $2.get_ParaList() );
}
@ -743,7 +745,7 @@ typelist : type
}
/* PL 05-07-28 erg<72>nzt, weil jeder classorinterfacetype auch parametrisiert sein kann */
//TODO: Das hier ist möglicherweise falsch. Ein Typ hat keine parameterliste, nur eine Liste von RefTypes
//TODO: Das hier ist m<EFBFBD>glicherweise falsch. Ein Typ hat keine parameterliste, nur eine Liste von RefTypes
parameter : { $$ = null; }
| '<' typelist '>' //'<'paralist'>'//typelist statt
{
@ -812,9 +814,9 @@ abstractmethoddeclaration : methodheader ';' ;
/*
added by Andreas Stadelmeier, a10023
Bei Lokalen Variablen ist eine initialisierung der Variablen während der Deklarisierung nicht erlaubt.
Bei Lokalen Variablen ist eine initialisierung der Variablen w<EFBFBD>hrend der Deklarisierung nicht erlaubt.
Beispiel: var = 2;
Bei einer lokalen Variable lässt sich hier nicht ermitteln ob die Variable deklariert werden soll oder bereits deklariert wurde und ihr nur ein Wert zugewiesen werden soll.
Bei einer lokalen Variable l<EFBFBD>sst sich hier nicht ermitteln ob die Variable deklariert werden soll oder bereits deklariert wurde und ihr nur ein Wert zugewiesen werden soll.
Dieses Problem ist bei Feldern nicht der Fall.
*/
fielddeclarator :
@ -860,7 +862,7 @@ fielddeclaration : type fielddeclarator ';'
$$=$1;
}
| genericdeclarationlist type fielddeclarator ';'
{//angefügt von Andreas Stadelmeier
{//angef<EFBFBD>gt von Andreas Stadelmeier
$3.setType($2);
$3.setGenericParameter($1);
$$=$3;
@ -1161,15 +1163,7 @@ methodheader :genericdeclarationlist type methoddeclarator
}
type : primitivetype
{
$$=$1;
}
|primitivetype '[' ']'
{
$1.setArray(true);
}
|referencetype
type : referencetype
{
$$=$1;
}
@ -1177,6 +1171,17 @@ type : primitivetype
{
$1.setArray(true);
}
/* auskommentiert von Andreas Stadelmeier
|primitivetype
{
$$=$1;
}
|primitivetype '[' ']'
{
$1.setArray(true);
}
*/
variabledeclarators : variabledeclarator
{
FieldDeclaration IVD = new FieldDeclaration($1.getOffset());
@ -1286,20 +1291,18 @@ methoddeclarator :IDENTIFIER '(' ')'
$$ = met_para;
}
/* auskommentiert von Andreas Stadelmeier
primitivetype :BOOLEAN
{
BooleanType BT = new BooleanType(null);
/* #JB# 05.04.2005 */
/* ########################################################### */
//BT.setName($1.getLexem());
/* ########################################################### */
$$=BT;
}
|numerictype
{
$$=$1;
}
*/
referencetype :classorinterfacetype
{
@ -1357,7 +1360,7 @@ formalparameter : type variabledeclaratorid
{
FormalParameter FP = new FormalParameter($2);
FP.setType($1);
//FP.set_DeclId($2); //auskommentiert von Andreas Stadelmeier. DeclId wird nun dem Konstruktor von FormalParameter übergeben.
//FP.set_DeclId($2); //auskommentiert von Andreas Stadelmeier. DeclId wird nun dem Konstruktor von FormalParameter <EFBFBD>bergeben.
$$=FP;
}
@ -1408,11 +1411,12 @@ argumentlist : expression
$1.expr.addElement($3);
$$=$1;
}
/* auskommentiert von Andreas Stadelmeier
numerictype :integraltype
{
$$=$1;
}
*/
variabledeclaratorid : IDENTIFIER
{
@ -1469,24 +1473,18 @@ expression :assignmentexpression
$$=$1;
}
/* auskommentiert von Andreas Stadelmeier
integraltype :INT
{
IntegerType IT = new IntegerType(null);
/* #JB# 05.04.2005 */
/* ########################################################### */
//IT.setName($1.getLexem());
/* ########################################################### */
$$=IT;
}
| CHAR
{
CharacterType CT = new CharacterType(null);
/* #JB# 05.04.2005 */
/* ########################################################### */
//CT.setName($1.getLexem());
/* ########################################################### */
$$=CT;
}
*/
localvariabledeclaration : type variabledeclarators
{
@ -1802,7 +1800,7 @@ conditionalorexpression : conditionalandexpression
$$=LogOr;
}
// LambdaExpression eingefügt von Andreas Stadelmeier, a10023:
// LambdaExpression eingef<EFBFBD>gt von Andreas Stadelmeier, a10023:
lambdaassignmentoperator : LAMBDAASSIGNMENT
{
@ -2176,7 +2174,9 @@ unaryexpressionnotplusminus : postfixexpression {$$=$1;}
NE.set_Expr($2);
$$=NE;
}
/* auskommentiert von Andreas Stadelmeier
| castexpression {$$=$1;}
*/
exclusiveorexpression :andexpression {$$=$1;}
| exclusiveorexpression '^' andexpression //{
@ -2222,13 +2222,17 @@ literal : INTLITERAL {IntLiteral IL = new IntLiteral();
$$=NN;
}
castexpression : '(' primitivetype ')' unaryexpression
/* auskommentiert von Andreas Stadelmeier
//Anmerkung: Ursprünglich Stand hier: "castexpression : '(' primitivetype ')' unaryexpression"
//Dies ist allerdings falsch. Der jetzige Stand führt jedoch zu reduce-Konflikt mit Lambda Expression
castexpression : '(' type ')' unaryexpression
{
CastExpr CaEx=new CastExpr($4.getOffset(),$4.getVariableLength());
CaEx.set_Type($2);
CaEx.set_Expr($4);
$$=CaEx;
}
*/
//| '(' expression ')' unaryexpressionnotplusminus
andexpression :equalityexpression