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 = BooleanExpression8
;9
10
AndExpression:11
'('12
expressions += BooleanExpression13
('and' expressions += BooleanExpression)+14
')'15
;16
17
OrExpression:18
'('19
expressions += BooleanExpression20
('or' expressions += BooleanExpression)+21
')'22
;23
24
NotExpression:25
'not'26
expression = BooleanExpression27
;28
29
BooleanExpression:30
AndExpression31
|32
OrExpression33
|34
NotExpression35
|36
NodeHasParentRequirementsExpression37
|38
NodeHasChildRequirementsExpression39
|40
AnyInExpression41
|42
AllInExpression43
|44
NoneInExpression45
|46
InExpression47
|48
NotInExpression49
|50
NodeContainsExpression51
|52
NodeContainsAnyFreeTextExpression53
|54
NodeIsRequirementExpression55
|56
NodeIsSectionExpression57
|58
NodeIsSourceFileExpression59
|60
NodeIsSourceFileWithCompleteCoverageExpression61
|62
NodeIsSourceFileWithPartialCoverageExpression63
|64
NodeIsSourceFileWithNoCoverageExpression65
|66
NodeIsRootExpression67
|68
EqualExpression69
|70
NotEqualExpression71
;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 = ComparableExpression135
;136
137
NotEqualExpression:138
lhs_expr = ComparableExpression '!=' rhs_expr = ComparableExpression139
;140
141
ComparableExpression:142
NodeFieldExpression | StringExpression | NoneExpression143
;144
145
InExpression:146
lhs_expr = InableLHSExpression 'in' rhs_expr = InableRHSExpression147
;148
149
NotInExpression:150
lhs_expr = InableLHSExpression 'not in' rhs_expr = InableRHSExpression151
;152
153
AnyInExpression:154
'any' '(' lhs_expr = StringListExpression ')' 'in' rhs_expr = InableRHSExpression155
;156
157
AllInExpression:158
'all' '(' lhs_expr = StringListExpression ')' 'in' rhs_expr = InableRHSExpression159
;160
161
NoneInExpression:162
'none' '(' lhs_expr = StringListExpression ')' 'in' rhs_expr = InableRHSExpression163
;164
165
InableLHSExpression:166
NodeFieldExpression | StringExpression167
;168
169
InableRHSExpression:170
NodeFieldExpression | StringExpression171
;172
173
"""