summaryrefslogtreecommitdiffstats
blob: f8d1148e97f3a42b62705e802a67183625f97761 (plain)
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
-- @name		XPath
-- @version		1.0
-- @domains		XML technologies
-- @authors		Frédéric Jouault
-- @date		2005/01/20
-- @description	This metamodel describes XPath.
-- @see			http://en.wikipedia.org/wiki/XPath
package XPath {

	abstract class LocatedElement {
		attribute location[0-1] : String;
		attribute commentsBefore[*] ordered : String;
		attribute commentsAfter[*] ordered : String;
	}

	abstract class NamedElement extends LocatedElement {
		attribute name : String;
	}


-- Expressions
	abstract class Expression extends LocatedElement {

	}

	class VariableExp extends Expression, NamedElement {

	}

	class PathExpression extends Expression {
		attribute isAbsolute : Boolean;
		reference steps[*] ordered container : Step;
	}

	class Step extends LocatedElement {
		reference axis container : Axis;
		reference nodeTest container : NodeTest;
		reference predicates[*] ordered container : Predicate;
	}

	class Predicate extends LocatedElement {
		reference expression container : Expression;
	}

	class OperatorCallExp extends Expression, NamedElement {
		reference left container : Expression;
		reference right[0-1] container : Expression;
	}

	class FunctionCallExp extends Expression, NamedElement {
		reference arguments[*] ordered container : Expression;
	}

    -- LiteralExps
	abstract class LiteralExp extends Expression {

	}

	class IntegerExp extends LiteralExp {
		attribute symbol : Integer;
	}

	class StringExp extends LiteralExp {
		attribute symbol : String;
	}

	-- No BooleanExp. Booleans are represented by the true() and false() function calls.
    -- End LiteralExps
-- End Expressions


-- NodeTests
	abstract class NodeTest extends LocatedElement {

	}

	class NameTest extends NodeTest, NamedElement {

	}

	class WildCardTest extends NodeTest {

	}

	class IsNodeTest extends NodeTest {

	}

	class IsTextTest extends NodeTest {

	}
-- End NodeTests


-- Axes
--	enumeration AxisKind {
--		literal ancestor;
--		literal ancestorOrSelf;
--		literal attribute;
--		literal child;
--		literal descendant;
--		literal descendantOrSelf;
--		literal following;
--		literal followingSibling;
--		literal namespace;
--		literal parent;
--		literal preceding;
--		literal precedingSibling;
--		literal self;
--	}

-- Metamodel Refactoring:
--	enumeration AxisKind to classes with abstract Axis

	abstract class Axis extends LocatedElement {

	}

	class AncestorAxis extends Axis {

	}

	class AncestorOrSelfAxis extends Axis {

	}

	class AttributeAxis extends Axis {

	}

	class ChildAxis extends Axis {

	}

	class DescendantAxis extends Axis {

	}

	class DescendantOrSelfAxis extends Axis {

	}

	class FollowingAxis extends Axis {

	}

	class FollowingSiblingAxis extends Axis {

	}

	class NamespaceAxis extends Axis {

	}

	class ParentAxis extends Axis {

	}

	class PrecedingAxis extends Axis {

	}

	class PrecedingSiblingAxis extends Axis {

	}

	class SelfAxis extends Axis {

	}
-- End Axes
}

package PrimitiveType {
	datatype Boolean;
	datatype Integer;
	datatype String;
}