1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-10 09:45:39 +02:00

added support for restrict to GNU C++

This commit is contained in:
Mike Kucera 2009-02-05 21:57:43 +00:00
parent 60aa52eccf
commit caae636bc1
18 changed files with 5700 additions and 5575 deletions

View file

@ -128,6 +128,14 @@ public class LRTests extends AST2Tests {
} catch(Throwable _) { }
}
@Override
public void testBug75340() { // not legal c99
try {
super.testBug75340();
fail();
} catch(Throwable _) { }
}
// @Override
// public void testBug93980() { // some wierd gcc extension I think

View file

@ -38,7 +38,7 @@ $End
$Define
$gnu_action_class /. GCCBuildASTParserAction ./
$build_action_class /. GCCBuildASTParserAction ./
$parser_factory_create_expression /. GCCSecondaryParserFactory.getDefault() ./
$End
@ -91,11 +91,11 @@ designator_base
field_name_designator
::= identifier_token ':'
/. $BeginAction gnuAction.consumeDesignatorField(); $EndAction ./
/. $Build consumeDesignatorFieldGCC(); $EndBuild ./
array_range_designator
::= '[' constant_expression '...' constant_expression ']'
/. $BeginAction gnuAction.consumeDesignatorArray(); $EndAction ./
/. $Build consumeDesignatorArrayRange(); $EndBuild ./
designated_initializer
::= <openscope-ast> field_name_designator initializer

View file

@ -30,22 +30,29 @@ $Terminals
$End
$Headers
/.
private $gnu_action_class gnuAction;
./
$End
$Globals
/.
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
./
$End
$Define
$gnu_action_class /. ./
$gnu_action_class /. GNUBuildASTParserAction ./ -- overridable
$action_initializations /.
gnuAction = new $gnu_action_class (this, astStack, $node_factory_create_expression);
gnuAction.setParserOptions(options);
gnuAction.setBaseAction(action);
//gnuAction.setBaseAction(action);
./
$End
@ -176,6 +183,12 @@ case_range_expression
::= constant_expression '...' constant_expression
/. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); $EndBuild ./
typeof_declaration_specifiers
::= typeof_type_specifier
| no_type_declaration_specifiers typeof_type_specifier
| typeof_declaration_specifiers no_type_declaration_specifier
typeof_type_specifier
::= 'typeof' unary_expression
@ -183,15 +196,10 @@ typeof_type_specifier
| 'typeof' '(' type_id ')'
/. $Build consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); $EndBuild ./
typeof_declaration_specifiers
::= typeof_type_specifier
| no_type_declaration_specifiers typeof_type_specifier
| typeof_declaration_specifiers no_type_declaration_specifier
declaration_specifiers
::= <openscope-ast> typeof_declaration_specifiers
/. $BeginAction gnuAction.consumeDeclarationSpecifiersTypeof(); $EndAction ./
/. $Build consumeDeclarationSpecifiersTypeof(); $EndBuild ./
$End

View file

@ -16,9 +16,11 @@
$Terminals
-- GCC allows these C99 keywords to be used in C++
-- GCC allows these keywords to be used in C++
_Complex _Imaginary
_Complex
_Imaginary
restrict
$End
@ -34,11 +36,6 @@ $DropRules
asm_definition
::= 'asm' '(' 'stringlit' ')' ';'
-- need to replace the action associated with this rule with one that supports _Complex and _Imaginary
declaration_specifiers
::= <openscope-ast> simple_declaration_specifiers
$End
@ -55,7 +52,7 @@ $End
$Define
$gnu_action_class /. GPPBuildASTParserAction ./
$build_action_class /. GPPBuildASTParserAction ./
$parser_factory_create_expression /. GPPSecondaryParserFactory.getDefault() ./
$End
@ -106,8 +103,9 @@ simple_type_specifier
| '_Imaginary'
/. $Build consumeToken(); $EndBuild ./
declaration_specifiers
::= <openscope-ast> simple_declaration_specifiers
/. $BeginAction gnuAction.consumeDeclarationSpecifiersSimple(); $EndAction ./
cv_qualifier
::= 'restrict'
/. $Build consumeToken(); $EndBuild ./
$End

View file

@ -91,8 +91,8 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBas
import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
import org.eclipse.cdt.core.dom.lrparser.LPGTokenAdapter;
import org.eclipse.cdt.core.dom.lrparser.action.BuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
import org.eclipse.cdt.core.dom.lrparser.action.ParserUtil;
import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
@ -1418,10 +1418,9 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
}
private void addCVQualifiersToPointer(IASTPointer pointer, List<Object> tokens) {
protected void addCVQualifiersToPointer(IASTPointer pointer, List<Object> tokens) {
for(Object t : tokens) {
switch(baseKind((IToken) t)) {
default : assert false;
case TK_const: pointer.setConst(true); break;
case TK_volatile: pointer.setVolatile(true); break;
}

View file

@ -20,31 +20,27 @@ import org.eclipse.cdt.core.dom.ast.c.ICASTFieldDesignator;
import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.c.ICNodeFactory;
import org.eclipse.cdt.core.dom.ast.gnu.c.IGCCASTArrayRangeDesignator;
import org.eclipse.cdt.core.dom.lrparser.action.ISecondaryParserFactory;
import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
public class GCCBuildASTParserAction extends GNUBuildASTParserAction {
public class GCCBuildASTParserAction extends C99BuildASTParserAction {
private final ICNodeFactory nodeFactory;
private C99BuildASTParserAction baseAction;
public GCCBuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, ICNodeFactory nodeFactory) {
super(parser, astStack, nodeFactory);
public GCCBuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, ICNodeFactory nodeFactory, ISecondaryParserFactory parserFactory) {
super(parser, astStack, nodeFactory, parserFactory);
this.nodeFactory = nodeFactory;
}
public void setBaseAction(C99BuildASTParserAction baseAction) {
this.baseAction = baseAction;
}
/**
* designator_base
* ::= identifier_token ':'
*/
public void consumeDesignatorField() {
public void consumeDesignatorFieldGCC() {
IASTName name = createName(stream.getLeftIToken());
ICASTFieldDesignator designator = nodeFactory.newFieldDesignator(name);
setOffsetAndLength(designator);
@ -54,7 +50,7 @@ public class GCCBuildASTParserAction extends GNUBuildASTParserAction {
/**
* designator ::= '[' constant_expression '...' constant_expression']'
*/
public void consumeDesignatorArray() {
public void consumeDesignatorArrayRange() {
IASTExpression ceiling = (IASTExpression) astStack.pop();
IASTExpression floor = (IASTExpression) astStack.pop();
IGCCASTArrayRangeDesignator designator = nodeFactory.newArrayRangeDesignatorGCC(floor, ceiling);
@ -83,7 +79,7 @@ public class GCCBuildASTParserAction extends GNUBuildASTParserAction {
// now apply the rest of the specifiers
for(Object token : topScope) {
baseAction.setSpecifier(declSpec, token);
setSpecifier(declSpec, token);
}
setOffsetAndLength(declSpec);

View file

@ -17,29 +17,34 @@ import java.util.List;
import lpg.lpgjavaruntime.IToken;
import org.eclipse.cdt.core.dom.ast.IASTExpression;
import org.eclipse.cdt.core.dom.ast.IASTPointer;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTPointerToMember;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNodeFactory;
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTPointer;
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTPointerToMember;
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
import org.eclipse.cdt.core.dom.lrparser.action.ParserUtil;
import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.cpp.ICPPSecondaryParserFactory;
import org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym;
public class GPPBuildASTParserAction extends GNUBuildASTParserAction {
public class GPPBuildASTParserAction extends CPPBuildASTParserAction {
private final ICPPNodeFactory nodeFactory;
private CPPBuildASTParserAction baseAction;
private final ITokenMap gppTokenMap;
public GPPBuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, ICPPNodeFactory nodeFactory) {
super(parser, astStack, nodeFactory);
public GPPBuildASTParserAction(ITokenStream stream, ScopedStack<Object> astStack, ICPPNodeFactory nodeFactory, ICPPSecondaryParserFactory parserFactory) {
super(stream, astStack, nodeFactory, parserFactory);
this.nodeFactory = nodeFactory;
this.gppTokenMap = new TokenMap(GPPParsersym.orderedTerminalSymbols, stream.getOrderedTerminalSymbols());
}
public void setBaseAction(CPPBuildASTParserAction baseAction) {
this.baseAction = baseAction;
}
/**
* typeof_type_specifier
@ -63,7 +68,7 @@ public class GPPBuildASTParserAction extends GNUBuildASTParserAction {
// now apply the rest of the specifiers
for(Object token : topScope) {
baseAction.setSpecifier(declSpec, token);
setSpecifier(declSpec, token);
}
setOffsetAndLength(declSpec);
@ -72,8 +77,9 @@ public class GPPBuildASTParserAction extends GNUBuildASTParserAction {
/**
* Replacement for the method same method in CPPBuildASTParserAction
* Replacement for the same method in CPPBuildASTParserAction
*/
@Override
public void consumeDeclarationSpecifiersSimple() {
boolean isComplex = false;
boolean isImaginary = false;
@ -88,9 +94,9 @@ public class GPPBuildASTParserAction extends GNUBuildASTParserAction {
case GPPParsersym.TK__Complex: isComplex = true; break;
case GPPParsersym.TK__Imaginary: isImaginary = true; break;
case GPPParsersym.TK_long : numLong++; break;
}
}
}
}
}
ICPPASTSimpleDeclSpecifier declSpec;
if(isComplex || isImaginary || numLong > 1) {
@ -106,12 +112,64 @@ public class GPPBuildASTParserAction extends GNUBuildASTParserAction {
}
for(Object token : tokens) {
baseAction.setSpecifier(declSpec, token);
setSpecifier(declSpec, token);
}
setOffsetAndLength(declSpec);
astStack.push(declSpec);
}
private boolean hasRestrict(List<Object> tokens) {
for(Object o : tokens) {
IToken t = (IToken)o;
if(gppTokenMap.mapKind(t.getKind()) == GPPParsersym.TK_restrict) {
return true;
}
}
return false;
}
/**
* Restrict is allowed as a keyword.
*/
@Override
public void consumePointer() {
boolean hasRestrict = hasRestrict(astStack.topScope());
super.consumePointer();
if(hasRestrict) {
IGPPASTPointer gppPointer = nodeFactory.newPointerGPP();
initializeGPPPointer((IASTPointer)astStack.pop(), gppPointer);
astStack.push(gppPointer);
}
}
private static void initializeGPPPointer(IASTPointer pointer, IGPPASTPointer gppPointer) {
gppPointer.setConst(pointer.isConst());
gppPointer.setVolatile(pointer.isVolatile());
gppPointer.setRestrict(true);
ParserUtil.setOffsetAndLength(gppPointer, pointer);
}
@Override
public void consumePointerToMember() {
boolean hasRestrict = hasRestrict(astStack.topScope());
super.consumePointerToMember();
if(hasRestrict) {
ICPPASTPointerToMember pointer = (ICPPASTPointerToMember) astStack.pop();
IGPPASTPointerToMember gppPointer = nodeFactory.newPointerToMemberGPP(pointer.getName());
initializeGPPPointer(pointer, gppPointer);
astStack.push(gppPointer);
}
}
}

View file

@ -177,8 +177,9 @@ public class DOMToGPPTokenMap implements IDOMTokenMap {
case IGCCToken.t__declspec : return TK___declspec;
// GNU supports these but they are not in the C++ spec
case t__Complex : return TK__Complex;
case t__Complex : return TK__Complex;
case t__Imaginary : return TK__Imaginary;
case t_restrict : return TK_restrict;
default:
assert false : "token not recognized by the GPP parser: " + token.getType(); //$NON-NLS-1$

View file

@ -17,12 +17,12 @@ import lpg.lpgjavaruntime.*;
import java.util.*;
import org.eclipse.cdt.core.dom.ast.*;
import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
import org.eclipse.cdt.core.dom.lrparser.IParser;
import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
@ -32,6 +32,8 @@ import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.c99.C99SecondaryParserFactory;
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCBuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory;
@ -172,7 +174,7 @@ public class GCCParser extends PrsStream implements RuleAction, ITokenStream,
}
private C99BuildASTParserAction action;
private GCCBuildASTParserAction action;
private IASTCompletionNode compNode;
@ -185,14 +187,14 @@ public GCCParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvid
private void initActions(Set<IParser.Options> options) {
ScopedStack<Object> astStack = new ScopedStack<Object>();
action = new C99BuildASTParserAction (this, astStack, CNodeFactory.getDefault() , GCCSecondaryParserFactory.getDefault() );
action = new GCCBuildASTParserAction (this, astStack, CNodeFactory.getDefault() , GCCSecondaryParserFactory.getDefault() );
action.setParserOptions(options);
gnuAction = new GCCBuildASTParserAction (this, astStack, CNodeFactory.getDefault() );
gnuAction = new GNUBuildASTParserAction (this, astStack, CNodeFactory.getDefault() );
gnuAction.setParserOptions(options);
gnuAction.setBaseAction(action);
//gnuAction.setBaseAction(action);
}
@ -235,7 +237,7 @@ public String getName() {
}
private GCCBuildASTParserAction gnuAction;
private GNUBuildASTParserAction gnuAction;
public void ruleAction(int ruleNumber)
{
@ -1329,34 +1331,34 @@ private GCCBuildASTParserAction gnuAction;
}
//
// Rule 360: typeof_type_specifier ::= typeof unary_expression
// Rule 363: typeof_type_specifier ::= typeof unary_expression
//
case 360: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
case 363: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
}
//
// Rule 361: typeof_type_specifier ::= typeof ( type_id )
// Rule 364: typeof_type_specifier ::= typeof ( type_id )
//
case 361: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
case 364: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
}
//
// Rule 365: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
//
case 365: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
}
case 365: { action. consumeDeclarationSpecifiersTypeof(); break;
}
//
// Rule 381: field_name_designator ::= identifier_token :
//
case 381: { gnuAction.consumeDesignatorField(); break;
}
case 381: { action. consumeDesignatorFieldGCC(); break;
}
//
// Rule 382: array_range_designator ::= [ constant_expression ... constant_expression ]
//
case 382: { gnuAction.consumeDesignatorArray(); break;
}
case 382: { action. consumeDesignatorArrayRange(); break;
}
//
// Rule 383: designated_initializer ::= <openscope-ast> field_name_designator initializer

View file

@ -69,8 +69,8 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
3,1,4,0,1,1,1,3,1,0,
4,3,1,2,1,3,4,4,6,1,
0,1,3,1,3,0,1,4,5,2,
4,2,4,3,3,5,3,4,3,2,
4,1,2,2,2,1,1,2,2,3,
4,2,4,3,3,5,3,4,3,1,
2,2,2,4,2,1,1,2,2,3,
2,2,3,1,1,1,1,1,1,1,
2,5,3,-99,0,-2,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
@ -400,7 +400,7 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
117,14,14,139,139,118,118,118,15,59,
140,140,141,141,119,119,119,98,98,98,
7,7,7,7,16,16,24,4,36,142,
84,84,99,99,99,29,58,51,92,92,
99,99,99,84,84,29,58,51,92,92,
92,107,107,107,126,123,124,44,93,133,
133,143,144,97,329,1665,439,17,21,18,
807,1572,45,1583,1585,1584,367,313,314,315,
@ -410,7 +410,7 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
231,1118,612,1078,1877,137,134,136,90,160,
331,1895,20,37,17,21,18,807,43,45,
1583,1585,1584,319,180,139,166,1608,1607,1610,
1972,143,146,149,152,2193,927,1336,362,2232,
1972,143,146,149,152,2193,927,1336,360,2232,
1140,2588,2598,2622,1106,1456,179,2782,2126,316,
313,314,315,2632,961,31,1659,367,313,314,
315,1241,2648,1895,20,2153,17,21,18,807,
@ -419,14 +419,14 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
2133,1543,2543,227,321,1557,137,134,136,1634,
160,317,313,314,315,1350,1521,179,334,128,
231,316,313,314,315,309,139,166,367,313,
314,315,143,146,149,152,2193,2033,712,362,
314,315,143,146,149,152,2193,2033,712,360,
2232,1140,2588,2598,2622,1106,325,1240,135,213,
466,224,229,1151,2632,219,679,221,223,317,
313,314,315,414,25,431,274,137,134,136,
1082,160,961,186,269,1109,751,272,916,734,
536,1798,316,313,314,315,823,139,166,2133,
1647,2473,293,143,146,149,152,2193,2033,345,
362,2232,1140,2588,2598,2622,1106,2026,169,278,
360,2232,1140,2588,2598,2622,1106,2026,169,278,
225,768,224,233,1151,2632,1703,20,1819,17,
21,18,807,1572,45,1583,1585,1584,784,311,
536,241,1608,1607,1610,1609,800,1632,1615,1633,
@ -441,7 +441,7 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
1118,17,21,18,807,43,45,1583,1585,1584,
105,1547,255,213,1608,1607,1610,1609,282,1945,
961,188,287,961,1242,635,1444,1122,1013,1799,
20,288,17,21,18,807,360,1690,975,435,
20,288,17,21,18,807,363,1690,975,435,
20,2460,17,21,18,807,1572,45,1583,1585,
1584,127,417,961,1741,1608,1607,1610,1609,342,
1632,1615,1633,75,408,289,606,2060,275,1643,
@ -483,7 +483,7 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
755,160,22,466,224,823,276,917,218,679,
221,874,135,213,1647,823,467,140,166,317,
313,314,315,144,147,150,153,2193,255,213,
363,145,134,136,1776,160,1902,1223,328,1390,
361,145,134,136,1776,160,1902,1223,328,1390,
1895,20,1418,17,21,18,807,1572,45,1583,
1585,1584,1517,155,811,1347,1608,1607,1610,1609,
243,1632,1615,1633,75,126,513,86,255,213,
@ -632,7 +632,7 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
134,136,3356,160,135,213,3356,3356,3356,3356,
316,313,314,315,135,213,2150,3356,3356,3356,
1450,3356,3356,154,134,136,2248,160,317,313,
314,315,3356,364,134,136,3356,160,1895,20,
314,315,3356,362,134,136,3356,160,1895,20,
3356,17,21,18,807,43,45,1583,1585,1885,
1895,20,3356,17,21,18,807,43,45,1583,
1585,1886,1895,20,3356,17,21,18,807,43,
@ -698,8 +698,8 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
0,432,377,0,413,32,0,2584,32,0,
223,235,0,656,253,0,558,253,0,432,
253,0,1,3593,0,179,20,0,223,236,
0,8,10,0,1,3582,0,360,352,0,
361,353,0,113,2514,0
0,8,10,0,1,3582,0,363,352,0,
364,353,0,113,2514,0
};
};
public final static char baseAction[] = BaseAction.baseAction;
@ -1006,10 +1006,10 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
3367,3367,3367,3367,3367,3367,3367,3367,3367,3367,
3367,3367,3367,3367,3367,3367,3367,3367,3367,3356,
1,1,3366,3209,1,1,1,1,1,3356,
353,361,361,3350,361,3036,3350,361,361,3359,
353,364,364,3350,364,3036,3350,364,364,3359,
1342,3356,433,1,1,3365,1,1,1,1,
1,1,1,3661,361,361,3350,361,361,361,
361,361,361,361,1,361,3350,3366,1,1,
1,1,1,3661,364,364,3350,364,364,364,
364,364,364,364,1,364,3350,3366,1,1,
1,1,1,1,1,1,1,1,1,1,
129,1,1,1,3227,253,1,3221,3224,656,
3365,3356,432,558,3356,1,1,3366,3209,1,
@ -1041,10 +1041,10 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
656,5931,117,432,558,3457,222,520,1215,962,
973,986,1544,2256,1197,763,1469,1880,1270,3356,
3356,1,190,1,1,117,1,1,1,63,
352,360,360,3347,360,117,3347,360,360,62,
352,363,363,3347,363,117,3347,363,363,62,
3356,779,3367,1,1,3368,1,1,1,1,
1,1,1,3552,360,360,3347,360,360,360,
360,360,360,360,3613,360,3347,3356,1,1,
1,1,1,3552,363,363,3347,363,363,363,
363,363,363,363,3613,363,3347,3356,1,1,
1,1,1,1,1,1,1,1,1,1,
3356,1,1,1,190,3356,1,5932,3366,3356,
5929,1,3356,410,1,700,1,1,1,1,
@ -1098,7 +1098,7 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
3572,1267,3571,3519,3520,3518,3573,3521,3517,57,
3356,3365,1425,3362,3524,3529,3528,3526,3527,3525,
3530,3531,3523,3532,3533,3534,3356,2765,3026,3009,
3356,361,3367,2115,656,3368,3356,432,558,769,
3356,364,3367,2115,656,3368,3356,432,558,769,
132,1342,3356,3356,3278,3362,3361,3272,3275,3363,
3570,3572,3356,3571,3570,3572,271,3571,3519,3520,
3518,3573,3521,3517,3570,3572,913,3571,3519,3520,
@ -1404,8 +1404,8 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
140,0,0,151,0,155,166,132,0,127,
110,162,150,175,178,179,180,0,0,0,
143,0,168,174,0,131,144,145,146,147,
152,173,177,196,135,136,137,138,139,142,
148,149,0,154,158,160,181,194,197,109,
152,173,177,197,135,136,137,138,139,142,
148,149,0,154,158,160,181,194,196,109,
111,126,130,134,0,153,157,0,159,169,
172,186,0,188,0,191,0,193,0,0,
0,0,0,0,156,0,170,171,176,0,
@ -1420,12 +1420,12 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
public final static char scopePrefix[] = {
182,240,414,319,202,299,107,133,139,268,
81,348,370,327,1,90,123,149,167,67,
248,309,39,39,59,63,95,145,219,284,
248,309,35,35,59,63,95,145,219,284,
390,410,429,433,344,366,379,397,379,333,
15,27,56,8,8,99,102,154,177,102,
229,234,237,296,437,50,75,115,223,288,
394,404,8,115,258,192,357,192,258,404,
20,20,35,215,35,35,35,35,35,294,
20,20,41,215,41,41,41,41,41,294,
388,20,20,45,128,157,128,157,157
};
};
@ -1435,13 +1435,13 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
public interface ScopeSuffix {
public final static char scopeSuffix[] = {
190,190,190,306,190,306,113,6,6,190,
87,354,376,314,6,43,113,6,43,72,
253,314,43,43,43,43,43,6,217,217,
190,43,43,6,306,306,306,401,383,337,
18,18,43,6,6,43,105,6,43,180,
232,232,232,217,43,53,78,130,226,291,
87,354,376,314,6,39,113,6,39,72,
253,314,39,39,39,39,39,6,217,217,
190,39,39,6,306,306,306,401,383,337,
18,18,39,6,6,39,105,6,39,180,
232,232,232,217,39,53,78,130,226,291,
53,407,11,118,253,209,360,195,261,422,
25,33,37,217,274,276,278,280,282,217,
25,33,43,217,274,276,278,280,282,217,
217,22,30,47,130,164,118,159,172
};
};
@ -1501,8 +1501,8 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
160,69,160,35,0,102,0,160,35,0,
30,127,102,0,195,128,0,190,0,128,
0,158,190,0,158,0,154,128,0,151,
190,0,151,0,190,0,196,0,161,1,
9,0,103,0,160,0,30,127,0,242,
190,0,151,0,161,1,9,0,103,0,
190,0,197,0,160,0,30,127,0,242,
39,0,29,128,0,130,1,0,161,1,
23,0,238,1,216,0,237,1,1,7,
0,103,103,0,231,102,0,31,150,0,
@ -1824,8 +1824,8 @@ public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym
"extended_decl_modifier",
"extended_asm_param",
"case_range_expression",
"typeof_type_specifier",
"typeof_declaration_specifiers",
"typeof_type_specifier",
"field_name_designator"
};
};

View file

@ -17,17 +17,17 @@ import lpg.lpgjavaruntime.*;
import java.util.*;
import org.eclipse.cdt.core.dom.ast.*;
import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
import org.eclipse.cdt.core.dom.lrparser.IParser;
import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser;
@ -36,6 +36,8 @@ import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.c99.C99SecondaryParserFactory;
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCBuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory;
@ -176,7 +178,7 @@ public class GCCSizeofExpressionParser extends PrsStream implements RuleAction,
}
private C99BuildASTParserAction action;
private GCCBuildASTParserAction action;
private IASTCompletionNode compNode;
@ -189,14 +191,14 @@ public GCCSizeofExpressionParser(IScanner scanner, IDOMTokenMap tokenMap, IBuilt
private void initActions(Set<IParser.Options> options) {
ScopedStack<Object> astStack = new ScopedStack<Object>();
action = new C99BuildASTParserAction (this, astStack, CNodeFactory.getDefault() , GCCSecondaryParserFactory.getDefault() );
action = new GCCBuildASTParserAction (this, astStack, CNodeFactory.getDefault() , GCCSecondaryParserFactory.getDefault() );
action.setParserOptions(options);
gnuAction = new GCCBuildASTParserAction (this, astStack, CNodeFactory.getDefault() );
gnuAction = new GNUBuildASTParserAction (this, astStack, CNodeFactory.getDefault() );
gnuAction.setParserOptions(options);
gnuAction.setBaseAction(action);
//gnuAction.setBaseAction(action);
}
@ -252,13 +254,13 @@ public void setTokens(List<IToken> tokens) {
addToken(new Token(null, 0, 0, GCCSizeofExpressionParsersym.TK_EOF_TOKEN));
}
public GCCSizeofExpressionParser(ITokenStream parser, Set<IParser.Options> options) { // constructor for creating secondary parser
public GCCSizeofExpressionParser(ITokenStream stream, Set<IParser.Options> options) { // constructor for creating secondary parser
initActions(options);
tokenMap = new TokenMap(GCCSizeofExpressionParsersym.orderedTerminalSymbols, parser.getOrderedTerminalSymbols());
tokenMap = new TokenMap(GCCSizeofExpressionParsersym.orderedTerminalSymbols, stream.getOrderedTerminalSymbols());
}
private GCCBuildASTParserAction gnuAction;
private GNUBuildASTParserAction gnuAction;
public void ruleAction(int ruleNumber)
{
@ -1334,34 +1336,34 @@ private GCCBuildASTParserAction gnuAction;
}
//
// Rule 357: typeof_type_specifier ::= typeof unary_expression
// Rule 360: typeof_type_specifier ::= typeof unary_expression
//
case 357: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
case 360: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
}
//
// Rule 358: typeof_type_specifier ::= typeof ( type_id )
// Rule 361: typeof_type_specifier ::= typeof ( type_id )
//
case 358: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
case 361: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
}
//
// Rule 362: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
//
case 362: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
}
case 362: { action. consumeDeclarationSpecifiersTypeof(); break;
}
//
// Rule 378: field_name_designator ::= identifier_token :
//
case 378: { gnuAction.consumeDesignatorField(); break;
}
case 378: { action. consumeDesignatorFieldGCC(); break;
}
//
// Rule 379: array_range_designator ::= [ constant_expression ... constant_expression ]
//
case 379: { gnuAction.consumeDesignatorArray(); break;
}
case 379: { action. consumeDesignatorArrayRange(); break;
}
//
// Rule 380: designated_initializer ::= <openscope-ast> field_name_designator initializer

View file

@ -69,8 +69,8 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
1,4,0,1,1,1,3,1,0,4,
3,1,2,1,3,4,4,6,1,0,
1,3,1,3,0,1,4,5,2,2,
3,3,5,3,4,3,2,4,1,2,
2,2,1,1,2,2,3,2,2,3,
3,3,5,3,4,3,1,2,2,2,
4,2,1,1,2,2,3,2,2,3,
1,1,1,1,1,1,1,2,5,3,
1,1,-39,0,0,0,0,0,0,-2,
0,0,0,0,0,0,0,0,0,0,
@ -377,8 +377,8 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
130,108,108,108,109,109,131,131,110,110,
15,15,132,132,111,111,111,16,87,133,
133,134,134,112,112,112,88,88,88,6,
6,12,12,23,3,37,135,89,89,113,
113,113,33,76,52,101,101,101,104,104,
6,12,12,23,3,37,135,113,113,113,
89,89,33,76,52,101,101,101,104,104,
104,122,119,120,50,82,128,128,136,137,
86,114,114,205,1135,17,21,18,438,940,
133,44,530,509,611,607,364,312,313,314,
@ -389,14 +389,14 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
1558,20,17,21,18,438,42,1819,44,530,
509,1228,138,165,1177,178,1357,185,49,49,
142,145,148,151,716,888,888,364,312,313,
314,2756,359,1007,104,429,388,2148,2517,2528,
314,2756,357,1007,104,429,388,2148,2517,2528,
2561,2572,1352,87,87,134,212,582,1219,1558,
20,17,21,18,438,42,2605,44,530,509,
611,1324,1130,1819,254,212,136,133,135,225,
159,1558,20,17,21,18,438,42,333,44,
530,509,1245,138,165,274,331,19,1250,1531,
1135,142,145,148,151,716,1558,20,17,21,
18,438,42,359,44,530,509,1254,2148,2517,
18,438,42,357,44,530,509,1254,2148,2517,
2528,2561,2572,1352,1438,20,17,21,18,438,
940,1427,44,530,509,611,607,2605,1357,187,
1585,715,644,796,785,867,862,74,1357,31,
@ -486,7 +486,7 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
20,17,21,18,438,42,243,44,530,509,
1255,139,165,1819,1513,1819,1819,1728,1768,143,
146,149,152,716,1558,20,17,21,18,438,
940,360,44,530,509,611,607,224,794,317,
940,358,44,530,509,611,607,224,794,317,
336,715,644,796,785,867,862,74,244,790,
73,1558,20,17,21,18,438,940,49,44,
530,509,611,607,1063,2873,1111,1842,715,644,
@ -603,11 +603,11 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
147,133,135,3121,159,364,312,313,314,3121,
3121,3121,134,212,1558,20,17,21,18,438,
42,3121,39,134,212,1718,1606,20,17,21,
18,438,357,150,133,135,3121,159,364,312,
18,438,360,150,133,135,3121,159,364,312,
313,314,3121,3121,153,133,135,3121,159,3121,
3121,3121,3121,3121,3121,3121,134,212,1558,20,
17,21,18,438,42,3121,44,1217,295,20,
17,21,18,438,42,3121,36,361,133,135,
17,21,18,438,42,3121,36,359,133,135,
3121,159,295,20,17,21,18,438,42,3121,
36,1558,20,17,21,18,438,42,3121,38,
3121,3121,245,1558,20,17,21,18,438,42,
@ -651,7 +651,7 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
0,1102,132,0,20,178,0,957,362,0,
1041,362,0,1102,362,0,1,690,0,957,
374,0,1041,374,0,1102,374,0,1,957,
0,1,1041,0,1,1102,0,350,357,0,
0,1,1041,0,1,1102,0,350,360,0,
957,252,0,1041,252,0,1102,252,0,8,
10,0,1,3346,0,1,3357,0,112,2389,
0
@ -946,10 +946,10 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
1102,957,1041,3121,3358,1476,570,942,581,1502,
2086,1474,717,1486,1966,1485,3121,1,3121,189,
1,3121,1,1,1,3121,702,3126,1,350,
357,357,3097,3121,3097,357,357,357,627,1698,
360,360,3097,3121,3097,360,360,360,627,1698,
1,1,1,3121,1,3316,1085,3121,1,1,
1,1,1,357,357,357,3097,357,63,357,
3097,357,357,357,357,357,189,1,1,1,
1,1,1,360,360,360,3097,360,63,360,
3097,360,360,360,360,360,189,1,1,1,
1,1,1,1,1,1,1,1,1,3121,
3121,1,1,1,3121,5112,1,3131,5081,1,
3121,2206,3121,1,1,1,1,1,1,1,
@ -1013,7 +1013,7 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
3134,3135,3136,817,2594,2550,1088,1,3874,1935,
3126,3776,2697,3334,3336,3335,2683,2671,2706,661,
3137,2193,2071,1396,3134,3135,3136,5346,2594,2550,
1088,376,3132,1935,3121,3133,2697,251,358,2855,
1088,376,3132,1935,3121,3133,2697,251,361,2855,
2683,2671,2706,661,3137,2193,2071,1396,3134,3135,
3136,5346,2594,2550,1088,3121,3132,1935,817,3133,
2697,3334,3336,3335,2683,2671,2706,661,3137,2193,
@ -1266,10 +1266,10 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
105,141,0,0,152,0,128,151,156,175,
176,177,0,0,0,163,172,0,144,0,
167,170,171,174,111,133,145,146,147,148,
153,0,155,159,161,178,0,187,189,110,
153,0,155,159,161,178,0,187,190,110,
112,127,132,136,137,138,139,140,143,149,
150,0,154,158,0,160,169,0,184,0,
186,0,190,102,0,0,131,135,0,0,
186,0,189,102,0,0,131,135,0,0,
157,0,168,173,0,179,180,0,181,0,
0,185,0,0,188,191,0,0,0,0,
0,0,0,0,0,0
@ -1282,12 +1282,12 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
public final static char scopePrefix[] = {
178,236,406,315,198,295,103,129,135,264,
77,344,366,323,1,86,119,145,163,63,
244,305,39,59,91,141,215,280,386,421,
244,305,35,59,91,141,215,280,386,421,
425,340,362,375,393,375,329,15,27,56,
8,8,95,98,150,173,98,225,230,233,
292,429,50,71,111,219,284,390,400,8,
111,254,188,353,188,254,400,20,20,35,
211,35,35,35,35,35,290,384,20,20,
111,254,188,353,188,254,400,20,20,41,
211,41,41,41,41,41,290,384,20,20,
45,124,153,124,153,153
};
};
@ -1297,12 +1297,12 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
public interface ScopeSuffix {
public final static char scopeSuffix[] = {
186,186,186,302,186,302,109,6,6,186,
83,350,372,310,6,43,109,6,43,68,
249,310,43,43,43,6,213,213,186,43,
6,302,302,302,397,379,333,18,18,43,
6,6,43,101,6,43,176,228,228,228,
213,43,53,74,126,222,287,53,403,11,
114,249,205,356,191,257,414,25,33,37,
83,350,372,310,6,39,109,6,39,68,
249,310,39,39,39,6,213,213,186,39,
6,302,302,302,397,379,333,18,18,39,
6,6,39,101,6,39,176,228,228,228,
213,39,53,74,126,222,287,53,403,11,
114,249,205,356,191,257,414,25,33,43,
213,270,272,274,276,278,213,213,22,30,
47,126,160,114,155,168
};
@ -1363,8 +1363,8 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
157,68,157,30,0,103,0,157,30,0,
30,128,103,0,184,128,0,183,0,128,
0,159,183,0,159,0,155,128,0,152,
183,0,152,0,199,0,189,0,175,2,
12,0,104,0,157,0,30,128,0,235,
183,0,152,0,175,2,12,0,104,0,
199,0,190,0,157,0,30,128,0,235,
39,0,29,129,0,130,2,0,231,2,
209,0,230,2,2,7,0,104,104,0,
226,107,0,31,151,0,168,191,107,20,
@ -1673,8 +1673,8 @@ public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTab
"extended_decl_modifier",
"extended_asm_param",
"case_range_expression",
"typeof_type_specifier",
"typeof_declaration_specifiers",
"typeof_type_specifier",
"field_name_designator"
};
};

View file

@ -17,134 +17,135 @@ public interface GPPParsersym {
public final static int
TK__Complex = 14,
TK__Imaginary = 15,
TK_restrict = 30,
TK_asm = 5,
TK_auto = 31,
TK_auto = 32,
TK_bool = 16,
TK_break = 82,
TK_case = 83,
TK_catch = 126,
TK_break = 83,
TK_case = 84,
TK_catch = 127,
TK_char = 17,
TK_class = 60,
TK_class = 61,
TK_const = 28,
TK_const_cast = 47,
TK_continue = 84,
TK_default = 85,
TK_delete = 74,
TK_do = 86,
TK_const_cast = 48,
TK_continue = 85,
TK_default = 86,
TK_delete = 75,
TK_do = 87,
TK_double = 18,
TK_dynamic_cast = 48,
TK_else = 129,
TK_enum = 62,
TK_explicit = 32,
TK_export = 92,
TK_extern = 33,
TK_false = 49,
TK_dynamic_cast = 49,
TK_else = 130,
TK_enum = 63,
TK_explicit = 33,
TK_export = 93,
TK_extern = 34,
TK_false = 50,
TK_float = 19,
TK_for = 87,
TK_friend = 34,
TK_goto = 88,
TK_if = 89,
TK_inline = 35,
TK_for = 88,
TK_friend = 35,
TK_goto = 89,
TK_if = 90,
TK_inline = 36,
TK_int = 20,
TK_long = 21,
TK_mutable = 36,
TK_namespace = 66,
TK_new = 75,
TK_mutable = 37,
TK_namespace = 67,
TK_new = 76,
TK_operator = 9,
TK_private = 110,
TK_protected = 111,
TK_public = 112,
TK_register = 37,
TK_reinterpret_cast = 50,
TK_return = 90,
TK_private = 111,
TK_protected = 112,
TK_public = 113,
TK_register = 38,
TK_reinterpret_cast = 51,
TK_return = 91,
TK_short = 22,
TK_signed = 23,
TK_sizeof = 51,
TK_static = 38,
TK_static_cast = 52,
TK_struct = 63,
TK_switch = 91,
TK_template = 61,
TK_this = 53,
TK_throw = 67,
TK_try = 78,
TK_true = 54,
TK_typedef = 39,
TK_typeid = 55,
TK_sizeof = 52,
TK_static = 39,
TK_static_cast = 53,
TK_struct = 64,
TK_switch = 92,
TK_template = 62,
TK_this = 54,
TK_throw = 68,
TK_try = 79,
TK_true = 55,
TK_typedef = 40,
TK_typeid = 56,
TK_typename = 13,
TK_union = 64,
TK_union = 65,
TK_unsigned = 24,
TK_using = 68,
TK_virtual = 30,
TK_using = 69,
TK_virtual = 31,
TK_void = 25,
TK_volatile = 29,
TK_wchar_t = 26,
TK_while = 81,
TK_integer = 56,
TK_floating = 57,
TK_charconst = 58,
TK_stringlit = 43,
TK_while = 82,
TK_integer = 57,
TK_floating = 58,
TK_charconst = 59,
TK_stringlit = 44,
TK_identifier = 1,
TK_Completion = 2,
TK_EndOfCompletion = 11,
TK_Invalid = 130,
TK_LeftBracket = 69,
TK_Invalid = 131,
TK_LeftBracket = 70,
TK_LeftParen = 3,
TK_Dot = 127,
TK_DotStar = 97,
TK_Arrow = 113,
TK_ArrowStar = 96,
TK_PlusPlus = 44,
TK_MinusMinus = 45,
TK_Dot = 128,
TK_DotStar = 98,
TK_Arrow = 114,
TK_ArrowStar = 97,
TK_PlusPlus = 45,
TK_MinusMinus = 46,
TK_And = 12,
TK_Star = 10,
TK_Plus = 40,
TK_Minus = 41,
TK_Plus = 41,
TK_Minus = 42,
TK_Tilde = 8,
TK_Bang = 46,
TK_Slash = 98,
TK_Percent = 99,
TK_RightShift = 93,
TK_LeftShift = 94,
TK_LT = 65,
TK_GT = 77,
TK_LE = 100,
TK_GE = 101,
TK_EQ = 102,
TK_NE = 103,
TK_Caret = 104,
TK_Or = 105,
TK_AndAnd = 106,
TK_OrOr = 107,
TK_Question = 114,
TK_Colon = 73,
TK_Bang = 47,
TK_Slash = 99,
TK_Percent = 100,
TK_RightShift = 94,
TK_LeftShift = 95,
TK_LT = 66,
TK_GT = 78,
TK_LE = 101,
TK_GE = 102,
TK_EQ = 103,
TK_NE = 104,
TK_Caret = 105,
TK_Or = 106,
TK_AndAnd = 107,
TK_OrOr = 108,
TK_Question = 115,
TK_Colon = 74,
TK_ColonColon = 4,
TK_DotDotDot = 95,
TK_Assign = 79,
TK_StarAssign = 115,
TK_SlashAssign = 116,
TK_PercentAssign = 117,
TK_PlusAssign = 118,
TK_MinusAssign = 119,
TK_RightShiftAssign = 120,
TK_LeftShiftAssign = 121,
TK_AndAssign = 122,
TK_CaretAssign = 123,
TK_OrAssign = 124,
TK_Comma = 76,
TK_RightBracket = 125,
TK_RightParen = 71,
TK_RightBrace = 80,
TK_SemiColon = 42,
TK_LeftBrace = 72,
TK_DotDotDot = 96,
TK_Assign = 80,
TK_StarAssign = 116,
TK_SlashAssign = 117,
TK_PercentAssign = 118,
TK_PlusAssign = 119,
TK_MinusAssign = 120,
TK_RightShiftAssign = 121,
TK_LeftShiftAssign = 122,
TK_AndAssign = 123,
TK_CaretAssign = 124,
TK_OrAssign = 125,
TK_Comma = 77,
TK_RightBracket = 126,
TK_RightParen = 72,
TK_RightBrace = 81,
TK_SemiColon = 43,
TK_LeftBrace = 73,
TK_typeof = 27,
TK___alignof__ = 59,
TK___alignof__ = 60,
TK___attribute__ = 6,
TK___declspec = 7,
TK_MAX = 108,
TK_MIN = 109,
TK_ERROR_TOKEN = 70,
TK_EOF_TOKEN = 128;
TK_MAX = 109,
TK_MIN = 110,
TK_ERROR_TOKEN = 71,
TK_EOF_TOKEN = 129;
public final static String orderedTerminalSymbols[] = {
"",
@ -177,6 +178,7 @@ public interface GPPParsersym {
"typeof",
"const",
"volatile",
"restrict",
"virtual",
"auto",
"explicit",

View file

@ -17,134 +17,135 @@ public interface GPPSizeofExpressionParsersym {
public final static int
TK__Complex = 14,
TK__Imaginary = 15,
TK_restrict = 30,
TK_asm = 5,
TK_auto = 33,
TK_auto = 34,
TK_bool = 16,
TK_break = 82,
TK_case = 83,
TK_catch = 126,
TK_break = 83,
TK_case = 84,
TK_catch = 127,
TK_char = 17,
TK_class = 60,
TK_class = 61,
TK_const = 28,
TK_const_cast = 47,
TK_continue = 84,
TK_default = 85,
TK_delete = 71,
TK_do = 86,
TK_const_cast = 48,
TK_continue = 85,
TK_default = 86,
TK_delete = 72,
TK_do = 87,
TK_double = 18,
TK_dynamic_cast = 48,
TK_else = 129,
TK_enum = 62,
TK_explicit = 34,
TK_export = 92,
TK_extern = 35,
TK_false = 49,
TK_dynamic_cast = 49,
TK_else = 130,
TK_enum = 63,
TK_explicit = 35,
TK_export = 93,
TK_extern = 36,
TK_false = 50,
TK_float = 19,
TK_for = 87,
TK_friend = 36,
TK_goto = 88,
TK_if = 89,
TK_inline = 37,
TK_for = 88,
TK_friend = 37,
TK_goto = 89,
TK_if = 90,
TK_inline = 38,
TK_int = 20,
TK_long = 21,
TK_mutable = 38,
TK_namespace = 67,
TK_new = 72,
TK_mutable = 39,
TK_namespace = 68,
TK_new = 73,
TK_operator = 9,
TK_private = 110,
TK_protected = 111,
TK_public = 112,
TK_register = 39,
TK_reinterpret_cast = 50,
TK_return = 90,
TK_private = 111,
TK_protected = 112,
TK_public = 113,
TK_register = 40,
TK_reinterpret_cast = 51,
TK_return = 91,
TK_short = 22,
TK_signed = 23,
TK_sizeof = 51,
TK_static = 40,
TK_static_cast = 52,
TK_struct = 63,
TK_switch = 91,
TK_template = 61,
TK_this = 53,
TK_throw = 66,
TK_try = 78,
TK_true = 54,
TK_typedef = 41,
TK_typeid = 55,
TK_sizeof = 52,
TK_static = 41,
TK_static_cast = 53,
TK_struct = 64,
TK_switch = 92,
TK_template = 62,
TK_this = 54,
TK_throw = 67,
TK_try = 79,
TK_true = 55,
TK_typedef = 42,
TK_typeid = 56,
TK_typename = 13,
TK_union = 64,
TK_union = 65,
TK_unsigned = 24,
TK_using = 69,
TK_virtual = 30,
TK_using = 70,
TK_virtual = 31,
TK_void = 25,
TK_volatile = 29,
TK_wchar_t = 26,
TK_while = 81,
TK_integer = 56,
TK_floating = 57,
TK_charconst = 58,
TK_stringlit = 42,
TK_while = 82,
TK_integer = 57,
TK_floating = 58,
TK_charconst = 59,
TK_stringlit = 43,
TK_identifier = 1,
TK_Completion = 2,
TK_EndOfCompletion = 11,
TK_Invalid = 130,
TK_LeftBracket = 70,
TK_Invalid = 131,
TK_LeftBracket = 71,
TK_LeftParen = 3,
TK_Dot = 127,
TK_DotStar = 97,
TK_Arrow = 113,
TK_ArrowStar = 96,
TK_PlusPlus = 43,
TK_MinusMinus = 44,
TK_Dot = 128,
TK_DotStar = 98,
TK_Arrow = 114,
TK_ArrowStar = 97,
TK_PlusPlus = 44,
TK_MinusMinus = 45,
TK_And = 12,
TK_Star = 10,
TK_Plus = 31,
TK_Minus = 32,
TK_Plus = 32,
TK_Minus = 33,
TK_Tilde = 8,
TK_Bang = 46,
TK_Slash = 98,
TK_Percent = 99,
TK_RightShift = 93,
TK_LeftShift = 94,
TK_LT = 65,
TK_GT = 77,
TK_LE = 100,
TK_GE = 101,
TK_EQ = 102,
TK_NE = 103,
TK_Caret = 104,
TK_Or = 105,
TK_AndAnd = 106,
TK_OrOr = 107,
TK_Question = 114,
TK_Colon = 75,
TK_Bang = 47,
TK_Slash = 99,
TK_Percent = 100,
TK_RightShift = 94,
TK_LeftShift = 95,
TK_LT = 66,
TK_GT = 78,
TK_LE = 101,
TK_GE = 102,
TK_EQ = 103,
TK_NE = 104,
TK_Caret = 105,
TK_Or = 106,
TK_AndAnd = 107,
TK_OrOr = 108,
TK_Question = 115,
TK_Colon = 76,
TK_ColonColon = 4,
TK_DotDotDot = 95,
TK_Assign = 79,
TK_StarAssign = 115,
TK_SlashAssign = 116,
TK_PercentAssign = 117,
TK_PlusAssign = 118,
TK_MinusAssign = 119,
TK_RightShiftAssign = 120,
TK_LeftShiftAssign = 121,
TK_AndAssign = 122,
TK_CaretAssign = 123,
TK_OrAssign = 124,
TK_Comma = 76,
TK_RightBracket = 125,
TK_RightParen = 73,
TK_RightBrace = 80,
TK_SemiColon = 45,
TK_LeftBrace = 74,
TK_DotDotDot = 96,
TK_Assign = 80,
TK_StarAssign = 116,
TK_SlashAssign = 117,
TK_PercentAssign = 118,
TK_PlusAssign = 119,
TK_MinusAssign = 120,
TK_RightShiftAssign = 121,
TK_LeftShiftAssign = 122,
TK_AndAssign = 123,
TK_CaretAssign = 124,
TK_OrAssign = 125,
TK_Comma = 77,
TK_RightBracket = 126,
TK_RightParen = 74,
TK_RightBrace = 81,
TK_SemiColon = 46,
TK_LeftBrace = 75,
TK_typeof = 27,
TK___alignof__ = 59,
TK___alignof__ = 60,
TK___attribute__ = 6,
TK___declspec = 7,
TK_MAX = 108,
TK_MIN = 109,
TK_ERROR_TOKEN = 68,
TK_EOF_TOKEN = 128;
TK_MAX = 109,
TK_MIN = 110,
TK_ERROR_TOKEN = 69,
TK_EOF_TOKEN = 129;
public final static String orderedTerminalSymbols[] = {
"",
@ -177,6 +178,7 @@ public interface GPPSizeofExpressionParsersym {
"typeof",
"const",
"volatile",
"restrict",
"virtual",
"Plus",
"Minus",