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 Document Right 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.

{[ snackBarMessage ]}

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