This repository has been archived by the owner on Apr 21, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 96
/
FragmentTestLanguage.xtext
118 lines (98 loc) · 2.92 KB
/
FragmentTestLanguage.xtext
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*******************************************************************************
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) 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
*******************************************************************************/
grammar org.eclipse.xtext.parser.fragments.FragmentTestLanguage with org.eclipse.xtext.common.Terminals
generate fragmentTestLanguage "http://www.eclipse.org/2015/tmf/xtext/fragments"
ParserRuleFragments: {ParserRuleFragments}
( '#1' element=PRFNamed
| '#2' element=PRFNamed '->' ref=[PRFNamed]
| '#3' element=PRFNamedRefFirst
| '#4' element=PRFNamedWithAction
// | '#5' element=PRFNamedWithActionInFragment
// | '#6' element=PRFNamedWithActionInFragment2
// | '#7' element=PRFNamedWithActionInFragment3
| '#8' element=PRFNamedWithFQN
| '#9' element=PRFWithPredicate
| '#10' element=PRFNamedRecursive
| '#11' element=PRFNamedRecursiveFragment
)
;
PRFNamed: PRFNamedFragment (
':' ref=[PRFNamed]
| '-' PRFNamedRef
)?
;
PRFNamedRecursive returns PRFNamedWithAction:
name=ID RecursiveFromFragment
;
PRFNamedRecursiveFragment returns PRFNamedWithAction:
name=ID RecursiveFragment
;
PRFNamedRefFirst returns PRFNamed:
ref=[PRFNamed] '<-' PRFNamedFragment
;
PRFNamedWithAction returns PRFNamed:
PRFNamed {PRFNamedWithAction.prev=current} name=ID (ref=[PRFNamed] ref2=[PRFNamed])?
;
//PRFNamedWithActionInFragment returns PRFNamed:
// FragmentWithAction ('-' ref=[PRFNamed])?
//;
//
//PRFNamedWithActionInFragment2 returns PRFNamed:
// name=ID FragmentWithAction2 ('-' ref=[PRFNamed])?
//;
//
//PRFNamedWithActionInFragment3 returns PRFNamed:
// FragmentWithAction3 ('-' ref=[PRFNamed])?
//;
PRFNamedWithFQN returns PRFNamed:
name=FQN ('-' ref=[PRFNamed|FQN2])?
;
PRFWithPredicate returns PRFNamed:
PRFNamedFragment =>('-' PRFNamedRef)?
;
FQN:
ID Suffix?
;
FQN2:
ID Suffix2*
;
fragment Suffix:
'.' ID Suffix?
;
fragment Suffix2:
'.' ID
;
//fragment FragmentWithAction returns PRFNamed:
// name=ID {PRFNamedWithAction.prev=current} name=ID (ref2=[PRFNamed])?
//;
//
//fragment FragmentWithAction2 returns PRFNamed:
// {PRFNamedWithAction.prev=current} name=ID (ref2=[PRFNamed])?
//;
//
//fragment FragmentWithAction3 returns PRFNamed:
// name=ID ({PRFNamedWithAction.prev=current} '->' name=ID (ref2=[PRFNamed])?)*
//;
fragment PRFNamedFragment returns PRFNamed:
name=ID
;
fragment PRFNamedRef returns PRFNamed:
ref=[PRFNamed]
;
fragment RecursiveFromFragment returns PRFNamedWithAction:
prev=NamedInParentheses
;
NamedInParentheses returns PRFNamed:
'(' NamedInParentheses ')' | {PRFNamed} name=ID
;
fragment RecursiveFragment returns PRFNamedWithAction:
'(' RecursiveFragment ')' | prev=NamedByAction
;
NamedByAction returns PRFNamed:
{PRFNamed} name=ID
;