StrictDoc Documentation
strictdoc/core/query_engine/grammar.py
Source file coverage
Path:
strictdoc/core/query_engine/grammar.py
Lines:
173
Non-empty lines:
142
Non-empty lines covered with requirements:
142 / 142 (100.0%)
Functions:
0
Functions covered by requirements:
0 / 0 (0.0%)
1
"""
2
@relation(SDOC-SRS-155, scope=file)
3
"""
4
 
5
QUERY_GRAMMAR = r"""
6
Query:
7
 root_expression = BooleanExpression
8
;
9
 
10
AndExpression:
11
  '('
12
  expressions += BooleanExpression
13
  ('and' expressions += BooleanExpression)+
14
  ')'
15
;
16
 
17
OrExpression:
18
  '('
19
  expressions += BooleanExpression
20
  ('or' expressions += BooleanExpression)+
21
  ')'
22
;
23
 
24
NotExpression:
25
  'not'
26
  expression = BooleanExpression
27
;
28
 
29
BooleanExpression:
30
  AndExpression
31
  |
32
  OrExpression
33
  |
34
  NotExpression
35
  |
36
  NodeHasParentRequirementsExpression
37
  |
38
  NodeHasChildRequirementsExpression
39
  |
40
  AnyInExpression
41
  |
42
  AllInExpression
43
  |
44
  NoneInExpression
45
  |
46
  InExpression
47
  |
48
  NotInExpression
49
  |
50
  NodeContainsExpression
51
  |
52
  NodeContainsAnyFreeTextExpression
53
  |
54
  NodeIsRequirementExpression
55
  |
56
  NodeIsSectionExpression
57
  |
58
  NodeIsSourceFileExpression
59
  |
60
  NodeIsSourceFileWithCompleteCoverageExpression
61
  |
62
  NodeIsSourceFileWithPartialCoverageExpression
63
  |
64
  NodeIsSourceFileWithNoCoverageExpression
65
  |
66
  NodeIsRootExpression
67
  |
68
  EqualExpression
69
  |
70
  NotEqualExpression
71
;
72
 
73
StringExpression:
74
  '"' string = /[^"]+/ '"'
75
;
76
 
77
NoneExpression:
78
  _ = 'None'
79
;
80
 
81
StringListExpression:
82
  '[' strings += StringExpression[','] ']'
83
;
84
 
85
NodeFieldExpression:
86
  'node["' field_name = /[A-Za-z0-9]+/ '"]'
87
;
88
 
89
NodeContainsExpression:
90
  'node.contains("' string = /[A-Za-z0-9]+/ '")'
91
;
92
 
93
NodeContainsAnyFreeTextExpression:
94
  _ = 'node.contains_any_text'
95
;
96
 
97
NodeHasParentRequirementsExpression:
98
  _ = 'node.has_parent_requirements'
99
;
100
 
101
NodeHasChildRequirementsExpression:
102
  _ = 'node.has_child_requirements'
103
;
104
 
105
NodeIsRequirementExpression:
106
  _ = 'node.is_requirement' '()'?
107
;
108
 
109
NodeIsRootExpression:
110
  _ = 'node.is_root'
111
;
112
 
113
NodeIsSectionExpression:
114
  _ = 'node.is_section' '()'?
115
;
116
 
117
NodeIsSourceFileExpression:
118
  _ = 'node.is_source_file()'
119
;
120
 
121
NodeIsSourceFileWithCompleteCoverageExpression:
122
  _ = 'node.is_source_file_with_complete_coverage()'
123
;
124
 
125
NodeIsSourceFileWithPartialCoverageExpression:
126
  _ = 'node.is_source_file_with_partial_coverage()'
127
;
128
 
129
NodeIsSourceFileWithNoCoverageExpression:
130
  _ = 'node.is_source_file_with_no_coverage()'
131
;
132
 
133
EqualExpression:
134
  lhs_expr = ComparableExpression '==' rhs_expr = ComparableExpression
135
;
136
 
137
NotEqualExpression:
138
  lhs_expr = ComparableExpression '!=' rhs_expr = ComparableExpression
139
;
140
 
141
ComparableExpression:
142
  NodeFieldExpression | StringExpression | NoneExpression
143
;
144
 
145
InExpression:
146
  lhs_expr = InableLHSExpression 'in' rhs_expr = InableRHSExpression
147
;
148
 
149
NotInExpression:
150
  lhs_expr = InableLHSExpression 'not in' rhs_expr = InableRHSExpression
151
;
152
 
153
AnyInExpression:
154
  'any' '(' lhs_expr = StringListExpression ')' 'in' rhs_expr = InableRHSExpression
155
;
156
 
157
AllInExpression:
158
  'all' '(' lhs_expr = StringListExpression ')' 'in' rhs_expr = InableRHSExpression
159
;
160
 
161
NoneInExpression:
162
  'none' '(' lhs_expr = StringListExpression ')' 'in' rhs_expr = InableRHSExpression
163
;
164
 
165
InableLHSExpression:
166
  NodeFieldExpression | StringExpression
167
;
168
 
169
InableRHSExpression:
170
  NodeFieldExpression | StringExpression
171
;
172
 
173
"""