FB language


This is an example of "domain specific language" design. Two sample sentences in this language:

1)  Task: Add a friend's name to FB.

open FB
touch SEARCH
input NAME
touch ADDFRIEND

2)  Task: Upload a picture to FB.

open FB
touch PHOTO
select PICTURE
input NAME
touch SHARE

Note that I simplify a lot of things such as the "input" some how brings up a keyboard and users type in the name which I use the terminal symbol "NAME".

Given these two sentences, we can write a grammar describing this language (a generalisation).

verb := open | touch | input | select
noun := FB | SEARCH | NAME | ADDFRIEND |
        PHOTO | PICTURE | SHARE
action := ( verb noun ) *

or we can also write

action := verb noun action | empty

When we parse the first sentence "open FB touch PHOTO select PICTURE input NAME touch SHARE", here is the parse tree:

 action --
          |--action --
          |           |--verb -- open
          |           |--noun -- FB
          |
          |--action --
          |           |--verb -- touch
          |           |--noun -- SEARCH
          |
          |--action --
          |           |--verb -- input
          |           |--noun -- NAME
          |
          |--action --
                      |--verb -- touch
                      |--noun -- ADDFRIEND


end