1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-13 11:15:38 +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 _) { } } catch(Throwable _) { }
} }
@Override
public void testBug75340() { // not legal c99
try {
super.testBug75340();
fail();
} catch(Throwable _) { }
}
// @Override // @Override
// public void testBug93980() { // some wierd gcc extension I think // public void testBug93980() { // some wierd gcc extension I think

View file

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

View file

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

View file

@ -16,9 +16,11 @@
$Terminals $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 $End
@ -34,11 +36,6 @@ $DropRules
asm_definition asm_definition
::= 'asm' '(' 'stringlit' ')' ';' ::= '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 $End
@ -55,7 +52,7 @@ $End
$Define $Define
$gnu_action_class /. GPPBuildASTParserAction ./ $build_action_class /. GPPBuildASTParserAction ./
$parser_factory_create_expression /. GPPSecondaryParserFactory.getDefault() ./ $parser_factory_create_expression /. GPPSecondaryParserFactory.getDefault() ./
$End $End
@ -106,8 +103,9 @@ simple_type_specifier
| '_Imaginary' | '_Imaginary'
/. $Build consumeToken(); $EndBuild ./ /. $Build consumeToken(); $EndBuild ./
declaration_specifiers cv_qualifier
::= <openscope-ast> simple_declaration_specifiers ::= 'restrict'
/. $BeginAction gnuAction.consumeDeclarationSpecifiersSimple(); $EndAction ./ /. $Build consumeToken(); $EndBuild ./
$End $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.ISecondaryParser;
import org.eclipse.cdt.core.dom.lrparser.LPGTokenAdapter; 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.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.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.ParserUtil;
import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; 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.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) { for(Object t : tokens) {
switch(baseKind((IToken) t)) { switch(baseKind((IToken) t)) {
default : assert false;
case TK_const: pointer.setConst(true); break; case TK_const: pointer.setConst(true); break;
case TK_volatile: pointer.setVolatile(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.ICASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.c.ICNodeFactory; 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.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.ITokenStream;
import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction; 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 final ICNodeFactory nodeFactory;
private C99BuildASTParserAction baseAction;
public GCCBuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, ICNodeFactory nodeFactory) { public GCCBuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, ICNodeFactory nodeFactory, ISecondaryParserFactory parserFactory) {
super(parser, astStack, nodeFactory); super(parser, astStack, nodeFactory, parserFactory);
this.nodeFactory = nodeFactory; this.nodeFactory = nodeFactory;
} }
public void setBaseAction(C99BuildASTParserAction baseAction) {
this.baseAction = baseAction;
}
/** /**
* designator_base * designator_base
* ::= identifier_token ':' * ::= identifier_token ':'
*/ */
public void consumeDesignatorField() { public void consumeDesignatorFieldGCC() {
IASTName name = createName(stream.getLeftIToken()); IASTName name = createName(stream.getLeftIToken());
ICASTFieldDesignator designator = nodeFactory.newFieldDesignator(name); ICASTFieldDesignator designator = nodeFactory.newFieldDesignator(name);
setOffsetAndLength(designator); setOffsetAndLength(designator);
@ -54,7 +50,7 @@ public class GCCBuildASTParserAction extends GNUBuildASTParserAction {
/** /**
* designator ::= '[' constant_expression '...' constant_expression']' * designator ::= '[' constant_expression '...' constant_expression']'
*/ */
public void consumeDesignatorArray() { public void consumeDesignatorArrayRange() {
IASTExpression ceiling = (IASTExpression) astStack.pop(); IASTExpression ceiling = (IASTExpression) astStack.pop();
IASTExpression floor = (IASTExpression) astStack.pop(); IASTExpression floor = (IASTExpression) astStack.pop();
IGCCASTArrayRangeDesignator designator = nodeFactory.newArrayRangeDesignatorGCC(floor, ceiling); IGCCASTArrayRangeDesignator designator = nodeFactory.newArrayRangeDesignatorGCC(floor, ceiling);
@ -83,7 +79,7 @@ public class GCCBuildASTParserAction extends GNUBuildASTParserAction {
// now apply the rest of the specifiers // now apply the rest of the specifiers
for(Object token : topScope) { for(Object token : topScope) {
baseAction.setSpecifier(declSpec, token); setSpecifier(declSpec, token);
} }
setOffsetAndLength(declSpec); setOffsetAndLength(declSpec);

View file

@ -17,29 +17,34 @@ import java.util.List;
import lpg.lpgjavaruntime.IToken; import lpg.lpgjavaruntime.IToken;
import org.eclipse.cdt.core.dom.ast.IASTExpression; 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.ICPPASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNodeFactory; 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.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.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.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.CPPBuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.cpp.ICPPSecondaryParserFactory;
import org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym; 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 final ICPPNodeFactory nodeFactory;
private CPPBuildASTParserAction baseAction; private final ITokenMap gppTokenMap;
public GPPBuildASTParserAction(ITokenStream stream, ScopedStack<Object> astStack, ICPPNodeFactory nodeFactory, ICPPSecondaryParserFactory parserFactory) {
public GPPBuildASTParserAction(ITokenStream parser, ScopedStack<Object> astStack, ICPPNodeFactory nodeFactory) { super(stream, astStack, nodeFactory, parserFactory);
super(parser, astStack, nodeFactory);
this.nodeFactory = nodeFactory; this.nodeFactory = nodeFactory;
this.gppTokenMap = new TokenMap(GPPParsersym.orderedTerminalSymbols, stream.getOrderedTerminalSymbols());
} }
public void setBaseAction(CPPBuildASTParserAction baseAction) {
this.baseAction = baseAction;
}
/** /**
* typeof_type_specifier * typeof_type_specifier
@ -63,7 +68,7 @@ public class GPPBuildASTParserAction extends GNUBuildASTParserAction {
// now apply the rest of the specifiers // now apply the rest of the specifiers
for(Object token : topScope) { for(Object token : topScope) {
baseAction.setSpecifier(declSpec, token); setSpecifier(declSpec, token);
} }
setOffsetAndLength(declSpec); 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() { public void consumeDeclarationSpecifiersSimple() {
boolean isComplex = false; boolean isComplex = false;
boolean isImaginary = false; boolean isImaginary = false;
@ -106,7 +112,7 @@ public class GPPBuildASTParserAction extends GNUBuildASTParserAction {
} }
for(Object token : tokens) { for(Object token : tokens) {
baseAction.setSpecifier(declSpec, token); setSpecifier(declSpec, token);
} }
setOffsetAndLength(declSpec); setOffsetAndLength(declSpec);
@ -114,4 +120,56 @@ public class GPPBuildASTParserAction extends GNUBuildASTParserAction {
} }
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

@ -179,6 +179,7 @@ public class DOMToGPPTokenMap implements IDOMTokenMap {
// GNU supports these but they are not in the C++ spec // 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__Imaginary : return TK__Imaginary;
case t_restrict : return TK_restrict;
default: default:
assert false : "token not recognized by the GPP parser: " + token.getType(); //$NON-NLS-1$ 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 java.util.*;
import org.eclipse.cdt.core.dom.ast.*; 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.IDOMTokenMap;
import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParser;
import org.eclipse.cdt.core.dom.lrparser.ITokenCollector; 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.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.dom.lrparser.action.ScopedStack;
import org.eclipse.cdt.core.parser.IScanner; import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider; 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.C99BuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.c99.C99SecondaryParserFactory; 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.GCCBuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory; 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; private IASTCompletionNode compNode;
@ -185,14 +187,14 @@ public GCCParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvid
private void initActions(Set<IParser.Options> options) { private void initActions(Set<IParser.Options> options) {
ScopedStack<Object> astStack = new ScopedStack<Object>(); 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); action.setParserOptions(options);
gnuAction = new GCCBuildASTParserAction (this, astStack, CNodeFactory.getDefault() ); gnuAction = new GNUBuildASTParserAction (this, astStack, CNodeFactory.getDefault() );
gnuAction.setParserOptions(options); 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) public void ruleAction(int ruleNumber)
{ {
@ -1329,33 +1331,33 @@ 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 // 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 : // 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 ] // Rule 382: array_range_designator ::= [ constant_expression ... constant_expression ]
// //
case 382: { gnuAction.consumeDesignatorArray(); break; case 382: { action. consumeDesignatorArrayRange(); break;
} }
// //

View file

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

View file

@ -17,17 +17,17 @@ import lpg.lpgjavaruntime.*;
import java.util.*; import java.util.*;
import org.eclipse.cdt.core.dom.ast.*; 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.IDOMTokenMap;
import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParser;
import org.eclipse.cdt.core.dom.lrparser.ITokenCollector; 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.lpgextensions.FixedBacktrackingParser;
import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
import org.eclipse.cdt.core.parser.IScanner; import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider; import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
import org.eclipse.cdt.core.index.IIndex; 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.ITokenMap;
import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser; 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.C99BuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.c99.C99SecondaryParserFactory; 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.GCCBuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory; 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; private IASTCompletionNode compNode;
@ -189,14 +191,14 @@ public GCCSizeofExpressionParser(IScanner scanner, IDOMTokenMap tokenMap, IBuilt
private void initActions(Set<IParser.Options> options) { private void initActions(Set<IParser.Options> options) {
ScopedStack<Object> astStack = new ScopedStack<Object>(); 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); action.setParserOptions(options);
gnuAction = new GCCBuildASTParserAction (this, astStack, CNodeFactory.getDefault() ); gnuAction = new GNUBuildASTParserAction (this, astStack, CNodeFactory.getDefault() );
gnuAction.setParserOptions(options); 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)); 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); 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) public void ruleAction(int ruleNumber)
{ {
@ -1334,33 +1336,33 @@ 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 // 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 : // 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 ] // Rule 379: array_range_designator ::= [ constant_expression ... constant_expression ]
// //
case 379: { gnuAction.consumeDesignatorArray(); break; case 379: { action. consumeDesignatorArrayRange(); break;
} }
// //

View file

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

View file

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

View file

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