Syntax tree generator made with Ruby and RMagic
Clone or download
Latest commit e423279 Jun 7, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin new text decoration options and finer text alignment Mar 20, 2018
fonts new text decoration options and finer text alignment Mar 20, 2018
lib 0.7.5 Jun 6, 2018
.gitignore ignore unnecessary files Apr 8, 2017
Gemfile Package simplified: commandline only Feb 27, 2018 spaces in nodes by <> Jun 6, 2018
Rakefile initial import of version 0.5 Mar 6, 2012
rsyntaxtree.gemspec Small fix Feb 27, 2018

RSyntaxTree: yet another syntax tree generator in Ruby

RSyntaxTree is a graphical syntax tree generator written in the Ruby programming language inspired by phpSyntaxTree.

Web Interface

Working web interface of is available at


# gem install rsyntaxtree


For the web interface, see Usage section of

For the command-line interface, type $rsyntaxtree -h after installation. Here's what you get:

RSyntaxTree, (linguistic) syntax tree generator written in Ruby.

       rsyntaxtree [options] "[VP [VP [V set] [NP bracket notation]] [ADV here]]"
where [options] are:
      -o, --outdir=<s>        Output directory (default: ./)
      -f, --format=<s>        Output format: png, pdf, or svg (default: png)
      -l, --leafstyle=<s>     visual style of tree leaves: auto, triangle, bar, or nothing (default: auto)
      -n, --fontstyle=<s>     Font style: sans, serif, cjk (default: sans)
      -t, --font=<s>          Path to a ttf font used to generate tree (optional)
      -s, --fontsize=<i>      Size: 8-26 (default: 16)
      -c, --color=<s>         Color text and bars: on or off (default: on)
      -y, --symmetrize=<s>    Generate symmetrical, balanced tree: on or off (default: on)
      -a, --autosub=<s>       Put subscript numbers to nodes: on or off (default: off)
      -m, --margin=<i>        Margin: 0-120 (default: 0)
      -v, --vheight=<f>       Connector Height: 0.5-2.0 (default: 1.0)
      -e, --version           Print version and exit
      -h, --help              Show this message


Every branch or leaf of a tree must belong to a node. To create a node, place a label right next to the opening bracket. Arbitrary number of branches can follow with a preceding space.

There are several modes in which the connectors between terminal nodes and their leaves are drawn differently (auto, triangle, bar, and nothing). In auto mode, a triangle is used if the leaf contains one or more spaces inside (i.e. if it’s a phrase), but if it contains no spaces (i.e. if it is just a word), a straight bar will be drawn instead (unless the leaf contains a "^" symbol at the end which makes it a single-word phrase).

You can put a subscript to any node by putting the _ character between the main label and the subscript. For example, NP_TOP will be rendered as NPTOP. Or you can select the “Auto subscript” option so that nodes of the same label will be automatically numbered. (e.g. NP1, NP2)

See for more detailed info about the syntax.


Bracket notation (auto-subscript-on):

[S [NP RSyntaxTree^][VP [V generates][NP [Adj multilingual] [NP syntax trees]]]]

Resulting PNG

RSyntaxTree generates multilingual syntax trees


For the latest updates and downloads please visit


Yoichiro Hasebe


RSyntaxTree is distributed under the MIT License.