<pxlprog> ::= <pxexpr> { <pxexpr> }
pxexpr ::= <func> | <single_quoted_text> | <interpolated_quoted_text> | <atom>
func ::= <atom> '(' <arg> { <arg> } ')'
<fact> ::= <pred> .
<pred> ::= <atom> [ ( <arglist> ) ]
<rule> ::= [ <head> ] : - <body> .
<head> ::= <pred>
<body> ::= <goal> { , <goal> }
<goal> ::= <pred> | !
<arglist> ::= <arg> { , <arg> }
<arg> ::= <atom> | <var> | <list>
<atom> ::= <lcchar> { <anychar> }
<atom> ::= ' { <anychar> } '
<var> ::= <ucchar> { <anychar> }
<var> ::= _ { <anychar> }
<list> ::= <leftbracket> <rightbracket>
<list> ::= <leftbracket> <listelems> <rightbracket>
<listelems> ::= <arglist>
<listelems> ::= <arglist> <barsymbol> <list>
<listelems> ::= <arglist> <barsymbol> <var>