How Language works:

  1. The user types a command in language that makes sense to them into a search box. Here are some examples:

    generate an html form with name age and gender fields draw a teapot sum(1,2,3)

  2. The command is parsed generating many possible interpretations. Each interpretation has a widget (i.e. a small webpage) attached to it that performs a corresponding function. For example, if the user's command was "draw a teapot" the interpretations might have widgets that display various teapot drawings and perhaps some that provide instructions how to draw a teapot.

  3. The widgets are displayed to the user in a ranked list.The user can up-vote good interpretations and down-vote irrelevant interpretations to improve future rankings. In addition to votes, probability of occurance may also affect an interpration's ranking.

  4. If none of the resulting interpretations are to the user's liking, they can add a new "language node" to the site that interprets their command as they intended. This is easily done using a query like "add language node". Language nodes can be configured to interpret many commands or just a specific few. To get technical, the configuration is essentially a CFG production rule. This makes it possible to compose language nodes so commands like the following can be interpreted: sum(1, difference(2,3))