About this Page
This page gives the formal syntax for the POMDP file format which
is used for the 'pomdp-solve' program. The informal, semantic description is
on the POMDP File Format Page.
BNF-ish POMDP File Grammar
This is taken from the syntax for the Java version POMDP parser (JavaCup) which was made to match identically to the C parser version (yacc/bison).
pomdp_file ::= preamble start_state param_list
;
preamble ::= preamble param_type
| /* empty */
;
param_type ::= discount_param
| value_param
| state_param
| action_param
| obs_param
;
discount_param ::= DISCOUNTTOK COLONTOK number
;
value_param ::= VALUESTOK COLONTOK value_tail
;
value_tail ::= REWARDTOK
| COSTTOK
;
state_param ::= STATESTOK COLONTOK state_tail
;
state_tail ::= INTTOK
| ident_list
;
action_param ::= ACTIONSTOK COLONTOK action_tail
;
action_tail ::= INTTOK
| ident_list
;
obs_param ::= OBSERVATIONSTOK COLONTOK obs_param_tail
;
obs_param_tail ::= INTTOK
| ident_list
;
start_state ::= STARTTOK COLONTOK u_matrix
| STARTTOK COLONTOK STRINGTOK
| STARTTOK INCLUDETOK COLONTOK start_state_list
| STARTTOK EXCLUDETOK COLONTOK start_state_list
| /* empty */
;
start_state_list ::= start_state_list state
| state
;
param_list ::= param_list param_spec
| /* empty */
;
param_spec ::= trans_prob_spec
| obs_prob_spec
| reward_spec
;
trans_prob_spec ::= TTOK COLONTOK trans_spec_tail
;
trans_spec_tail ::= paction COLONTOK state COLONTOK state prob
| paction COLONTOK state u_matrix
| paction ui_matrix
;
obs_prob_spec ::= OTOK COLONTOK obs_spec_tail
;
obs_spec_tail ::= paction COLONTOK state COLONTOK obs prob
| paction COLONTOK state u_matrix
| paction u_matrix
;
reward_spec ::= RTOK COLONTOK reward_spec_tail
;
reward_spec_tail ::= paction COLONTOK state COLONTOK state COLONTOK obs number
| paction COLONTOK state COLONTOK state num_matrix
| paction COLONTOK state num_matrix
;
ui_matrix ::= UNIFORMTOK
| IDENTITYTOK
| prob_matrix
;
u_matrix ::= UNIFORMTOK
| RESETTOK
| prob_matrix
;
prob_matrix ::= prob_matrix prob
| prob
;
num_matrix ::= num_matrix number
| number
;
state ::= INTTOK
| STRINGTOK
| ASTERICKTOK
;
paction ::= INTTOK
| STRINGTOK
| ASTERICKTOK
;
obs ::= INTTOK
| STRINGTOK
| ASTERICKTOK
;
ident_list ::= ident_list STRINGTOK
| STRINGTOK
;
prob ::= INTTOK
| FLOATTOK
;
number ::= optional_sign INTTOK
| optional_sign FLOATTOK
;
optional_sign ::= PLUSTOK
| MINUSTOK
| /* empty */
;
Terminal Tokens
The terminal tokens defined in the scanner and referenced in the grammar above are:
DISCOUNTTOK = "discount" VALUESTOK = "values" STATESTOK = "states" ACTIONSTOK = "actions" OBSERVATIONSTOK = "observations" TTOK = "T" OTOK = "O" RTOK = "R" UNIFORMTOK = "uniform" IDENTITYTOK = "identity" REWARDTOK = "reward" COSTTOK = "cost" STARTTOK = "start" INCLUDETOK = "include" EXCLUDETOK = "exclude" RESETTOK = "reset" COLONTOK = ":" ASTERICKTOK = "*" PLUSTOK = "+" MINUSTOK = "-" INTTOK = 0 | [1-9][0-9]*' FLOATTOK = ([0-9]+ \. [0-9]* | \. [0-9]+ | [0-9]+ ) ([eE] [+-]? [0-9]+)? STRINGTOK = [a-zA-Z] ( [a-zA-Z0-9] | [\_\-] )*
POMDP.org