blob: 17216a75493277356b59f3d9a0cc72180ab0627a [file] [log] [blame]
-----------------------------------------------------------------------------------
-- Copyright (c) 2009, 2010 IBM Corporation and others.
-- This program and the accompanying materials
-- are made available under the terms of the Eclipse Public License 2.0
-- which accompanies this distribution, and is available at
-- https://www.eclipse.org/legal/epl-2.0/
--
-- SPDX-License-Identifier: EPL-2.0
--
-- Contributors:
-- IBM Corporation - initial API and implementation
-----------------------------------------------------------------------------------
%options la=2
%options package=org.eclipse.cdt.internal.core.lrparser.xlc.cpp
%options template=LRParserTemplate.g
$Import
GPPGrammar.g
$End
$Import
XlcGrammarExtensions.g
$End
$Globals
/.
import org.eclipse.cdt.core.lrparser.xlc.action.XlcCPPBuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
import org.eclipse.cdt.internal.core.lrparser.xlc.ast.XlcCPPNodeFactory;
./
$End
$Define
$build_action_class /. XlcCPPBuildASTParserAction ./
$parser_factory_create_expression /. GPPSecondaryParserFactory.getDefault() ./
$node_factory_create_expression /. XlcCPPNodeFactory.getDefault() ./
$End
$Terminals
restrict
$End
$Start
translation_unit
$End
$Rules
cv_qualifier
::= 'restrict'
block_declaration
::= vector_declaration
| static_assert_declaration
identifier_token
::= 'vector'
| 'pixel'
specifier_qualifier
::= 'typedef'
/. $Build consumeToken(); $EndBuild ./
array_modifier
::= '[' <openscope-ast> array_modifier_type_qualifiers ']'
/. $Build consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); $EndBuild ./
| '[' <openscope-ast> array_modifier_type_qualifiers assignment_expression ']'
/. $Build consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); $EndBuild ./
| '[' 'static' assignment_expression ']'
/. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); $EndBuild ./
| '[' 'static' <openscope-ast> array_modifier_type_qualifiers assignment_expression ']'
/. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); $EndBuild ./
| '[' <openscope-ast> array_modifier_type_qualifiers 'static' assignment_expression ']'
/. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); $EndBuild ./
| '[' '*' ']'
/. $Build consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); $EndBuild ./
| '[' <openscope-ast> array_modifier_type_qualifiers '*' ']'
/. $Build consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); $EndBuild ./
array_modifier_type_qualifiers
::= type_qualifier_list
type_qualifier_list
::= cv_qualifier
| type_qualifier_list cv_qualifier
member_declaration
::= static_assert_declaration
static_assert_declaration
::= '__static_assert' '(' expression ',' literal ')' ';'
/. $Build consumeCPPASTStaticAssertDeclaration(); $EndBuild ./
$End