BNF for JaCaMoProjectParser.jcc

NON-TERMINALS

parse ::= ( <EOL> )* <MAS> <ATOM> ( <USES> fileName ( "," fileName )* )? ( <EOL> )* "{" ( <EOL> )* ( agent )* ( workspace )* ( organisation )* ( ( <CLASSPATH> ":" ( fileName ( <EOL> | "," )+ )* | <ASLPATH> ":" ( fileName ( <EOL> | "," )+ )* | <PLATFORM> ":" ( classDef ( <EOL> | "," )+ )* | <NODE> <ATOM> ( <RUNNING> )? ( "@" host )? ( <EOL> | "," )+ ) )* "}" ( <EOL> )* <EOF>
agent ::= <AGENT> <ATOM> ( ":" fileName )? ( "{" ( <EOL> )* ( ( <INSTANCES> ":" ( <INT> ( <EOL> | "," )+ | ( <ATOM> ( <EOL> | "," )+ )* ) | <NODE> ":" <ATOM> ( <EOL> )+ | <AGARCH> ":" ( classDef ( <EOL> | "," )+ )* | <AGCLASS> ":" classDef ( <EOL> )+ | <AGBBCLASS> ":" classDef ( <EOL> )+ | <BELIEF> ":" ( literal ( <EOL> | "," )+ )* | <GOAL> ":" ( literal ( <EOL> | "," )+ )* | <FOCUS> ":" ( <ATOM> ( "@" <ATOM> )? ( <EOL> | "," )+ )* | <JOIN> ":" ( <ATOM> ( "@" <ATOM> )? ( <EOL> | "," )+ )* | <ROLES> ":" ( <ATOM> <IN> <ATOM> ( <EOL> | "," )+ )* | <DEBUG> ":" literal ( <EOL> | "," )+ | <ATOM> ":" ( <STRING> | <REAL> | <INT> | literal ) ( <EOL> )+ ) )* "}" )? ( <EOL> )*
workspace ::= <WORKSPACE> <ATOM> "{" ( <EOL> )* ( artifact | <AGENTS> ":" ( ( <ATOM> | <AST> ) ( <EOL> | "," )+ )* | <NODE> ":" <ATOM> ( <EOL> )+ )* "}" ( <EOL> )*
artifact ::= <ARTIFACT> <ATOM> ":" classDef ( "{" ( <EOL> )* ( <FOCUSED> ":" ( ( <ATOM> | <AST> ) ( <EOL> | "," )+ )* )? "}" )? ( <EOL> )*
organisation ::= <ORG> <ATOM> ( ":" fileName )? "{" ( <EOL> )* ( ( group | scheme | <AGENTS> ":" ( ( <ATOM> | <AST> ) ( <EOL> | "," )+ )* | <NODE> ":" <ATOM> ( <EOL> )+ | <ATOM> ":" ( <STRING> | <REAL> | <INT> | literal ) ( <EOL> )+ ) )* "}" ( <EOL> )*
group ::= <GROUP> <ATOM> ":" <ATOM> ( "{" ( <EOL> )* ( ( group | <RESPFOR> ":" <ATOM> ( <EOL> )+ | <DEBUG> ( <EOL> )+ | <ATOM> ":" ( <STRING> | <REAL> | <INT> | literal ) ( <EOL> )+ | <PLAYERS> ":" ( <ATOM> <ATOM> ( <EOL> | "," )+ )* ) )* "}" )? ( <EOL> )*
scheme ::= <SCHEME> <ATOM> ":" <ATOM> ( "{" ( <EOL> )* ( <DEBUG> ( <EOL> )+ | <ATOM> ":" ( <STRING> | <REAL> | <INT> | literal ) ( <EOL> )+ )* "}" )? ( <EOL> )*
host ::= ( <ATOM> | <STRING> | <IP> ) ( ":" <INT> )?
fileName ::= ( ( "/" | "-" | <DOT> | <DOTDOT> | <ATOM> )+ | <STRING> )
classDef ::= ( <VAR> | <ATOM> ) ( "." ( <VAR> | <ATOM> ) )* ( "(" ( ( parameter ) ( "," ( parameter ) )* )? ")" )?
parameter ::= ( classDef | <INT> | <REAL> | <STRING> | listParameters )
listParameters ::= "[" ( parameter ) ( "," parameter )* "]"
literal ::= ( ( ( <TK_NEG> )? ( pred | var ) ) | <TK_TRUE> | <TK_FALSE> )
pred ::= ( <ATOM> | <TK_BEGIN> | <TK_END> ) ( "(" terms ")" )? ( list )?
terms ::= term ( "," term )*
term ::= ( list | literal | string | <INT> | <REAL> )
list ::= "[" ( term ( "," term )* ( "|" ( <VAR> | <UNNAMEDVAR> | list ) )? )? "]"
var ::= ( <VAR> | <UNNAMEDVAR> ) ( list )?
string ::= <STRING>