UCLA-PPP: A program for learning how to parse sentences
I use this program in my course Linguistics 20, which is the basic introduction to linguistics at UCLA. Basically, it is a click-and-drag interface for drawing trees. It includes a set of (instructor-changeable) phrase structure rules, and guides the student by lighting up nodes in red and posting an error message when a structure impossible by the rules. Students can also check if the answer they draw is correct.
How to download and set up UCLA-PPP
This is a Java program. It runs on both Windows and Mac machines (we don't know if it runs on Linux; let us know if you find out).
You don't have to install UCLA-PPP. Just download it and put it in some convenient location on your computer. The file is named "UCLA-PPP.jar".Download UCLA-PPP
Download the Java Run Time Environment (if necessary)
suggest just trying to run UCLA-PPP.jar by clicking on it; and if this
doesn't work, only then try obtaining the Java Run Time Environment as
Also, you need a batch of sentences to practice on. At present I've
set up a group of 38 sentences, all in a file called Hayes38Sentences.txt.
This file sits inside a zipped file, along with (just for reference) a
copy of the grammar normally used by the program. I'm using a zipped
file because this seems to help in downloading the files safely (files
aren't altered by your browser).
Download practice sentences and grammar
Most computers these days are already set up so they can unzip a zipped folder; if not, use a search engine and search for "free unzip software" to obtain software that can perform this task.
So, at this stage, I assume you have on your hard disk the files UCLA-PPP.jar and Hayes38Sentences.txt.
On a PC, just double click on it.
On a Mac, you need to get around security. Instead of double-click, right click and select Open.
Using UCLA-PPP for Parsing Practice
On the File menu, click the Open button. Browse through your folders and find wherever you put the file Hayes38Sentences.txt, then click to open it. In the (expandible) window on the left side of the screen (see figure below), you will get a choice of 38 sentences. Identical sentences on the list have two meanings (and two correct parses), for which "keys" will be displayed along with the sentence when it is displayed.
on whatever sentence you like. The words of the sentence will
appear in the main window. Now, click on the buttons labeled
“NP”, etc., and drag them to make a tree. You can draw lines by
clicking and dragging, or by clicking consecutively on the starting and
ending nodes. Also, if you grab a node and hover in the region
where it is supposed to go, the nodes that will have lines
automatically drawn to them when you release the mouse will appear in
If you make a mistake, drag the incorrect material into the Trash, or right click and select Delete. You can make your tree look prettier by clicking the Straighten Lines button.
When you think you have the right answer, click Check Answer, and find out. UCLA-PPP will automatically save your answer (whether right or wrong!) in computer memory, and you can move on to a new sentence by clicking in the left window.
Once you have done as many sentences as you want (or as many as your teacher told you), go to the File menu and click Export the Homework. UCLA-PPP will prompt you for a file name. It will save the file, which you can then print out. UCLA-PPP saves the tree in bracket, not graphic, format.
Using UCLA-PPP as tree-drawing software
Launch the program, and from the Task menu pick Draw Tree. The various menus will give you options for the appearance of your tree (font, alignment, etc.) You can save your tree as a .png image by choosing Save Tree as Image from the File menu. The image at right is a tree drawn using UCLA-PPP.
Comments and feedback
Comments and feedback are welcome; please address them to me, Bruce Hayes, at email@example.com.
This program was written by Yi Zhang, a 2017 B.A. in Linguistics and Computer Science from UCLA Department of Linguistics, who designed the interface with input from me and wrote all the Java code. Thanks to Yi for making this project possible.
This may be obtained from the GitHub site of Yi Zhang, here.
Picture of the interface