Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 58fe3cf505e367b70337996d06d037ecc1ea5fce (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
-----------------------------------------------------------------------------------
-- Copyright (c) 2009 IBM Corporation and others.
-- All rights reserved. This program and the accompanying materials
-- are made available under the terms of the Eclipse Public License v1.0
-- which accompanies this distribution, and is available at
-- http://www.eclipse.org/legal/epl-v10.html
--
-- Contributors:
--     IBM Corporation - initial API and implementation
-----------------------------------------------------------------------------------


--  These are additional rules that allow for parsing of GNU extensions.
--  This file is intended to be mixed-in with C99Parser.g or GPPParser.g


$Terminals

	vector
	pixel
	bool
	
	_Decimal32
	_Decimal64
	_Decimal128
	
$End





$Rules



simple_type_specifier_token
    ::= '_Decimal32'
      | '_Decimal64'
      | '_Decimal128'


type_id
    ::= vector_type
          /. $Build  consumeTypeId(false);  $EndBuild ./
      | vector_type abstract_declarator
          /. $Build  consumeTypeId(true);  $EndBuild ./

vector_declaration
    ::= vector_type <openscope-ast> init_declarator_list ';'
	      /. $Build  consumeDeclarationSimple(true);  $EndBuild ./
	      
	      
vector_type
    ::= <openscope-ast> no_type_declaration_specifiers_opt 'vector' vector_type_specifier all_specifier_qualifier_list_opt
          /. $Build  consumeVectorTypeSpecifier();  $EndBuild ./
      
      
vector_type_specifier
    ::= vector_type_specifier_token
          /. $Build  consumeToken();  $EndBuild ./
      
vector_type_specifier_token
    ::= 'pixel'
      | 'float'
      | 'bool'
      | 'signed'
      | 'unsigned'
      | 'char'
      | 'short'
      | 'int'
      | 'long'



all_specifier_qualifiers
    ::= vector_type_specifier
      | no_type_declaration_specifiers
      
all_specifier_qualifier_list
    ::= all_specifier_qualifiers
      | all_specifier_qualifier_list all_specifier_qualifiers
      
all_specifier_qualifier_list_opt
    ::= all_specifier_qualifier_list
      | $empty

no_type_declaration_specifiers_opt
    ::= no_type_declaration_specifiers
      | $empty

        
$End

Back to the top