Download Automatic Test Data Generation From VDM

Transcript
C
LR(1) GRAMMAR FOR VDM-SL
| function-definition-list “;” error
| function-definition-list error ;
function-definition = explicit-function-definition
| implicit-function-definition ;
explicit-function-definition = name “:” function-type name parameters-list “==” expression
maybe-precondition
| name “[” type-variable-list “]” “:” function-type name
parameters-list “==” expression maybe-precondition ;
implicit-function-definition = name parameter-type-list declName “:” type maybe-precondition
post expression
| name “[” type-variable-list “]” parameter-type-list declName “:”
type maybe-precondition post expression ;
type-variable-list = type-variable-identifier
| type-variable-list “,” type-variable-identifier ;
type-variable-identifier = “@” name ;
parameter-type-list = “(” “)”
| “(” pattern-type-pair-list “)” ;
pattern-type-pair-list = pattern-list “:” type
| pattern-type-pair-list “,” pattern-list “:” type ;
parameters-list = brack-maybe-pattern-list
| parameters-list brack-maybe-pattern-list ;
maybe-precondition = empty
| pre beginPreCond expression endPreCond ;
brack-maybe-pattern-list = “(” “)”
| “(” pattern-list “)” ;
operation-definition-list = operations openScope operation-definition closeScope
| operation-definition-list “;” openScope operation-definition
closeScope
| operation-definition-list “;” error
| operation-definition-list error ;
operation-definition = explicit-operation-definition
| implicit-operation-definition ;
explicit-operation-definition = name “:” discretionary-type “==>” discretionary-type name
brack-maybe-pattern-list “==” statement maybe-precondition ;
implicit-operation-definition = name parameter-type-list maybe-externals maybe-precondition
post expression
| name parameter-type-list maybe-externals maybe-precondition
post expression errs exception-list
62
Revision: 1.43