This subject remembered me something I saw on the CS101 course on Udacity a while back and that  I found very interesting.

It is the [Backus–Naur Form](http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form) used to describe the syntax of languages used in computing.

I did a quick search and found this course notes that describe that lesson: 
http://www.cs.virginia.edu/~evans/courses/cs101/unit1-notes.pdf#page=5