created: 20150103184022184 modified: 20150103184022184 title: $:/plugins/tiddlywiki/railroad/syntax The railroad widget constructs a diagram from the components defined below. `x` and `y` here stand for any component. --- ; sequence : <$railroad text=""" ["<-"] {x} ["->"] """/> * A sequence of components * The `<-` and `->` delimiters allow you to force a single component to be treated as a sequence. This is occasionally useful for spacing a diagram out --- ; optional : <$railroad text=""" "[" [":"] x "]" """/> * A component that can be omitted * The colon makes `x` appear straight ahead --- ; repeated : <$railroad text=""" "{" x [:"+" y] "}" """/> * A list of one or more `x` * The `+` suffix adds `y` as a separator between each `x` and the next --- ; optional repeated : <$railroad text=""" "[{" [":"] x [:"+" y] "}]" """/> * An optional list of `x`, i.e. a list of zero or more `x` --- ; choice : <$railroad text=""" "(" {[:":"] x +"|"} ")" """/> * A set of alternatives * The colon indicates which branch appears straight ahead. By default, it's the first branch --- ; string / terminal : <$railroad text={{$:/plugins/tiddlywiki/railroad/syntax-string}}/> * A literal or terminal component * This follows the normal ~TiddlyWiki rules for quoted strings --- ; nonterminal : <$railroad text=""" (name | "<" string ">") """/> * A nonterminal component, i.e. the name of another diagram * The simple `name` option is available when the text starts with a letter and contains only letters, digits, underscores, dots and hyphens --- ; comment : <$railroad text=""" "/" string "/" """/> * A comment --- ; dummy : <$railroad text=""" "-" """/> * The absence of a component