Eine Regel ist ein Name, ein Gleichheitszeichen und eine Definition, die mit einem Semikolon endet. terminal ist ein Literal, nonterminal eine andere Regel.
railroad-beta
rule = sequence(terminal("a"), nonterminal("other")) ;
other = terminal("b") ;choice nimmt die Alternativen in Klammern. Die Regel selbst darf nicht choice heißen — der Name ist vergeben.
railroad-beta
alt = choice(terminal("a"), terminal("b")) ;optional umschließt ein Teil, das weggelassen werden darf.
railroad-beta
rule = sequence(optional(nonterminal("tail")), terminal("head")) ;
tail = terminal("t") ;oneOrMore braucht mindestens eines, zeroOrMore keines. Beide umschließen das Teil, das sie wiederholen.
railroad-beta
digits = oneOrMore(terminal("0")) ;
words = zeroOrMore(terminal("x")) ;