mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 14:42:11 +02:00
GNU extensions: Optional positive expression in conditional expression (bug 212905). Case ranges (bug 211882). Compound statement expressions (bug 226274).
This commit is contained in:
parent
6b87d8c5bc
commit
018af1b16c
18 changed files with 8651 additions and 7988 deletions
|
@ -110,6 +110,24 @@ public class LRTests extends AST2Tests {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void testBug196468_emptyArrayInitializer() { // I don't care about C98
|
||||
try {
|
||||
super.testBug196468_emptyArrayInitializer();
|
||||
fail();
|
||||
} catch(Throwable _) { }
|
||||
}
|
||||
|
||||
@Override
|
||||
public void testScalabilityOfLargeTrivialInitializer_Bug253690() {
|
||||
// LPG holds on to all the tokens as you parse, so I don't think
|
||||
// it would be easy to fix this bug.
|
||||
try {
|
||||
super.testScalabilityOfLargeTrivialInitializer_Bug253690();
|
||||
fail();
|
||||
} catch(Throwable _) { }
|
||||
}
|
||||
|
||||
|
||||
// @Override
|
||||
// public void testBug93980() { // some wierd gcc extension I think
|
||||
|
|
|
@ -111,7 +111,7 @@ $End
|
|||
$Rules
|
||||
|
||||
-------------------------------------------------------------------------------------------
|
||||
-- AST and Symbol Table Scoping
|
||||
-- AST scopes
|
||||
-------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
@ -119,7 +119,11 @@ $Rules
|
|||
::= $empty
|
||||
/. $Build openASTScope(); $EndBuild ./
|
||||
|
||||
|
||||
<empty>
|
||||
::= $empty
|
||||
/. $Build consumeEmpty(); $EndBuild ./
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------------------
|
||||
-- Content assist
|
||||
-------------------------------------------------------------------------------------------
|
||||
|
@ -277,40 +281,40 @@ equality_expression
|
|||
/. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); $EndBuild ./
|
||||
|
||||
|
||||
AND_expression
|
||||
and_expression
|
||||
::= equality_expression
|
||||
| AND_expression '&' equality_expression
|
||||
| and_expression '&' equality_expression
|
||||
/. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); $EndBuild ./
|
||||
|
||||
|
||||
exclusive_OR_expression
|
||||
::= AND_expression
|
||||
| exclusive_OR_expression '^' AND_expression
|
||||
exclusive_or_expression
|
||||
::= and_expression
|
||||
| exclusive_or_expression '^' and_expression
|
||||
/. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); $EndBuild ./
|
||||
|
||||
|
||||
inclusive_OR_expression
|
||||
::= exclusive_OR_expression
|
||||
| inclusive_OR_expression '|' exclusive_OR_expression
|
||||
inclusive_or_expression
|
||||
::= exclusive_or_expression
|
||||
| inclusive_or_expression '|' exclusive_or_expression
|
||||
/. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); $EndBuild ./
|
||||
|
||||
|
||||
logical_AND_expression
|
||||
::= inclusive_OR_expression
|
||||
| logical_AND_expression '&&' inclusive_OR_expression
|
||||
logical_and_expression
|
||||
::= inclusive_or_expression
|
||||
| logical_and_expression '&&' inclusive_or_expression
|
||||
/. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); $EndBuild ./
|
||||
|
||||
|
||||
logical_OR_expression
|
||||
::= logical_AND_expression
|
||||
| logical_OR_expression '||' logical_AND_expression
|
||||
logical_or_expression
|
||||
::= logical_and_expression
|
||||
| logical_or_expression '||' logical_and_expression
|
||||
/. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); $EndBuild ./
|
||||
|
||||
|
||||
conditional_expression
|
||||
::= logical_OR_expression
|
||||
| logical_OR_expression '?' expression ':' conditional_expression
|
||||
/. $Build consumeExpressionConditional(); $EndBuild ./
|
||||
::= logical_or_expression
|
||||
| logical_or_expression '?' expression ':' assignment_expression
|
||||
/. $Build consumeExpressionConditional(); $EndBuild ./
|
||||
|
||||
|
||||
assignment_expression
|
||||
|
|
|
@ -118,7 +118,7 @@ $End
|
|||
$Rules
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
-- AST and Symbol Table Scoping
|
||||
-- AST scoping
|
||||
------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
|
|
@ -157,7 +157,26 @@ relational_expression
|
|||
/. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_min); $EndBuild ./
|
||||
|
||||
|
||||
conditional_expression
|
||||
::= logical_or_expression '?' <empty> ':' assignment_expression
|
||||
/. $Build consumeExpressionConditional(); $EndBuild ./
|
||||
|
||||
|
||||
primary_expression
|
||||
::= '(' compound_statement ')'
|
||||
/. $BeginAction gnuAction.consumeCompoundStatementExpression(); $EndAction ./
|
||||
|
||||
|
||||
labeled_statement
|
||||
::= 'case' case_range_expression ':' statement
|
||||
/. $Build consumeStatementCase(); $EndBuild ./
|
||||
|
||||
|
||||
case_range_expression
|
||||
::= constant_expression '...' constant_expression
|
||||
/. $Build consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); $EndBuild ./
|
||||
|
||||
|
||||
typeof_type_specifier
|
||||
::= 'typeof' unary_expression
|
||||
|
||||
|
|
|
@ -459,6 +459,7 @@ public abstract class BuildASTParserAction extends AbstractParserAction {
|
|||
IASTCaseStatement caseStatement = nodeFactory.newCaseStatement(expr);
|
||||
setOffsetAndLength(caseStatement); // TODO this is wrong, need to adjust length to end of colon
|
||||
|
||||
// this is a hackey fix because case statements are not modeled correctly in the AST
|
||||
IASTCompoundStatement compound = nodeFactory.newCompoundStatement();
|
||||
setOffsetAndLength(compound);
|
||||
compound.addStatement(caseStatement);
|
||||
|
|
|
@ -15,8 +15,10 @@ import java.util.List;
|
|||
import lpg.lpgjavaruntime.IToken;
|
||||
|
||||
import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
|
||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
||||
import org.eclipse.cdt.core.dom.ast.INodeFactory;
|
||||
import org.eclipse.cdt.core.dom.ast.gnu.IGNUASTCompoundStatementExpression;
|
||||
import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider;
|
||||
import org.eclipse.cdt.core.dom.lrparser.action.AbstractParserAction;
|
||||
import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
|
||||
|
@ -83,4 +85,14 @@ public class GNUBuildASTParserAction extends AbstractParserAction {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* primary_expression
|
||||
* ::= '(' compound_statement ')'
|
||||
*/
|
||||
public void consumeCompoundStatementExpression() {
|
||||
IASTCompoundStatement compoundStatement = (IASTCompoundStatement) astStack.pop();
|
||||
IGNUASTCompoundStatementExpression expr = nodeFactory.newGNUCompoundStatementExpression(compoundStatement);
|
||||
setOffsetAndLength(expr);
|
||||
astStack.push(expr);
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -16,39 +16,39 @@ package org.eclipse.cdt.internal.core.dom.lrparser.gcc;
|
|||
public interface GCCParsersym {
|
||||
public final static int
|
||||
TK_auto = 29,
|
||||
TK_break = 39,
|
||||
TK_case = 40,
|
||||
TK_break = 38,
|
||||
TK_case = 39,
|
||||
TK_char = 49,
|
||||
TK_const = 24,
|
||||
TK_continue = 41,
|
||||
TK_default = 42,
|
||||
TK_do = 43,
|
||||
TK_continue = 40,
|
||||
TK_default = 41,
|
||||
TK_do = 42,
|
||||
TK_double = 50,
|
||||
TK_else = 99,
|
||||
TK_enum = 61,
|
||||
TK_enum = 62,
|
||||
TK_extern = 30,
|
||||
TK_float = 51,
|
||||
TK_for = 44,
|
||||
TK_goto = 45,
|
||||
TK_if = 46,
|
||||
TK_for = 43,
|
||||
TK_goto = 44,
|
||||
TK_if = 45,
|
||||
TK_inline = 31,
|
||||
TK_int = 52,
|
||||
TK_long = 53,
|
||||
TK_register = 32,
|
||||
TK_restrict = 26,
|
||||
TK_return = 47,
|
||||
TK_restrict = 27,
|
||||
TK_return = 46,
|
||||
TK_short = 54,
|
||||
TK_signed = 55,
|
||||
TK_sizeof = 17,
|
||||
TK_static = 28,
|
||||
TK_struct = 62,
|
||||
TK_switch = 48,
|
||||
TK_struct = 63,
|
||||
TK_switch = 47,
|
||||
TK_typedef = 33,
|
||||
TK_union = 63,
|
||||
TK_union = 64,
|
||||
TK_unsigned = 56,
|
||||
TK_void = 57,
|
||||
TK_volatile = 25,
|
||||
TK_while = 37,
|
||||
TK_while = 35,
|
||||
TK__Bool = 58,
|
||||
TK__Complex = 59,
|
||||
TK__Imaginary = 60,
|
||||
|
@ -60,17 +60,17 @@ public interface GCCParsersym {
|
|||
TK_Completion = 5,
|
||||
TK_EndOfCompletion = 3,
|
||||
TK_Invalid = 100,
|
||||
TK_LeftBracket = 35,
|
||||
TK_LeftBracket = 36,
|
||||
TK_LeftParen = 1,
|
||||
TK_LeftBrace = 12,
|
||||
TK_LeftBrace = 10,
|
||||
TK_Dot = 70,
|
||||
TK_Arrow = 85,
|
||||
TK_PlusPlus = 15,
|
||||
TK_MinusMinus = 16,
|
||||
TK_And = 13,
|
||||
TK_Star = 8,
|
||||
TK_Plus = 10,
|
||||
TK_Minus = 11,
|
||||
TK_Star = 6,
|
||||
TK_Plus = 11,
|
||||
TK_Minus = 12,
|
||||
TK_Tilde = 21,
|
||||
TK_Bang = 22,
|
||||
TK_Slash = 71,
|
||||
|
@ -88,7 +88,7 @@ public interface GCCParsersym {
|
|||
TK_AndAnd = 84,
|
||||
TK_OrOr = 86,
|
||||
TK_Question = 87,
|
||||
TK_Colon = 65,
|
||||
TK_Colon = 61,
|
||||
TK_DotDotDot = 69,
|
||||
TK_Assign = 68,
|
||||
TK_StarAssign = 88,
|
||||
|
@ -101,15 +101,15 @@ public interface GCCParsersym {
|
|||
TK_AndAssign = 95,
|
||||
TK_CaretAssign = 96,
|
||||
TK_OrAssign = 97,
|
||||
TK_Comma = 38,
|
||||
TK_Comma = 48,
|
||||
TK_RightBracket = 77,
|
||||
TK_RightParen = 36,
|
||||
TK_RightBrace = 64,
|
||||
TK_SemiColon = 27,
|
||||
TK_RightParen = 37,
|
||||
TK_RightBrace = 65,
|
||||
TK_SemiColon = 26,
|
||||
TK_typeof = 9,
|
||||
TK___alignof__ = 23,
|
||||
TK___attribute__ = 6,
|
||||
TK___declspec = 7,
|
||||
TK___attribute__ = 7,
|
||||
TK___declspec = 8,
|
||||
TK_MAX = 78,
|
||||
TK_MIN = 79,
|
||||
TK_asm = 4,
|
||||
|
@ -123,13 +123,13 @@ public interface GCCParsersym {
|
|||
"EndOfCompletion",
|
||||
"asm",
|
||||
"Completion",
|
||||
"Star",
|
||||
"__attribute__",
|
||||
"__declspec",
|
||||
"Star",
|
||||
"typeof",
|
||||
"LeftBrace",
|
||||
"Plus",
|
||||
"Minus",
|
||||
"LeftBrace",
|
||||
"And",
|
||||
"stringlit",
|
||||
"PlusPlus",
|
||||
|
@ -143,8 +143,8 @@ public interface GCCParsersym {
|
|||
"__alignof__",
|
||||
"const",
|
||||
"volatile",
|
||||
"restrict",
|
||||
"SemiColon",
|
||||
"restrict",
|
||||
"static",
|
||||
"auto",
|
||||
"extern",
|
||||
|
@ -152,10 +152,9 @@ public interface GCCParsersym {
|
|||
"register",
|
||||
"typedef",
|
||||
"ERROR_TOKEN",
|
||||
"while",
|
||||
"LeftBracket",
|
||||
"RightParen",
|
||||
"while",
|
||||
"Comma",
|
||||
"break",
|
||||
"case",
|
||||
"continue",
|
||||
|
@ -166,6 +165,7 @@ public interface GCCParsersym {
|
|||
"if",
|
||||
"return",
|
||||
"switch",
|
||||
"Comma",
|
||||
"char",
|
||||
"double",
|
||||
"float",
|
||||
|
@ -178,11 +178,11 @@ public interface GCCParsersym {
|
|||
"_Bool",
|
||||
"_Complex",
|
||||
"_Imaginary",
|
||||
"Colon",
|
||||
"enum",
|
||||
"struct",
|
||||
"union",
|
||||
"RightBrace",
|
||||
"Colon",
|
||||
"RightShift",
|
||||
"LeftShift",
|
||||
"Assign",
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -15,146 +15,158 @@ package org.eclipse.cdt.internal.core.dom.lrparser.gcc;
|
|||
|
||||
public interface GCCSizeofExpressionParsersym {
|
||||
public final static int
|
||||
TK_auto = 30,
|
||||
TK_break = 88,
|
||||
TK_case = 89,
|
||||
TK_char = 39,
|
||||
TK_const = 9,
|
||||
TK_continue = 90,
|
||||
TK_default = 91,
|
||||
TK_do = 92,
|
||||
TK_double = 40,
|
||||
TK_else = 93,
|
||||
TK_enum = 52,
|
||||
TK_extern = 31,
|
||||
TK_float = 41,
|
||||
TK_for = 94,
|
||||
TK_goto = 95,
|
||||
TK_if = 96,
|
||||
TK_inline = 32,
|
||||
TK_int = 42,
|
||||
TK_long = 43,
|
||||
TK_register = 33,
|
||||
TK_restrict = 12,
|
||||
TK_return = 97,
|
||||
TK_short = 44,
|
||||
TK_signed = 45,
|
||||
TK_sizeof = 20,
|
||||
TK_static = 21,
|
||||
TK_struct = 53,
|
||||
TK_switch = 98,
|
||||
TK_typedef = 34,
|
||||
TK_union = 54,
|
||||
TK_unsigned = 46,
|
||||
TK_void = 47,
|
||||
TK_volatile = 13,
|
||||
TK_while = 99,
|
||||
TK__Bool = 48,
|
||||
TK__Complex = 49,
|
||||
TK__Imaginary = 50,
|
||||
TK_integer = 22,
|
||||
TK_floating = 23,
|
||||
TK_charconst = 24,
|
||||
TK_stringlit = 19,
|
||||
TK_auto = 32,
|
||||
TK_break = 38,
|
||||
TK_case = 39,
|
||||
TK_char = 51,
|
||||
TK_const = 24,
|
||||
TK_continue = 40,
|
||||
TK_default = 41,
|
||||
TK_do = 42,
|
||||
TK_double = 52,
|
||||
TK_else = 98,
|
||||
TK_enum = 65,
|
||||
TK_extern = 33,
|
||||
TK_float = 53,
|
||||
TK_for = 43,
|
||||
TK_goto = 44,
|
||||
TK_if = 45,
|
||||
TK_inline = 34,
|
||||
TK_int = 54,
|
||||
TK_long = 55,
|
||||
TK_register = 35,
|
||||
TK_restrict = 26,
|
||||
TK_return = 46,
|
||||
TK_short = 56,
|
||||
TK_signed = 57,
|
||||
TK_sizeof = 16,
|
||||
TK_static = 28,
|
||||
TK_struct = 66,
|
||||
TK_switch = 47,
|
||||
TK_typedef = 36,
|
||||
TK_union = 67,
|
||||
TK_unsigned = 58,
|
||||
TK_void = 59,
|
||||
TK_volatile = 25,
|
||||
TK_while = 37,
|
||||
TK__Bool = 60,
|
||||
TK__Complex = 61,
|
||||
TK__Imaginary = 62,
|
||||
TK_integer = 17,
|
||||
TK_floating = 18,
|
||||
TK_charconst = 19,
|
||||
TK_stringlit = 13,
|
||||
TK_identifier = 1,
|
||||
TK_Completion = 7,
|
||||
TK_EndOfCompletion = 6,
|
||||
TK_Completion = 4,
|
||||
TK_EndOfCompletion = 3,
|
||||
TK_Invalid = 100,
|
||||
TK_LeftBracket = 18,
|
||||
TK_LeftBracket = 30,
|
||||
TK_LeftParen = 2,
|
||||
TK_LeftBrace = 29,
|
||||
TK_Dot = 55,
|
||||
TK_Arrow = 73,
|
||||
TK_PlusPlus = 16,
|
||||
TK_MinusMinus = 17,
|
||||
TK_And = 14,
|
||||
TK_Star = 8,
|
||||
TK_Plus = 10,
|
||||
TK_Minus = 11,
|
||||
TK_Tilde = 25,
|
||||
TK_Bang = 26,
|
||||
TK_Slash = 56,
|
||||
TK_Percent = 57,
|
||||
TK_RightShift = 36,
|
||||
TK_LeftShift = 37,
|
||||
TK_LT = 58,
|
||||
TK_GT = 59,
|
||||
TK_LE = 60,
|
||||
TK_GE = 61,
|
||||
TK_EQ = 67,
|
||||
TK_NE = 68,
|
||||
TK_Caret = 69,
|
||||
TK_Or = 70,
|
||||
TK_AndAnd = 71,
|
||||
TK_OrOr = 74,
|
||||
TK_Question = 75,
|
||||
TK_Colon = 62,
|
||||
TK_DotDotDot = 51,
|
||||
TK_Assign = 63,
|
||||
TK_StarAssign = 76,
|
||||
TK_SlashAssign = 77,
|
||||
TK_PercentAssign = 78,
|
||||
TK_PlusAssign = 79,
|
||||
TK_MinusAssign = 80,
|
||||
TK_RightShiftAssign = 81,
|
||||
TK_LeftShiftAssign = 82,
|
||||
TK_AndAssign = 83,
|
||||
TK_CaretAssign = 84,
|
||||
TK_OrAssign = 85,
|
||||
TK_Comma = 35,
|
||||
TK_RightBracket = 64,
|
||||
TK_RightParen = 27,
|
||||
TK_RightBrace = 38,
|
||||
TK_SemiColon = 86,
|
||||
TK_typeof = 15,
|
||||
TK___alignof__ = 28,
|
||||
TK___attribute__ = 3,
|
||||
TK___declspec = 4,
|
||||
TK_MAX = 65,
|
||||
TK_MIN = 66,
|
||||
TK_asm = 5,
|
||||
TK_ERROR_TOKEN = 72,
|
||||
TK_EOF_TOKEN = 87;
|
||||
TK_LeftBrace = 20,
|
||||
TK_Dot = 70,
|
||||
TK_Arrow = 85,
|
||||
TK_PlusPlus = 14,
|
||||
TK_MinusMinus = 15,
|
||||
TK_And = 11,
|
||||
TK_Star = 5,
|
||||
TK_Plus = 9,
|
||||
TK_Minus = 10,
|
||||
TK_Tilde = 21,
|
||||
TK_Bang = 22,
|
||||
TK_Slash = 71,
|
||||
TK_Percent = 72,
|
||||
TK_RightShift = 63,
|
||||
TK_LeftShift = 64,
|
||||
TK_LT = 73,
|
||||
TK_GT = 74,
|
||||
TK_LE = 75,
|
||||
TK_GE = 76,
|
||||
TK_EQ = 80,
|
||||
TK_NE = 81,
|
||||
TK_Caret = 82,
|
||||
TK_Or = 83,
|
||||
TK_AndAnd = 84,
|
||||
TK_OrOr = 86,
|
||||
TK_Question = 87,
|
||||
TK_Colon = 48,
|
||||
TK_DotDotDot = 68,
|
||||
TK_Assign = 69,
|
||||
TK_StarAssign = 88,
|
||||
TK_SlashAssign = 89,
|
||||
TK_PercentAssign = 90,
|
||||
TK_PlusAssign = 91,
|
||||
TK_MinusAssign = 92,
|
||||
TK_RightShiftAssign = 93,
|
||||
TK_LeftShiftAssign = 94,
|
||||
TK_AndAssign = 95,
|
||||
TK_CaretAssign = 96,
|
||||
TK_OrAssign = 97,
|
||||
TK_Comma = 49,
|
||||
TK_RightBracket = 77,
|
||||
TK_RightParen = 31,
|
||||
TK_RightBrace = 50,
|
||||
TK_SemiColon = 27,
|
||||
TK_typeof = 12,
|
||||
TK___alignof__ = 23,
|
||||
TK___attribute__ = 7,
|
||||
TK___declspec = 8,
|
||||
TK_MAX = 78,
|
||||
TK_MIN = 79,
|
||||
TK_asm = 6,
|
||||
TK_ERROR_TOKEN = 29,
|
||||
TK_EOF_TOKEN = 99;
|
||||
|
||||
public final static String orderedTerminalSymbols[] = {
|
||||
"",
|
||||
"identifier",
|
||||
"LeftParen",
|
||||
"__attribute__",
|
||||
"__declspec",
|
||||
"asm",
|
||||
"EndOfCompletion",
|
||||
"Completion",
|
||||
"Star",
|
||||
"const",
|
||||
"asm",
|
||||
"__attribute__",
|
||||
"__declspec",
|
||||
"Plus",
|
||||
"Minus",
|
||||
"restrict",
|
||||
"volatile",
|
||||
"And",
|
||||
"typeof",
|
||||
"stringlit",
|
||||
"PlusPlus",
|
||||
"MinusMinus",
|
||||
"LeftBracket",
|
||||
"stringlit",
|
||||
"sizeof",
|
||||
"static",
|
||||
"integer",
|
||||
"floating",
|
||||
"charconst",
|
||||
"LeftBrace",
|
||||
"Tilde",
|
||||
"Bang",
|
||||
"RightParen",
|
||||
"__alignof__",
|
||||
"LeftBrace",
|
||||
"const",
|
||||
"volatile",
|
||||
"restrict",
|
||||
"SemiColon",
|
||||
"static",
|
||||
"ERROR_TOKEN",
|
||||
"LeftBracket",
|
||||
"RightParen",
|
||||
"auto",
|
||||
"extern",
|
||||
"inline",
|
||||
"register",
|
||||
"typedef",
|
||||
"while",
|
||||
"break",
|
||||
"case",
|
||||
"continue",
|
||||
"default",
|
||||
"do",
|
||||
"for",
|
||||
"goto",
|
||||
"if",
|
||||
"return",
|
||||
"switch",
|
||||
"Colon",
|
||||
"Comma",
|
||||
"RightShift",
|
||||
"LeftShift",
|
||||
"RightBrace",
|
||||
"char",
|
||||
"double",
|
||||
|
@ -168,10 +180,13 @@ public interface GCCSizeofExpressionParsersym {
|
|||
"_Bool",
|
||||
"_Complex",
|
||||
"_Imaginary",
|
||||
"DotDotDot",
|
||||
"RightShift",
|
||||
"LeftShift",
|
||||
"enum",
|
||||
"struct",
|
||||
"union",
|
||||
"DotDotDot",
|
||||
"Assign",
|
||||
"Dot",
|
||||
"Slash",
|
||||
"Percent",
|
||||
|
@ -179,8 +194,6 @@ public interface GCCSizeofExpressionParsersym {
|
|||
"GT",
|
||||
"LE",
|
||||
"GE",
|
||||
"Colon",
|
||||
"Assign",
|
||||
"RightBracket",
|
||||
"MAX",
|
||||
"MIN",
|
||||
|
@ -189,7 +202,6 @@ public interface GCCSizeofExpressionParsersym {
|
|||
"Caret",
|
||||
"Or",
|
||||
"AndAnd",
|
||||
"ERROR_TOKEN",
|
||||
"Arrow",
|
||||
"OrOr",
|
||||
"Question",
|
||||
|
@ -203,20 +215,8 @@ public interface GCCSizeofExpressionParsersym {
|
|||
"AndAssign",
|
||||
"CaretAssign",
|
||||
"OrAssign",
|
||||
"SemiColon",
|
||||
"EOF_TOKEN",
|
||||
"break",
|
||||
"case",
|
||||
"continue",
|
||||
"default",
|
||||
"do",
|
||||
"else",
|
||||
"for",
|
||||
"goto",
|
||||
"if",
|
||||
"return",
|
||||
"switch",
|
||||
"while",
|
||||
"EOF_TOKEN",
|
||||
"Invalid"
|
||||
};
|
||||
|
||||
|
|
|
@ -2011,35 +2011,59 @@ private GPPBuildASTParserAction gnuAction;
|
|||
//
|
||||
case 575: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_min); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 576: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
|
||||
//
|
||||
case 576: { action. consumeExpressionConditional(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 580: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
|
||||
// Rule 577: primary_expression ::= ( compound_statement )
|
||||
//
|
||||
case 580: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
|
||||
case 577: { gnuAction.consumeCompoundStatementExpression(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 593: declarator ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
|
||||
// Rule 578: labeled_statement ::= case case_range_expression : statement
|
||||
//
|
||||
case 593: { action. consumeDeclaratorWithPointer(true); break;
|
||||
case 578: { action. consumeStatementCase(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 595: simple_type_specifier ::= _Complex
|
||||
// Rule 579: case_range_expression ::= constant_expression ... constant_expression
|
||||
//
|
||||
case 595: { action. consumeToken(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 596: simple_type_specifier ::= _Imaginary
|
||||
//
|
||||
case 596: { action. consumeToken(); break;
|
||||
case 579: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 597: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
|
||||
// Rule 584: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
|
||||
//
|
||||
case 597: { gnuAction.consumeDeclarationSpecifiersSimple(); break;
|
||||
case 584: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 597: declarator ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
|
||||
//
|
||||
case 597: { action. consumeDeclaratorWithPointer(true); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 599: simple_type_specifier ::= _Complex
|
||||
//
|
||||
case 599: { action. consumeToken(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 600: simple_type_specifier ::= _Imaginary
|
||||
//
|
||||
case 600: { action. consumeToken(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 601: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
|
||||
//
|
||||
case 601: { gnuAction.consumeDeclarationSpecifiersSimple(); break;
|
||||
}
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -88,7 +88,7 @@ public interface GPPParsersym {
|
|||
TK_Completion = 2,
|
||||
TK_EndOfCompletion = 11,
|
||||
TK_Invalid = 130,
|
||||
TK_LeftBracket = 69,
|
||||
TK_LeftBracket = 70,
|
||||
TK_LeftParen = 3,
|
||||
TK_Dot = 127,
|
||||
TK_DotStar = 97,
|
||||
|
@ -107,7 +107,7 @@ public interface GPPParsersym {
|
|||
TK_RightShift = 93,
|
||||
TK_LeftShift = 94,
|
||||
TK_LT = 65,
|
||||
TK_GT = 76,
|
||||
TK_GT = 77,
|
||||
TK_LE = 100,
|
||||
TK_GE = 101,
|
||||
TK_EQ = 102,
|
||||
|
@ -117,7 +117,7 @@ public interface GPPParsersym {
|
|||
TK_AndAnd = 106,
|
||||
TK_OrOr = 107,
|
||||
TK_Question = 114,
|
||||
TK_Colon = 77,
|
||||
TK_Colon = 73,
|
||||
TK_ColonColon = 4,
|
||||
TK_DotDotDot = 95,
|
||||
TK_Assign = 79,
|
||||
|
@ -131,19 +131,19 @@ public interface GPPParsersym {
|
|||
TK_AndAssign = 122,
|
||||
TK_CaretAssign = 123,
|
||||
TK_OrAssign = 124,
|
||||
TK_Comma = 72,
|
||||
TK_Comma = 76,
|
||||
TK_RightBracket = 125,
|
||||
TK_RightParen = 71,
|
||||
TK_RightBrace = 80,
|
||||
TK_SemiColon = 43,
|
||||
TK_LeftBrace = 73,
|
||||
TK_LeftBrace = 72,
|
||||
TK_typeof = 27,
|
||||
TK___alignof__ = 59,
|
||||
TK___attribute__ = 7,
|
||||
TK___declspec = 8,
|
||||
TK_MAX = 108,
|
||||
TK_MIN = 109,
|
||||
TK_ERROR_TOKEN = 70,
|
||||
TK_ERROR_TOKEN = 69,
|
||||
TK_EOF_TOKEN = 128;
|
||||
|
||||
public final static String orderedTerminalSymbols[] = {
|
||||
|
@ -216,15 +216,15 @@ public interface GPPParsersym {
|
|||
"namespace",
|
||||
"throw",
|
||||
"using",
|
||||
"LeftBracket",
|
||||
"ERROR_TOKEN",
|
||||
"LeftBracket",
|
||||
"RightParen",
|
||||
"Comma",
|
||||
"LeftBrace",
|
||||
"Colon",
|
||||
"delete",
|
||||
"new",
|
||||
"Comma",
|
||||
"GT",
|
||||
"Colon",
|
||||
"try",
|
||||
"Assign",
|
||||
"RightBrace",
|
||||
|
|
|
@ -1987,41 +1987,65 @@ private GPPBuildASTParserAction gnuAction;
|
|||
//
|
||||
case 571: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_min); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 576: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
|
||||
//
|
||||
case 576: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 589: declarator ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
|
||||
// Rule 572: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
|
||||
//
|
||||
case 589: { action. consumeDeclaratorWithPointer(true); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 591: simple_type_specifier ::= _Complex
|
||||
//
|
||||
case 591: { action. consumeToken(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 592: simple_type_specifier ::= _Imaginary
|
||||
//
|
||||
case 592: { action. consumeToken(); break;
|
||||
case 572: { action. consumeExpressionConditional(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 593: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
|
||||
// Rule 573: primary_expression ::= ( compound_statement )
|
||||
//
|
||||
case 593: { gnuAction.consumeDeclarationSpecifiersSimple(); break;
|
||||
case 573: { gnuAction.consumeCompoundStatementExpression(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 595: no_sizeof_type_id_start ::= ERROR_TOKEN
|
||||
// Rule 574: labeled_statement ::= case case_range_expression : statement
|
||||
//
|
||||
case 595: { action. consumeEmpty(); break;
|
||||
case 574: { action. consumeStatementCase(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 575: case_range_expression ::= constant_expression ... constant_expression
|
||||
//
|
||||
case 575: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 580: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
|
||||
//
|
||||
case 580: { gnuAction.consumeDeclarationSpecifiersTypeof(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 593: declarator ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
|
||||
//
|
||||
case 593: { action. consumeDeclaratorWithPointer(true); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 595: simple_type_specifier ::= _Complex
|
||||
//
|
||||
case 595: { action. consumeToken(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 596: simple_type_specifier ::= _Imaginary
|
||||
//
|
||||
case 596: { action. consumeToken(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 597: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
|
||||
//
|
||||
case 597: { gnuAction.consumeDeclarationSpecifiersSimple(); break;
|
||||
}
|
||||
|
||||
//
|
||||
// Rule 599: no_sizeof_type_id_start ::= ERROR_TOKEN
|
||||
//
|
||||
case 599: { action. consumeEmpty(); break;
|
||||
}
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -29,12 +29,12 @@ public interface GPPSizeofExpressionParsersym {
|
|||
TK_const_cast = 47,
|
||||
TK_continue = 84,
|
||||
TK_default = 85,
|
||||
TK_delete = 72,
|
||||
TK_delete = 71,
|
||||
TK_do = 86,
|
||||
TK_double = 18,
|
||||
TK_dynamic_cast = 48,
|
||||
TK_else = 129,
|
||||
TK_enum = 63,
|
||||
TK_enum = 62,
|
||||
TK_explicit = 32,
|
||||
TK_export = 92,
|
||||
TK_extern = 33,
|
||||
|
@ -49,7 +49,7 @@ public interface GPPSizeofExpressionParsersym {
|
|||
TK_long = 21,
|
||||
TK_mutable = 36,
|
||||
TK_namespace = 67,
|
||||
TK_new = 73,
|
||||
TK_new = 72,
|
||||
TK_operator = 9,
|
||||
TK_private = 110,
|
||||
TK_protected = 111,
|
||||
|
@ -62,7 +62,7 @@ public interface GPPSizeofExpressionParsersym {
|
|||
TK_sizeof = 51,
|
||||
TK_static = 38,
|
||||
TK_static_cast = 52,
|
||||
TK_struct = 64,
|
||||
TK_struct = 63,
|
||||
TK_switch = 91,
|
||||
TK_template = 61,
|
||||
TK_this = 53,
|
||||
|
@ -72,9 +72,9 @@ public interface GPPSizeofExpressionParsersym {
|
|||
TK_typedef = 39,
|
||||
TK_typeid = 55,
|
||||
TK_typename = 13,
|
||||
TK_union = 65,
|
||||
TK_union = 64,
|
||||
TK_unsigned = 24,
|
||||
TK_using = 70,
|
||||
TK_using = 69,
|
||||
TK_virtual = 30,
|
||||
TK_void = 25,
|
||||
TK_volatile = 29,
|
||||
|
@ -88,7 +88,7 @@ public interface GPPSizeofExpressionParsersym {
|
|||
TK_Completion = 2,
|
||||
TK_EndOfCompletion = 10,
|
||||
TK_Invalid = 130,
|
||||
TK_LeftBracket = 68,
|
||||
TK_LeftBracket = 70,
|
||||
TK_LeftParen = 3,
|
||||
TK_Dot = 127,
|
||||
TK_DotStar = 97,
|
||||
|
@ -106,8 +106,8 @@ public interface GPPSizeofExpressionParsersym {
|
|||
TK_Percent = 99,
|
||||
TK_RightShift = 93,
|
||||
TK_LeftShift = 94,
|
||||
TK_LT = 62,
|
||||
TK_GT = 76,
|
||||
TK_LT = 65,
|
||||
TK_GT = 77,
|
||||
TK_LE = 100,
|
||||
TK_GE = 101,
|
||||
TK_EQ = 102,
|
||||
|
@ -117,7 +117,7 @@ public interface GPPSizeofExpressionParsersym {
|
|||
TK_AndAnd = 106,
|
||||
TK_OrOr = 107,
|
||||
TK_Question = 114,
|
||||
TK_Colon = 77,
|
||||
TK_Colon = 75,
|
||||
TK_ColonColon = 4,
|
||||
TK_DotDotDot = 95,
|
||||
TK_Assign = 79,
|
||||
|
@ -131,19 +131,19 @@ public interface GPPSizeofExpressionParsersym {
|
|||
TK_AndAssign = 122,
|
||||
TK_CaretAssign = 123,
|
||||
TK_OrAssign = 124,
|
||||
TK_Comma = 74,
|
||||
TK_Comma = 76,
|
||||
TK_RightBracket = 125,
|
||||
TK_RightParen = 71,
|
||||
TK_RightParen = 73,
|
||||
TK_RightBrace = 80,
|
||||
TK_SemiColon = 42,
|
||||
TK_LeftBrace = 75,
|
||||
TK_LeftBrace = 74,
|
||||
TK_typeof = 27,
|
||||
TK___alignof__ = 59,
|
||||
TK___attribute__ = 6,
|
||||
TK___declspec = 7,
|
||||
TK_MAX = 108,
|
||||
TK_MIN = 109,
|
||||
TK_ERROR_TOKEN = 69,
|
||||
TK_ERROR_TOKEN = 68,
|
||||
TK_EOF_TOKEN = 128;
|
||||
|
||||
public final static String orderedTerminalSymbols[] = {
|
||||
|
@ -209,22 +209,22 @@ public interface GPPSizeofExpressionParsersym {
|
|||
"__alignof__",
|
||||
"class",
|
||||
"template",
|
||||
"LT",
|
||||
"enum",
|
||||
"struct",
|
||||
"union",
|
||||
"LT",
|
||||
"throw",
|
||||
"namespace",
|
||||
"LeftBracket",
|
||||
"ERROR_TOKEN",
|
||||
"using",
|
||||
"RightParen",
|
||||
"LeftBracket",
|
||||
"delete",
|
||||
"new",
|
||||
"Comma",
|
||||
"RightParen",
|
||||
"LeftBrace",
|
||||
"GT",
|
||||
"Colon",
|
||||
"Comma",
|
||||
"GT",
|
||||
"try",
|
||||
"Assign",
|
||||
"RightBrace",
|
||||
|
|
Loading…
Add table
Reference in a new issue