-- Copyright 2020 United States Government as represented by the Administrator -- of the National Aeronautics and Space Administration. All Rights Reserved. -- -- Disclaimers -- -- No Warranty: THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY -- OF ANY KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT -- LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO -- SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -- PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT THE -- SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF -- PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE. THIS AGREEMENT DOES NOT, IN -- ANY MANNER, CONSTITUTE AN ENDORSEMENT BY GOVERNMENT AGENCY OR ANY PRIOR -- RECIPIENT OF ANY RESULTS, RESULTING DESIGNS, HARDWARE, SOFTWARE PRODUCTS OR -- ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT SOFTWARE. FURTHER, -- GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING -- THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES -- IT "AS IS." -- -- Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST -- THE UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS -- ANY PRIOR RECIPIENT. IF RECIPIENT'S USE OF THE SUBJECT SOFTWARE RESULTS IN -- ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES OR LOSSES ARISING FROM SUCH USE, -- INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR RESULTING FROM, RECIPIENT'S -- USE OF THE SUBJECT SOFTWARE, RECIPIENT SHALL INDEMNIFY AND HOLD HARMLESS THE -- UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY -- PRIOR RECIPIENT, TO THE EXTENT PERMITTED BY LAW. RECIPIENT'S SOLE REMEDY -- FOR ANY SUCH MATTER SHALL BE THE IMMEDIATE, UNILATERAL TERMINATION OF THIS -- AGREEMENT. -- -- Simplified grammar of CoCoSpec boolean expressions. entrypoints BoolSpec; -- Boolean Expressions _ . BoolSpec ::= BoolSpec ";" ; BoolSpecPar. BoolSpec ::= "(" BoolSpec ")" ; BoolSpecConstI. BoolSpec ::= Integer ; BoolSpecConstD. BoolSpec ::= Double ; BoolSpecConstB. BoolSpec ::= BoolConst ; BoolSpecSignal. BoolSpec ::= Ident ; BoolSpecOp1Pre. BoolSpec ::= Op1Pre BoolSpec ; BoolSpecOp2In. BoolSpec ::= BoolSpec Op2In BoolSpec ; BoolSpecOp2Pre. BoolSpec ::= Op2Pre "(" BoolSpec "," BoolSpec ")" ; BoolSpecOp2OT. BoolSpec ::= "OT" "(" NumExpr "," NumExpr "," BoolSpec ")" ; BoolSpecOp2HT. BoolSpec ::= "HT" "(" NumExpr "," NumExpr "," BoolSpec ")" ; BoolSpecOp2ST. BoolSpec ::= "ST" "(" NumExpr "," NumExpr "," BoolSpec "," BoolSpec ")" ; -- Boolean Operators Op1Once. Op1Pre ::= "O" ; Op1Pre. Op1Pre ::= "pre" ; Op1YtoPre. Op1Pre ::= "YtoPre" ; Op1ZtoPre. Op1Pre ::= "ZtoPre" ; Op1Hist. Op1Pre ::= "H" ; Op1Y. Op1Pre ::= "Y" ; Op1Not. Op1Pre ::= "not" ; Op1Bang. Op1Pre ::= "!" ; Op2And. Op2In ::= "and" ; Op2Amp. Op2In ::= "&" ; Op2Or. Op2In ::= "or" ; Op2Impl. Op2In ::= "=>" ; Op2NumOp . Op2In ::= NumOp2In ; Op2NumCmp . Op2In ::= BoolNumOp ; Op2InPre. Op2In ::= "->" ; Op2SI. Op2Pre ::= "SI" ; Op2OT. Op2Pre ::= "OT" ; -- Numeric Expressions NumExprNum. NumExpr ::= Integer ; NumExprId. NumExpr ::= Ident ; NumExprPar. NumExpr ::= "(" NumExpr ")" ; NumExprOp2In. NumExpr ::= NumExpr NumOp2In NumExpr ; -- Numeric Operators NumOp2Plus. NumOp2In ::= "+" ; NumOp2Minus. NumOp2In ::= "-" ; NumOp2Mult . NumOp2In ::= "*" ; BoolNumOp2Eq . BoolNumOp ::= "=" ; BoolNumOp2Ne . BoolNumOp ::= "<>" ; BoolNumOp2Le . BoolNumOp ::= "<=" ; BoolNumOp2Lt . BoolNumOp ::= "<" ; BoolNumOp2Gt . BoolNumOp ::= ">" ; BoolNumOp2Ge . BoolNumOp ::= ">=" ; -- Basic types BoolConstTrue. BoolConst ::= "true" ; BoolConstFalse. BoolConst ::= "false" ; BoolConstFTP. BoolConst ::= "FTP" ;