Path:
strictdoc/core/query_engine/grammar.py
Lines:
151
Non-empty lines:
124
Non-empty lines covered with requirements:
124 / 124 (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
InExpression41
|42
NotInExpression43
|44
NodeContainsExpression45
|46
NodeContainsAnyFreeTextExpression47
|48
NodeIsRequirementExpression49
|50
NodeIsSectionExpression51
|52
NodeIsSourceFileExpression53
|54
NodeIsSourceFileWithCompleteCoverageExpression55
|56
NodeIsSourceFileWithPartialCoverageExpression57
|58
NodeIsSourceFileWithNoCoverageExpression59
|60
NodeIsRootExpression61
|62
EqualExpression63
|64
NotEqualExpression65
;66
67
StringExpression:68
'"' string = /[^"]+/ '"'69
;70
71
NoneExpression:72
_ = 'None'73
;74
75
NodeFieldExpression:76
'node["' field_name = /[A-Za-z0-9]+/ '"]'77
;78
79
NodeContainsExpression:80
'node.contains("' string = /[A-Za-z0-9]+/ '")'81
;82
83
NodeContainsAnyFreeTextExpression:84
_ = 'node.contains_any_text'85
;86
87
NodeHasParentRequirementsExpression:88
_ = 'node.has_parent_requirements'89
;90
91
NodeHasChildRequirementsExpression:92
_ = 'node.has_child_requirements'93
;94
95
NodeIsRequirementExpression:96
_ = 'node.is_requirement' '()'?97
;98
99
NodeIsRootExpression:100
_ = 'node.is_root'101
;102
103
NodeIsSectionExpression:104
_ = 'node.is_section' '()'?105
;106
107
NodeIsSourceFileExpression:108
_ = 'node.is_source_file()'109
;110
111
NodeIsSourceFileWithCompleteCoverageExpression:112
_ = 'node.is_source_file_with_complete_coverage()'113
;114
115
NodeIsSourceFileWithPartialCoverageExpression:116
_ = 'node.is_source_file_with_partial_coverage()'117
;118
119
NodeIsSourceFileWithNoCoverageExpression:120
_ = 'node.is_source_file_with_no_coverage()'121
;122
123
EqualExpression:124
lhs_expr = ComparableExpression '==' rhs_expr = ComparableExpression125
;126
127
NotEqualExpression:128
lhs_expr = ComparableExpression '!=' rhs_expr = ComparableExpression129
;130
131
ComparableExpression:132
NodeFieldExpression | StringExpression | NoneExpression133
;134
135
InExpression:136
lhs_expr = InableLHSExpression 'in' rhs_expr = InableRHSExpression137
;138
139
NotInExpression:140
lhs_expr = InableLHSExpression 'not in' rhs_expr = InableRHSExpression141
;142
143
InableLHSExpression:144
NodeFieldExpression | StringExpression145
;146
147
InableRHSExpression:148
NodeFieldExpression | StringExpression149
;150
151
"""