Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming...
Transcript of Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming...
![Page 1: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/1.jpg)
Roosta, Foundations of Programming Languages
Foundations of Programming LanguagesSeyed H. Roosta
Chapter FourSyntax Specification
![Page 2: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/2.jpg)
Formal specification of a programming language
Help language comprehensionSupports language standardizationGuides language designAids compiler and language system writingSupports program correctness verificationModels software specification
![Page 3: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/3.jpg)
The only restriction on a language is that each string must be finite length and must contain characters chosen from some fixed finite alphabet of symbols
![Page 4: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/4.jpg)
Ex:n If a<b then x else y fi.n Keyword: if,fi,else,thenn Symbols {a,b,x,y}
![Page 5: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/5.jpg)
Any programming language description can be classified n Syntax– formation of phrasesn Semantics– meaning of phrasesn Pragmatics– practical use of phrases
![Page 6: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/6.jpg)
A programming language definition enable us to determine whether the program is valid and understand its underlying meaning
![Page 7: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/7.jpg)
Syntax : similar to the grammer of natural language semantics: interaction Pragmatics: translator
![Page 8: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/8.jpg)
Mechanism describe the design and implementation of programming languages
Regular expressionsFormal grammarsAttribute grammars
![Page 9: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/9.jpg)
Regular expression
Invented by Stephen Kleene 1950The alphabet of the language is a finite set of symbols athat are assembled to form the strings or sentences of the language
![Page 10: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/10.jpg)
Regular expression
Alternation (a+b)Concatenation (a*b)Kleene closure a*Positive closure a+
Empty Atom {a}
![Page 11: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/11.jpg)
ex
L1L2={01,1001} and L2={11,00,1}L1L2={0111,0100,011,10011,100100,10011}L1+L2={01,1001,11,00,1}
![Page 12: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/12.jpg)
ex
{00}(0+1)*(0+1)*00(0+1)*(1+10)*0*1*20+1+2+
11*22*
![Page 13: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/13.jpg)
Formal grammars
Each programming language has a vocabulary of symbols and rules for how these symbols may be put together to form phrases.
![Page 14: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/14.jpg)
Formal Grammars
while expression do commandif (expression)n Statement1
elsen statement2
![Page 15: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/15.jpg)
SYNTAX SPECIFICATION
A grammar defines the set of all possible phases that constitute programs in the subject language together with their syntactic structures.
![Page 16: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/16.jpg)
The grammar of a programming language consists of four componentsn A set symbols known as terminal symbols that are
the atomic symbols in the language.n A set of nonterminal symbols known as variable
symbolsn A set of rules known as production rules that are
used to define the formation of the constructs.n A variable symbol, or distinguished symbol, called
start symbol.
![Page 17: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/17.jpg)
Each string in the derivation is called a sentential form.A language is formally defined as the set of sentential forms wherein each form consists solely of terminal symbols that can be derived from the initial symbol of a grammar.The derivation continues until the sentential form contain no variable.
![Page 18: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/18.jpg)
C programming language contains more than 150 rules.
![Page 19: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/19.jpg)
p.112
The length of a string is the number of symbols in it. The empty string denoted ,has length 0The notation Sn is used for the set odstrings over S with length n(n>0) The notation S* is used for the set of all finite strings over S of any length,or
![Page 20: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/20.jpg)
Classification of grammars
Type 0 grammarType 1 GrammarType 2 GrammarType 3 Grammar
![Page 21: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/21.jpg)
Type 0 grammar
Unrestricted grammarRecursively enumerablePhrase structured
![Page 22: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/22.jpg)
ExmapleA unrestricted grammar for describing strnig aaaa can be defined as G=(V,T,P,S) whereV={S,A,B,C,D,E}T={a, }S={S}The production rules are as follows1. S=> ACaB2. Ca=> aaC3.CB=>DB4.CB=>EaD=>DaAD=>ACaE=>EaAE=>
![Page 23: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/23.jpg)
Type 1 Grammar
Context-sensitive grammarA Thing => Thing a b.
![Page 24: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/24.jpg)
ex
G=(V,T,P,S)V={Sentence,Thing,Other}T={a,b,c}S={Sentence}P:n Sentence =>a b cn Sentence => a Thing b cn Thing b => b thingn Thing c => Other b c cn a Other a an a Other a a Thingn b Other => Other b
![Page 25: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/25.jpg)
a a b b c c ?
![Page 26: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/26.jpg)
Type 2 Grammar
Context-free grammarn Expression => Value + Expression
Backus-Naur Form(BNF)Chomsky’s type 2 garmmar
<expression> ::=<value>+<expression>Left side of a production rule is a single variable symbol.Right side is a combination of ternimal and variable symbols
![Page 27: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/27.jpg)
ex
G=(V,T,P,S)V={Real-Number,Integer-Part,Fraction,Digit}T={0,1,2,3,4,5,6,7,8,9}S={Real-Number}P:n Real-Number=>Integer-Part.Fractionn Ineger-Part=>Digitn Integer-Part=>Integer-Part Digitn Fraction=>Digitn Fraction=>Digit Fractionn Digit=>0|1|2|3|4|5|6|7|8|9
![Page 28: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/28.jpg)
ex
125.78
![Page 29: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/29.jpg)
ex
Grammar for a calculator language in BNF notation
![Page 30: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/30.jpg)
Figure 4.1 Tree representation for 12 + 25 =
© 2003 Brooks/Cole Publishing / Thomson Learning™
![Page 31: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/31.jpg)
Ex:
S=>0S|1AA=>0S|1BB=>0S|1C|1C=>1C|0C|1|0011101011?
![Page 32: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/32.jpg)
Type3 grammar
Regular grammarRestrictive grammarOnly one terminal or one terminal and one variable on the right side of the production rulesRight-linear/left –linear grammar
![Page 33: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/33.jpg)
Right-linear grammarn A=>xB or A=>x
Left-linear grammarn A=>Bx or A=>x
![Page 34: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/34.jpg)
A complete grammar is a set of production rules that together define a hierarchy of constructs leading to a synatactic category, which for a programming language is called a program.Ex:n Thing =>a Thingn Thing =>Thing a
![Page 35: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/35.jpg)
SYNTAX Tree
The syntax of a programming language is commonly divided into two parts:n The lexical syntax that describes the
smallest units with significance called token, n the phrase-structure syntax that explains
how the token are arranged into programs
![Page 36: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/36.jpg)
Grammar-oriented compiling technique –syntax-oriented translationLexical analyzer (scanner)n Convert the stream of input characters to a stream
of tokens that becomes the input to the second phase of the process
Syntactic analyzern Is a combination of a parser and an intermediate
code generator and forms a derivation tree from the token list based on the syntax definition of the programming language
![Page 37: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/37.jpg)
Basic approaches:n Top-down parsersn Bottom-up parsers
![Page 38: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/38.jpg)
Figure 4.3 Program translation by scanner and parser
© 2003 Brooks/Cole Publishing / Thomson Learning™
![Page 39: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/39.jpg)
© 2003 Brooks/Cole Publishing / Thomson Learning™
Figure 4.4 A top-down parse tree for the real number 125.78
![Page 40: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/40.jpg)
Figure 4.5 A bottom-up parse tree for the real number 125.78
© 2003 Brooks/Cole Publishing / Thomson Learning™
![Page 41: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/41.jpg)
Well-known UNIX toolsn LEXn YACC
![Page 42: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/42.jpg)
Derivation tree has the following propertiesn Each terminal node is labeled with a terminal
symboln Each internal node is labeled with a variable
symboln The label of an internal node is the left side of the
production rule, and the labels of the children of the node, from left to right, and the right side of that production rule
n The root of the tree is labeled with the start symbol
![Page 43: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/43.jpg)
If the phrase can be successfully represented, it belongs to the languageDetermining whether the phrase is valid is called recognition or representation
![Page 44: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/44.jpg)
Ambiguity
A grammar that represents a phrase associated with its language in two ore more distinct derivation trees is known as a syntactically ambiguous grammar.
![Page 45: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/45.jpg)
Ex:
Assignment =>identifier =ExpressionExpression => expression +expressionExpression => expression+expressionExpression=>identifierIdentifier=> x|y|z
![Page 46: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/46.jpg)
Figure 4.6 Two derivation trees for the assignment statement x = x + y * z
© 2003 Brooks/Cole Publishing / Thomson Learning™
![Page 47: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/47.jpg)
Deciding whether grammar is ambiguous is a theoretically difficult taskIn practice , ambiguities can be avoided
![Page 48: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/48.jpg)
Assignment => identifier=expressionExpression => element +expressionExpression => element* expressionExpression => elementElement =>identifierIdentifier=>x|y|z
![Page 49: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/49.jpg)
BNF Variations
a grammar written in BNF may be expressed in many other notation Two popular notational variations of BNF are the Extended BNF grammar and Syntax Diagram
![Page 50: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/50.jpg)
extended BNF grammar
Doesn’t enhance the descriptive powerof BNFMerely increases the readability and writability of the production rules
![Page 51: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/51.jpg)
Recommand notation
Braces {}n represent a sequence of zero or more
instance of elements
Brackets[] n Used to represent an optional element
Parenthesen Used to represent a group of elements
![Page 52: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/52.jpg)
Figure 4.7 Revision of the grammar for the assignment x = x + y * z
© 2003 Brooks/Cole Publishing / Thomson Learning™
![Page 53: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/53.jpg)
Figure 4.8 Introducing a new variable for the assignment statement x = x + y * z
© 2003 Brooks/Cole Publishing / Thomson Learning™
![Page 54: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/54.jpg)
Syntax diagram
1970, definition of pascal programming language
![Page 55: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/55.jpg)
Figure 4.10 Syntax Diagram representation for the Real-Number grammar
© 2003 Brooks/Cole Publishing / Thomson Learning™
![Page 56: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/56.jpg)
Attribute grammars
1968 KnuthAre powerful and elegant mechanisms that formalize both the context-free and context-sensitive aspects of a language syntaxEx:n Used to determine whether a variable has been
declared and whether the use of the variable is consistent with its declaration
![Page 57: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/57.jpg)
Figure 4.11 (a) An attributed syntax tree expressing the value attribute.
© 2003 Brooks/Cole Publishing / Thomson Learning™
![Page 58: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/58.jpg)
Figure 4.11 (b) An attributed syntax tree expressing the actual-type attribute
© 2003 Brooks/Cole Publishing / Thomson Learning™
![Page 59: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/59.jpg)
Figure 4.12 Syntax tree for string aaabbb
© 2003 Brooks/Cole Publishing / Thomson Learning™
![Page 60: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/60.jpg)
Figure 4.13 Syntax tree for string aabbb
© 2003 Brooks/Cole Publishing / Thomson Learning™
![Page 61: Foundations of Programming Languages - AMiner · 2014-09-30 · Foundations of Programming Languages Seyed H. Roosta Chapter Four Syntax Specification. Formal specification of a programming](https://reader031.fdocuments.us/reader031/viewer/2022021801/5b36674c7f8b9a5f288cbdd2/html5/thumbnails/61.jpg)
Figure 4.14 Attributed syntax tree for the string aaabbb
© 2003 Brooks/Cole Publishing / Thomson Learning™