Three Concepts: Probability | Projects and assignments

Grammar for Bayesian Networks

Here is a grammar for the network descriptions that the data generators should use. The grammar is in Extended BNF. The lexical syntax of string literals and indentifiers is the same as in C and Java. Escape sequences in string literals may be omitted, and a richer language to express real constants may be used (e.g. one accepting 10E-2 etc.) In addition, the parser should be insensitive to white space and C-style comments.

The Grammar

Lexemes:

    BROPEN     ::= '{'
    BRCLOSE    ::= '}'
    PAOPEN     ::= '('
    PACLOSE    ::= ')'
    SEMIC      ::= ';'
    EQUALS     ::= '='
    VBAR       ::= '|'
    DOT        ::= '.'
    MINUS      ::= '-'

    NET        ::= "net"
    NODE       ::= "node"
    POTENTIAL  ::= "potential"
    
    Number     ::= '0'|'1'|..|'9'
    Integer    ::= MINUS? Number+
    Real       ::= MINUS? Number+ DOT Number+
    String     ::= /* C/Java String literal */
    Identifier ::= /* C/Java identifier */

Productions:

    bnetwork   ::= net? node* potential*

    net        ::= NET attributes
    node       ::= NODE Identifier attributes
    potential  ::= POTENTIAL potlist attributes

    attribute  ::= Identifier EQUALS value SEMIC
    attributes ::= BROPEN attribute* BRCLOSE

    list       ::= PAOPEN value* PACLOSE
    value      ::= Integer | String | Real | list

    potlist    ::= PAOPEN Identifier PACLOSE
                 | PAOPEN Identifier VBAR Identifier+ PACLOSE 

The nodes should have attributes label and states that give the name of the label and a list of its possible states. The potentials should give the probability tables for the nodes as list attributes labeled data. The generator must silently ignore all attributes unknown to it. Study the networks output by B-Course to get a grip of the format!

 

 Three Concepts: Probability
2006