>>>> Integral Type Syntax : : | : Bin|Bin() // Bin means bin as per test object, Bin(Undefined) is the same as not binning : : {*} : if () | : Bool|Category|DCLevels|Integer|MathExpr|NrwUnits|PatternBurstSelector|SignalGroup|String|Timing : : : [a-zA-Z][a-zA-Z0-9_]* : : : mutable // With: arg may be set per test object execution, Without: arg set once : : : GroupExit|NextNode| // within Group, last FlowNode's NextNode=GroupExit : : (;)*|(;)? : "" : ||||| ||||| ||||| ||||| : Pass|Fail : Amperes = |Infinity; Bool = True|False; Category = ; Coulombs = |Infinity; DCLevels = ; Farads = |Infinity; Hertz = |Infinity; Integer = ; MathExpr = ; // e.g., I^2*R NrwUnits = ; // e.g., 1.5V, 1.5A2Ohms ? Ohms = |Infinity; PatternBurst = ; Real = |Infinity; Seconds = |Infinity Selector = ; SignalGroup | = ||EmptySignalGroup String = ; Timing = ; Volts = |Infinity; Watts = |Infinity; PassBinMap|FailBinMap { (Axis { (Bin { (Descriptor = ;)* // Absence implies Descriptor = (PerRunCounter = ;)* // Absence implies Counter = 0, reinitialized with each run })* })* (Handler { [axis1, ..., axisN] ; // Nr of lines req'd = size(axis1)* ... *size(axisN) } )* } FlowNode { (Execute ( // Reference to previously defined Test { (In = ;)* // Override default non-const parameter value (InOut = ;)* // Override default non-const read/write reference to (Out = ;)* // Override default non-const parameter value })| ( // Anonymous instantiation of Method { (In = ;)* // Set default/only value (InOut = ;)* // Set default/only read/write reference to (Out = ;)* // Set default/only value }) ) (Ports { (EntryActions { ((NoActionExit )|)? })* (Exit { (Condition ;)? (NextNode ;) (Actions { })? })+ }) } Method Test { // indicates whether parameter can be changed during flow (In = ;)* // Set default value (InOut = ;)* // Set default read/write reference to (Out = ;)* // Set default value Ports { EntryActions { NoActionExit| } Exit { Condition Fail { (Actions { ; })* } Condition Pass // No (necessary|permitted) on last Condition { (Actions { ; })* } } } } // A Group may in principle contain 0 or more FlowNodes but STIL's integral // type contains none. Method Group { IsA Test; } // A Flow may in principle contain 0 or more FlowNodes by virtue of being a // Group but STIL's integral type contains none. Method Flow { IsA Group; } // STIL and User Defined Methods Method { // Absence of statement implies 'IsA Test'. IsA Test|Group inherits // functions and data. Multiple inheritance is virtual, i.e., only one // copy of Test|Group|Method data is ever inherited. (IsA Test|Group|;)* // Method can't inherit from itself } // Test Object Instantiation Test { (In = ;)* // Setting default value for parameter defined in Method (InOut = ;)* // Setting read/write reference parameter defined in Method (Out = ;)* // Setting default value for parameter defined in Method }