Fehler im Parser behoben: castexpression und primitive Typen entfernt
This commit is contained in:
parent
21cf019ac4
commit
aa5bb3c073
File diff suppressed because it is too large
Load Diff
@ -44,7 +44,7 @@ void initUsedIdsToCheck() {
|
|||||||
}
|
}
|
||||||
//PL 05-07-30 eingefuegt. ENDE
|
//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>();
|
public Menge<Pair> testPair = new Menge<Pair>();
|
||||||
//LUAR 07-05-29 Ende
|
//LUAR 07-05-29 Ende
|
||||||
%}
|
%}
|
||||||
@ -158,9 +158,11 @@ public Menge<Pair> testPair = new Menge<Pair>();
|
|||||||
%type <UsedId> interfacetype
|
%type <UsedId> interfacetype
|
||||||
%type <InterfaceList> interfaces
|
%type <InterfaceList> interfaces
|
||||||
%type <InterfaceList> extendsinterfaces
|
%type <InterfaceList> extendsinterfaces
|
||||||
|
/*
|
||||||
%type <BaseType> integraltype
|
%type <BaseType> integraltype
|
||||||
%type <BaseType> numerictype
|
%type <BaseType> numerictype
|
||||||
%type <BaseType> primitivetype
|
%type <BaseType> primitivetype
|
||||||
|
*/
|
||||||
%type <RefType> referencetype
|
%type <RefType> referencetype
|
||||||
%type <RefType> classtypelist
|
%type <RefType> classtypelist
|
||||||
%type <Type> type
|
%type <Type> type
|
||||||
@ -236,7 +238,7 @@ public Menge<Pair> testPair = new Menge<Pair>();
|
|||||||
%type <Block> constructorbody
|
%type <Block> constructorbody
|
||||||
%type <Statement> explicitconstructorinvocation
|
%type <Statement> explicitconstructorinvocation
|
||||||
%type <Method> staticinitializer
|
%type <Method> staticinitializer
|
||||||
%type <CastExpr> castexpression
|
// %type <CastExpr> castexpression // auskommentiert von Andreas Stadelmeier
|
||||||
%type <ParaList> paralist
|
%type <ParaList> paralist
|
||||||
%type <Menge> typelist parameter
|
%type <Menge> typelist parameter
|
||||||
%type <WildcardType> wildcardparameter
|
%type <WildcardType> wildcardparameter
|
||||||
@ -712,7 +714,7 @@ classorinterfacetype : name parameter
|
|||||||
{
|
{
|
||||||
if ($2 != null) {
|
if ($2 != null) {
|
||||||
//$1.set_ParaList($2.get_ParaList());
|
//$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 */
|
/* otth: originale (also diese) Parameterliste retten */
|
||||||
//((UsedId)$1).vParaOrg = new Menge<Type>( $2.get_ParaList() );
|
//((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 */
|
/* 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; }
|
parameter : { $$ = null; }
|
||||||
| '<' typelist '>' //'<'paralist'>'//typelist statt
|
| '<' typelist '>' //'<'paralist'>'//typelist statt
|
||||||
{
|
{
|
||||||
@ -812,9 +814,9 @@ abstractmethoddeclaration : methodheader ';' ;
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
added by Andreas Stadelmeier, a10023
|
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;
|
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.
|
Dieses Problem ist bei Feldern nicht der Fall.
|
||||||
*/
|
*/
|
||||||
fielddeclarator :
|
fielddeclarator :
|
||||||
@ -860,7 +862,7 @@ fielddeclaration : type fielddeclarator ';'
|
|||||||
$$=$1;
|
$$=$1;
|
||||||
}
|
}
|
||||||
| genericdeclarationlist type fielddeclarator ';'
|
| genericdeclarationlist type fielddeclarator ';'
|
||||||
{//angefügt von Andreas Stadelmeier
|
{//angef<EFBFBD>gt von Andreas Stadelmeier
|
||||||
$3.setType($2);
|
$3.setType($2);
|
||||||
$3.setGenericParameter($1);
|
$3.setGenericParameter($1);
|
||||||
$$=$3;
|
$$=$3;
|
||||||
@ -1161,15 +1163,7 @@ methodheader :genericdeclarationlist type methoddeclarator
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
type : primitivetype
|
type : referencetype
|
||||||
{
|
|
||||||
$$=$1;
|
|
||||||
}
|
|
||||||
|primitivetype '[' ']'
|
|
||||||
{
|
|
||||||
$1.setArray(true);
|
|
||||||
}
|
|
||||||
|referencetype
|
|
||||||
{
|
{
|
||||||
$$=$1;
|
$$=$1;
|
||||||
}
|
}
|
||||||
@ -1177,6 +1171,17 @@ type : primitivetype
|
|||||||
{
|
{
|
||||||
$1.setArray(true);
|
$1.setArray(true);
|
||||||
}
|
}
|
||||||
|
/* auskommentiert von Andreas Stadelmeier
|
||||||
|
|primitivetype
|
||||||
|
{
|
||||||
|
$$=$1;
|
||||||
|
}
|
||||||
|
|primitivetype '[' ']'
|
||||||
|
{
|
||||||
|
$1.setArray(true);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
variabledeclarators : variabledeclarator
|
variabledeclarators : variabledeclarator
|
||||||
{
|
{
|
||||||
FieldDeclaration IVD = new FieldDeclaration($1.getOffset());
|
FieldDeclaration IVD = new FieldDeclaration($1.getOffset());
|
||||||
@ -1286,20 +1291,18 @@ methoddeclarator :IDENTIFIER '(' ')'
|
|||||||
$$ = met_para;
|
$$ = met_para;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* auskommentiert von Andreas Stadelmeier
|
||||||
primitivetype :BOOLEAN
|
primitivetype :BOOLEAN
|
||||||
{
|
{
|
||||||
BooleanType BT = new BooleanType(null);
|
BooleanType BT = new BooleanType(null);
|
||||||
/* #JB# 05.04.2005 */
|
|
||||||
/* ########################################################### */
|
|
||||||
//BT.setName($1.getLexem());
|
|
||||||
/* ########################################################### */
|
|
||||||
$$=BT;
|
$$=BT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|numerictype
|
|numerictype
|
||||||
{
|
{
|
||||||
$$=$1;
|
$$=$1;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
referencetype :classorinterfacetype
|
referencetype :classorinterfacetype
|
||||||
{
|
{
|
||||||
@ -1357,7 +1360,7 @@ formalparameter : type variabledeclaratorid
|
|||||||
{
|
{
|
||||||
FormalParameter FP = new FormalParameter($2);
|
FormalParameter FP = new FormalParameter($2);
|
||||||
FP.setType($1);
|
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;
|
$$=FP;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1408,11 +1411,12 @@ argumentlist : expression
|
|||||||
$1.expr.addElement($3);
|
$1.expr.addElement($3);
|
||||||
$$=$1;
|
$$=$1;
|
||||||
}
|
}
|
||||||
|
/* auskommentiert von Andreas Stadelmeier
|
||||||
numerictype :integraltype
|
numerictype :integraltype
|
||||||
{
|
{
|
||||||
$$=$1;
|
$$=$1;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
variabledeclaratorid : IDENTIFIER
|
variabledeclaratorid : IDENTIFIER
|
||||||
{
|
{
|
||||||
@ -1469,24 +1473,18 @@ expression :assignmentexpression
|
|||||||
$$=$1;
|
$$=$1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* auskommentiert von Andreas Stadelmeier
|
||||||
integraltype :INT
|
integraltype :INT
|
||||||
{
|
{
|
||||||
IntegerType IT = new IntegerType(null);
|
IntegerType IT = new IntegerType(null);
|
||||||
/* #JB# 05.04.2005 */
|
|
||||||
/* ########################################################### */
|
|
||||||
//IT.setName($1.getLexem());
|
|
||||||
/* ########################################################### */
|
|
||||||
$$=IT;
|
$$=IT;
|
||||||
}
|
}
|
||||||
| CHAR
|
| CHAR
|
||||||
{
|
{
|
||||||
CharacterType CT = new CharacterType(null);
|
CharacterType CT = new CharacterType(null);
|
||||||
/* #JB# 05.04.2005 */
|
|
||||||
/* ########################################################### */
|
|
||||||
//CT.setName($1.getLexem());
|
|
||||||
/* ########################################################### */
|
|
||||||
$$=CT;
|
$$=CT;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
localvariabledeclaration : type variabledeclarators
|
localvariabledeclaration : type variabledeclarators
|
||||||
{
|
{
|
||||||
@ -1802,7 +1800,7 @@ conditionalorexpression : conditionalandexpression
|
|||||||
$$=LogOr;
|
$$=LogOr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// LambdaExpression eingefügt von Andreas Stadelmeier, a10023:
|
// LambdaExpression eingef<EFBFBD>gt von Andreas Stadelmeier, a10023:
|
||||||
|
|
||||||
lambdaassignmentoperator : LAMBDAASSIGNMENT
|
lambdaassignmentoperator : LAMBDAASSIGNMENT
|
||||||
{
|
{
|
||||||
@ -2176,7 +2174,9 @@ unaryexpressionnotplusminus : postfixexpression {$$=$1;}
|
|||||||
NE.set_Expr($2);
|
NE.set_Expr($2);
|
||||||
$$=NE;
|
$$=NE;
|
||||||
}
|
}
|
||||||
|
/* auskommentiert von Andreas Stadelmeier
|
||||||
| castexpression {$$=$1;}
|
| castexpression {$$=$1;}
|
||||||
|
*/
|
||||||
|
|
||||||
exclusiveorexpression :andexpression {$$=$1;}
|
exclusiveorexpression :andexpression {$$=$1;}
|
||||||
| exclusiveorexpression '^' andexpression //{
|
| exclusiveorexpression '^' andexpression //{
|
||||||
@ -2222,13 +2222,17 @@ literal : INTLITERAL {IntLiteral IL = new IntLiteral();
|
|||||||
$$=NN;
|
$$=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());
|
CastExpr CaEx=new CastExpr($4.getOffset(),$4.getVariableLength());
|
||||||
CaEx.set_Type($2);
|
CaEx.set_Type($2);
|
||||||
CaEx.set_Expr($4);
|
CaEx.set_Expr($4);
|
||||||
$$=CaEx;
|
$$=CaEx;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
//| '(' expression ')' unaryexpressionnotplusminus
|
//| '(' expression ')' unaryexpressionnotplusminus
|
||||||
|
|
||||||
andexpression :equalityexpression
|
andexpression :equalityexpression
|
||||||
|
Loading…
Reference in New Issue
Block a user