規則は名前、等号、定義で、半角セミコロンで終わります。terminal はリテラル、nonterminal は別の規則です。
railroad-beta
rule = sequence(terminal("a"), nonterminal("other")) ;
other = terminal("b") ;choice は候補を角括弧に入れます。規則そのものを choice と呼ぶことはできません。その名前は埋まっています。
railroad-beta
alt = choice(terminal("a"), terminal("b")) ;optional は省略してよい部分を包みます。
railroad-beta
rule = sequence(optional(nonterminal("tail")), terminal("head")) ;
tail = terminal("t") ;oneOrMore は 1 つ以上、zeroOrMore は 0 個でもかまいません。どちらも繰り返す部分を包みます。
railroad-beta
digits = oneOrMore(terminal("0")) ;
words = zeroOrMore(terminal("x")) ;