Requirement.g4

reqts

reqt

reqt

'requirement' DIGITS ID REQT_ID ':' reqt_body

reqt_body

nasa freeform '.'

freeform

STRING

nasa

scope reqt_condition component SHALL SHALL component timing response

scope

ONLY DURING WHEN IF IN scope_mode WHILE scope_condition AFTER BEFORE scope_mode scope_condition EXCEPT DURING WHEN IF IN scope_mode WHILE scope_condition WHEN IF NOT IN scope_mode IN DURING scope_mode UNLESS IN scope_mode WHILE scope_condition AFTER BEFORE scope_mode scope_condition ','

reqt_condition

AND regular_condition

regular_condition

qualified_condition1 ',' qualified_condition2 ','

qualifier_word

WHEN UNLESS WHERE IF UPON

qualified_condition1

qualifier_word pre_condition IS TRUE FALSE

qualified_condition2

AND OR qualifier_word pre_condition IS TRUE FALSE

scope_condition

bool_expr

scope_mode

MODE mode_name mode_name MODE mode_name

pre_condition

bool_expr

stop_condition

bool_expr

component

THE component_name

response

satisfaction

satisfaction

SATISFY post_condition

timing

',' timing_aux ','

timing_aux

WITHIN duration_upper FOR duration_upper AFTER duration_lower UNTIL stop_condition BEFORE stop_condition AT THE NEXT TIMEPOINT IMMEDIATELY EVENTUALLY ALWAYS NEVER

duration_upper

duration

duration_lower

duration

component_name

ID

mode_name

ID

duration

NUMBER timeunit

timeunit

TICK MICROSECOND MILLISECOND SECOND MINUTE HOUR

post_condition

bool_expr

bool_expr

'!' '~' bool_expr bool_expr '&' bool_expr bool_expr '|' XOR bool_expr bool_expr '->' '=>' '<->' '<=>' bool_expr IF bool_expr THEN bool_expr '(' bool_expr ')' numeric_expr RELATIONAL_OP numeric_expr ID '(' bool_expr numeric_expr ',' bool_expr numeric_expr ')' 'true' 'false'

numeric_expr

numeric_expr '^' numeric_expr '-' numeric_expr numeric_expr '*' '/' MOD numeric_expr numeric_expr '+' '-' numeric_expr NUMBER ID '(' bool_expr numeric_expr ',' bool_expr numeric_expr ')' '(' numeric_expr ')'

AFTER

A F T E R

ALWAYS

A L W A Y S

AND

A N D

AT

A T

BEFORE

B E F O R E

DURING

D U R I N G

EVENTUALLY

E V E N T U A L L Y

EXCEPT

E X C E P T

FALSE

F A L S E

FOR

F O R

HOUR

H O U R S

IF

I F

IMMEDIATELY

I M M E D I A T E L Y

IN

I N

IS

I S

MICROSECOND

M I C R O S E C O N D S

MILLISECOND

M I L L I S E C O N D S

MINUTE

M I N U T E S

MOD

M O D

MODE

M O D E

NEVER

N E V E R

NEXT

N E X T

NOT

N O T

ONLY

O N L Y

OR

O R

SATISFY

S A T I S F Y

SECOND

S E C O N D S

SHALL

S H A L L

THE

T H E

THEN

T H E N

TICK

T I C K S

TIMEPOINT

T I M E P O I N T

TRUE

T R U E

UNLESS

U N L E S S

UNTIL

U N T I L

UPON

U P O N

WHEN

W H E N

WHERE

W H E R E

WHILE

W H I L E

WITHIN

W I T H I N

XOR

X O R

STRING

'"' ESC any char '"'

RELATIONAL_OP

'<' '<=' '>' '>=' '=' '!='

NUMBER

'-' INT '.' [0-9] EXP '-' INT EXP '-' INT

EXP

[Ee] [+-] INT

INT

'0' [1-9] [0-9]

DIGITS

'0' .. '9'

ID

'a' .. 'z' 'A' .. 'Z' 'a' .. 'z' 'A' .. 'Z' '0' .. '9' '_'

REQT_ID

'a' .. 'z' 'A' .. 'Z' '0' .. '9' 'a' .. 'z' 'A' .. 'Z' '0' .. '9' '_' '-' '.'

WS

' ' '\t' '\r' '\n'

ESC

'\"' '\\'

A

[aA]

B

[bB]

C

[cC]

D

[dD]

E

[eE]

F

[fF]

G

[gG]

H

[hH]

I

[iI]

J

[jJ]

K

[kK]

L

[lL]

M

[mM]

N

[nN]

O

[oO]

P

[pP]

Q

[qQ]

R

[rR]

S

[sS]

T

[tT]

U

[uU]

V

[vV]

W

[wW]

X

[xX]

Y

[yY]

Z

[zZ]