ERE Plugin2.3 Input Syntax

From FSL
Jump to: navigation, search

The MOP ERE plugin syntax instantiates the generic <Logic Name>, <Logic Syntax>, and <Logic State> from the Logic Repository Syntax. It is used in conjunction with the <Logic Repository I/O> syntax, and defined using BNF

// BNF below is extended with {p} for zero or more and [p] for zero or one repetitions of p
 
// The mandatory MOP logic syntax
<ERE Name> ::= "ere"
<ERE Syntax> ::= "empty" | "epsilon"
| <Event Name>
| <ERE Syntax> "*"
| <ERE Syntax> "+"
| "~" <ERE Syntax>
| <ERE Syntax> "|" <ERE Syntax>
| <ERE Syntax> "&" <ERE Syntax>
| <ERE Syntax> <ERE Syntax>
| "(" <ERE Syntax> ")"
<ERE State> ::= "match" | "fail"

<ERE Name>

<ERE Name> instantiates <Logic Name> from the MOP Syntax and Logic Repository Syntax. It denotes the ERE logic using the string "ere".

<ERE Syntax>

<ERE Syntax> instantiates <Logic Syntax> from the MOP Syntax and Logic Repository Syntax.. The terminal "epsilon" corresponds to the language containing only the empty word, "empty" to the empty language, and <Event Name> to the language containing only the named event as a one-letter word. The different operators in decreasing tightness of binding are ~_ , _*/_+, __, _&_,_|_ and have the following interpretation:

  • ~ P contains all the words except for those accepted by the pattern P.
  • P * contains zero or more occurrences of words accepted by the pattern P.
  • P + contains one or more occurrences of words accepted by the pattern P.
  • P | P' is the union of words accepted by P and P'.
  • P P' concatenates words accepted by P and those accepted by P'.
  • P & P' is the intersection of words accepted by P and P'.

<ERE State>

<ERE State> instantiates <Logic State> from the MOP Syntax and Logic Repository Syntax. In an ERE specification, <ERE State> can be the special state match or the special state fail. match corresponds to a situation wherein the trace matches the specified pattern, whereas fail occurs when the trace is not a prefix of any matching trace. The ERE monitor is unable to leave the fail state once it is entered, as an invalid prefix cannot lead to a valid trace.


Example

<mop>
<Client>Web</Client>
<Events>a b</Events>
<Property>
<Logic>ere</Logic>
<Formula>(a b)* ~(b ~(a b))</Formula>
</Property>
<Categories>fail match</Categories>
</mop>

This example monitors a fairly complex pattern of as and bs. It matches those strings that are some number (possibly zero) of pairs of a b followed by b a b or a and any combination of bs and as.

Personal tools
Namespaces

Variants
Actions
Navigation