Syntree is a JavaScript-based web application that allows users to draw syntax trees digitally. It is the Division III (thesis) of Andrew Zito, a student at Hampshire College. It is still something of a work in progress, but the current version is no longer considered to be in beta.
There are quite a few tools that allow the user to input "bracket notation", and use that notation to generate a visual tree. However, many people do not wish to learn bracket notation. Additionally, using bracket notation has disadvantages -- it is more difficult to keep a complex tree organized, and it is easy to forget to close a bracket, resulting in syntax errors. The alternative is either to draw the tree manually (either by hand or with a general purpose graphics program), or to use a tool specifically designed for building syntrax trees with a dynamic GUI interface (as opposed to generating the tree from bracket notation). There are very few tools of this kind, and the ones that do exist are clunky and difficult to use. Syntree is intended to be an intuitive, easy-to-use alternative to bracket notation, hand drawing, and clunky GUI apps.
Syntax trees are a tool used by linguists to analyze sentences. "Syntax" is distinguished from "semantics", syntax being the structure of the language (the order words are placed in) and semantics being the meaning/content of the words (roughly speaking). Linguists use tree diagrams to split sentences up into parts. For example, you may have learned in elementary school about the subject, predicate, and/or object of sentences. These are ways of splitting sentences into pieces. Linguists do something similar, only with far more categories. Additionally, these categories are hierarchical and nested, meaning that the "subject", for example, can be split up into sub-categories like "article" (the, a, an) and "noun". That's how you end with a tree diagram -- each category is a node, and it has child nodes representing the categories it can be decomposed into. This process is continued until the category maps directly to the actual word. Note: "subject" here is just an example category, and not used in modern syntax theory.
No. Do your own homework.
That's not a question. But here is a feedback form.
By default you will start with a single node called "S". It will be highlighted in grey, indicating that it is the selected node. Once you have more nodes (see below), you can select them by navigating to them with the arrow keys or by clicking on them directly.
Use arrow keys to create new nodes. Your starting point is always the currently selected node. Pressing the down arrow key will result in a new child node being created. Pressing left or right on any non-root node will result in a new sibling node. If there is already a node in the specified direction, you will navigate to that node instead of creating a new one. Currently navigation spans subtrees -- i.e., if you press left and the nearest node to the left is attached to a different parent, you will still navigate to it instead of creating a new node. Coming soon: a setting to change this behavior to navigate only within a group of siblings -- i.e., to get to nodes attached to a different parent, you'd have to go up and over.
Hold down CTRL + SHIFT and press left or right. Even if there is a node in that direction already, a new node will be created (directly adjacent to the selected node).
UPDATE: 'tis broken :)
But also... In the works: use with the up/down arrow keys to insert a node in between the selected node and its parent/children.
To pan, simply click and drag anywhere on the background. In the works: zooming!
Pressing Enter will begin editing mode on the selected node. You can also double-click on any node to edit it. You will be provided with a text-box, in which you can input any node label you would like. Press Enter to save the change. If you navigate away from the node (by pressing an arrow key or clicking on another node) the node label will revert to its pre-editing state. In the works: a setting to change this behavior so that label changes will automatically be saved if you navigate away
Select a node and either press the Delete key or click the small (x) button above and to the right of the selected node. This node and all of its descendants will be removed from the tree. Deleting the root node will delete the rest of the tree, but not the root node itself.
If you messed up (like if you accidentally deleted half your tree, for example) never fear! Just press CTRL+Z and everything should be ok.
Select the node you want the movement arrow to start at. Then hold CTRL and click any other node. The new movement arrow will automatically be selected. You will see a red dot and a blue dot. Drag these dots to change the way the arrow curves. Currently Syntree does not automatically curve the arrow to avoid nodes, so you'll have to position it yourself.
Click on any branch to select it. You will see a button near the center of the branch, containing a small vertical line icon. Press this button to toggle the branch to become a triangle.
Down | Make a new child node / navigate to an existing child node |
Left/Right | Make a sibling node / navigate to an existing sibling node |
Up | Navigate to parent node |
Enter | Edit / save selected node |
Delete | Delete selected node and its descendants |
Escape | Exit current edit, without saving changes |
CTRL + SHIFT + Left/Right | Make a sibling node (forced) |