File Xiog.html Author Bill McKeeman Copyright © 2007
program = stmts eof "program1" ;
stmts = stmt "stmts1" (';' stmt "stmts2")* ;
stmt = "stmt1"
| selection "stmt2"
| iteration "stmt3"
| assignment "stmt4" ;
selection = 'if' alts 'fi' "selection1" ;
iteration = 'do' alts 'od' "iteration1" ;
alts = alt "alts1" ('::' alt "alts2")* ;
alt = guard '?' stmts "alt1" ;
guard = expr "guard1" ;
assignment = vars ':=' exprs "assignment1"
| vars ':=' subprogram ':=' exprs "assignment2"
| ':=' subprogram ':=' exprs "assignment3"
| vars ':=' subprogram ':=' "assignment4"
| ':=' subprogram ':=' "assignment5" ;
vars = id "vars1" (',' id "vars2")* ;
exprs = expr "exprs1" (',' expr "exprs2")* ;
subprogram = id "subprogram1" ;
expr = disjunction "expr1" ;
disjunction = conjunction "disjunction1" ('|' conjunction "disjunction2")* ;
conjunction = negation "conjunction1" ('&' negation "conjunction2")* ;
negation = relation "negation1"
| '~' relation "negation2" ;
relation = sum "relation1"
| sum '<' sum "relation2"
| sum '<=' sum "relation3"
| sum '=' sum "relation4"
| sum '~=' sum "relation5"
| sum '>=' sum "relation6"
| sum '>' sum "relation7" ;
sum = (term "sum1" | '-' term "sum2") ('+' term "sum3" | '-' term "sum4")* ;
term = factor "term1"
('*' factor "term2" | '/' factor "term3" | '//' factor "term4")* ;
factor = 'true' "factor1"
| 'false' "factor2"
| integer "factor3"
| real "factor4"
| id "factor5"
| '(' expr ')' "factor6"
| 'b2i' factor "factor7"
| 'i2r' factor "factor8"
| 'r2i' factor "factor9"
| 'rand' "factor10" ;