080_Formal_Grammars

080_Formal_Grammars - CS143 Summer2011 Handout08...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
CS143 Handout 08 Summer 2011 June 24 th , 2011 Formal Grammars Handout written by Maggie Johnson and Julie Zelenski. What is a grammar? grammar  is a powerful tool for describing and analyzing languages.  It is a set of rules  by which valid sentences in a language are constructed.  Here’s a trivial example of  English grammar:  sentence –> <subject> <verb-phrase> <object> subject –> This | Computers | I verb-phrase –> <adverb> <verb> | <verb> adverb –> never verb –> is | run | am | tell object –> the <noun> | a <noun> | <noun> noun –> university | world | cheese | lies Using the above rules or  productions , we can derive simple sentences such as these:  This is a university. Computers run the world. I am the cheese. I never tell lies. Here is a  leftmost derivation   of the first sentence using these productions. sentence –> <subject> <verb-phrase> <object> –> This <verb-phrase> <object> –> This <verb> <object> –> This is <object> –> This is a <noun> –> This is a university In addition to several reasonable sentences, we can also derive nonsense like "Computers  run cheese" and "This am a lies".  These sentences don't make semantic sense, but they  are syntactically correct because they are of the sequence of subject, verb-phrase, and  object.  Formal grammars are a tool for  syntax , not  semantics .  We worry about semantics  at a later point in the compiling process.  In the syntax analysis phase, we verify  structure, not meaning.
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Vocabulary We need to review some definitions before we can proceed: grammar a set of rules by which valid sentences in a language are constructed.  nonterminal a grammar symbol that can be replaced/expanded to a sequence of  symbols. terminal an actual word in a language; these are the symbols in a grammar   that  cannot be replaced by anything else. "terminal" is supposed to conjure  up the idea that it is a dead-end—no further expansion is possible. production a grammar rule that describes how to replace/exchange symbols.    The  general form of a production for a nonterminal is: X –>Y 1 Y 2 Y 3 ...Y n The nonterminal  X  is declared equivalent to the concatenation of the  symbols  Y 1 Y 2 Y 3 ...Y n .  The production means that anywhere where we  encounter  X , we may replace it by the string  Y 1 Y 2 Y 3 ...Y n .   Eventually we  will have a string containing nothing that can be expanded further, i.e., it  will consist of only terminals.  Such a string is called a  sentence .  In the  context of programming languages, a sentence is a syntactically correct  and complete program. derivation
Background image of page 2
Image of page 3
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 11

080_Formal_Grammars - CS143 Summer2011 Handout08...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online