# More Assigned Reading and Exercises on Syntax (for Exam 2)

Size: px
Start display at page:

Transcription

1 More Assigned Reading and Exercises on Syntax (for Exam 2) 1. Read sections 2.3 (Lexical Syntax) and 2.4 (Context-Free Grammars) on pp of Sethi. 2. Read section 2.6 (Variants of Grammars) on pp of Sethi. 3. Read section 2.5 (Grammars for Expressions) on pp of Sethi. Exercises C (Grammars, Parse Trees): Do problems 2.4, 2.6*, and 2.14 on pp. 49 and 51. You should be able to do these after reading pp *Problem 2.6 can be done after you have read pp , but might be easier after you have read Sec It is therefore included both in Exercises C and in Exercises E. In problem 2.14 there is a misprint: The first production with SL on the left should read SL ::= S rather than SL ::= S ;. Exercises D (EBNF): Do problems 2.9 and 2.16a** on pp You should be able to do these after reading the Extended BNF subsection of Sec **Re 2.16: The first line of the EBNF specification on p. 52 uses [ ] to mean an empty string. Exercises E (Derivations, Grammars for Expressions, Syntactic Ambiguity, Syntax Charts): Do problems 2.5, 2.6, 2.10, 2.11, 2.12, 2.13, 2.15a, 2.15b, and 2.16b on pp Re 2.5(a): A leftmost derivation is a derivation in which the leftmost nonterminal is replaced at each step. A rightmost derivation is a derivation in which the rightmost nonterminal is replaced at each step. The derivation of from real-number that is shown on p. 41 is a leftmost derivation. For example, its second step replaces the leftmost nonterminal (integer-part) in the string integer-part. fraction with integer-part digit, and then its third step replaces the leftmost nonterminal in the string integer-part digit. fraction with digit. The second step of a rightmost derivation of from real-number would replace the rightmost nonterminal (fraction) in the string integer-part. fraction with digit fraction. Hint for 2.10(b): Put the unary operator in the same precedence class as binary + and binary. Even though problem 2.12 does not say this, the grammar you write for that problem must be able to generate expressions that involve! (the logical negation operator) as well as the binary operators shown in Figure 2.9; otherwise you will not be able to do parts b and c of problem 2.13.! is a right-associative unary prefix operator and has higher precedence than any binary operator.

2 Solutions to Assignments on Syntax (Sections C, D, and E) ========================================================= Section C (a) <str> ::= <item> <str> <item> <item> ::= blank tab newline (b) <seq> ::= <letter> <seq> <letter> <seq> <digit> <letter> ::= abcdefghijklmnopqrstuvwxyz <digit> ::= (c) <real num> ::= <int part>. <frac> <int part>.. <frac> <int part> ::= <digit> <int part> <digit> <frac> ::= <digit> <digit> <frac> <digit> ::= (a) E (b) E (c) E /\ /\ E + T T E + T / \ / /\ T F F T T * F /\ / F number:3 ( E ) F F number:5 /\ / number:2 E + T number:2 number:3 / \ T F F number:3 number:2

3 (d) E (e) E /\ T E + T /\ / \ T * F T F / / /\ F number:5 F ( E ) /\ ( E ) number:2 T /\ /\ E + T T * F / T F F number:5 F number:3 number:3 number: The productions for SL should read SL ::= S S ; SL (Pascal statements need not end with semicolons; it would in fact be impossible to derive b from the given productions.) We will use a "sideways" representation of parse trees. This is obtained from a preorder traversal of the tree by writing out each node when it is visited, on a new line with an indentation that is proportional to the depth of the node in the parse tree. [TinyJ Assignment 1 uses the same representation of parse trees, except that it gives each internal node of the tree an additional rightmost child that is a leaf labeled "... node has no more children".] In this sideways representation of trees, the parent of each non-root node is the node on the closest previous line that has lower indentation. It would be a GOOD (and EASY) EXERCISE for you to draw each of the following three parse trees using the ordinary representation of trees instead of the sideways representation that is used here:

4 (a) (b) S S while expr do S id := expr begin SL S id := expr end (c) S if expr then S if expr then S else S

5 Section D (a) One or more <name>s, separated by commas. (b) One or more occurrences of "<field>;" (i.e., one or more <field>s, with each <field> followed by a semicolon). (c) Zero or more occurrences of "<statement>;" (i.e., zero or more <statement>s, each followed by a semicolon). (d) One or more <factor>s, separated by *s. (e) Either the empty string, or "var" followed by one or more occurrences of "<name-list> : <type>;" (thus each occurrence of "<name-list> : <type>" is followed by a semicolon). (f) Either the empty string, or "const" followed by one or more occurrences of "<name> = <constant>;" (thus each occurrence of "<name> = <constant>" is followed by a semicolon) (a) S ::= id := expr if expr then SL elsif-part else-part end loop SL end while expr do SL end <empty> SL ::= SL ; S S elsif-part ::= elsif-part elsif expr then SL <empty> else-part ::= else SL <empty> Section E (a) <real number> => <integer part>. <fraction> => <digit>. <fraction> => 2. <fraction> => 2. <digit> <fraction> => 2. 8 <fraction> => 2. 8 <digit> =>

6 (b) <real number> <real number> / \ <integer part>. <fraction> <real number> <real number> / \ / \ <integer part>. <fraction> <integer part>. <fraction> / / <digit> <digit> / 2 <real number> <real number> / \ / \ <integer part>. <fraction> <integer part>. <fraction> / / \ / / \ <digit> <digit> <fraction> <digit> <digit> <fraction> / / / <real number> <real number> / \ / \ <integer part>. <fraction> <integer part>. <fraction> / / / / \ <digit> <digit> <fraction> <digit> <digit> <fraction> / / / / 2 8 <digit> 2 8 <digit> SEE THE SECTION C SOLUTIONS!

7 2.10 (a) <class 1 prefix op> ::= not <class 2 binary op> ::= * / div mod and <class 3 binary op> ::= + - or <class 4 binary op> ::= < > <= >= = <> in <exp0> ::= <constant> <variable> ( <exp4> ) <exp1> ::= <exp0> <class 1 prefix op> <exp0> <exp2> ::= <exp1> <exp2> <class 2 binary op> <exp1> <exp3> ::= <exp2> <exp3> <class 3 binary op> <exp2> <exp4> ::= <exp3> <exp4> <class 4 binary op> <exp3> <exp4> is the starting nonterminal. (b) Put unary - into class 3, the same precedence class as binary + and -. Thus we add the production <class 3 prefix op> ::= - and change the "<exp3> ::=" productions to: <exp3> ::= <exp2> <exp3> <class 3 binary op> <exp2> <class 3 prefix op> <exp2> Note: The solution to (a) is based on the problem as it is stated, rather than on the semantics of Standard Pascal. In Standard Pascal, at most one relational operator may appear at the top level of an expression. However, the problem does not mention this restriction. In Standard Pascal, expressions of the form "not not e" are legal. However, the problem says that NOT is left-associative, which is frequently interpreted as implying that such expressions are illegal (because the leftmost "not" in "not not e" has to be applied last, which is inconsistent with the rule that the rightmost of the top-level operators of lowest precedence is applied last if their precedence class is left-associative). If at most one relational operator is to be allowed at the top level, then the productions for <exp4> should be changed to <exp4> ::= <exp3> <exp3> <class 4 binary op> <exp3> To allow expressions of the form "not not e", the productions for <exp1> should be changed to <exp1> ::= <exp0> <class 1 prefix op> <exp1>

8 2.11 We write <bop4>, <bop2> and <prop1> for <class 4 binary op>, <class 2 binary op> and <class 1 prefix op>, respectively. (a) <exp4> / \ <exp4><bop4><exp3> <exp3> >= <exp2> <exp2> <exp1> <exp1> <exp0> <exp0> <constant:0> <variable:i> (b) <exp4> <exp3> <exp2> / \ <exp2><bop2><exp1> \ <exp1> and <prop1> <exp0> <exp0> not <variable:p> / \ ( <exp4> ) / \ <exp4><bop4><exp3> <exp3> >= <exp2> <exp2> <exp1> <exp1> <exp0> <exp0> <constant:0> <variable:i>

9 (c) (d) <exp4> / \ <exp4><bop4><exp3> / \ <exp3> >= <exp2> / \ <exp2> <exp2><bop2><exp1> / \ <exp1> <exp1> and <prop1><exp0> <exp0> <exp0> not <variable:p> <variable:i> <constant:0> <exp4> <exp3> <exp2> / \ <exp2> <bop2> <exp1> \ <exp1> and <exp0> / \ <exp0> ( <exp4> ) / \ / \ ( <exp4> ) <exp4><bop4><exp3> / \ <exp4><bop4><exp3> <exp3> <> <exp2> <exp3> >= <exp2> <exp2> <exp1> <exp2> <exp1> <exp1> <exp0> <exp1> <exp0> <exp0> <variable:y> <exp0> <constant:0> <variable:x> <variable:i>

10 2.12 It is clear from problem 2.13 that the! operator should be included in the table; in C/C++! has higher precedence than all other operators in the table, and it is right-associative. <class 1 prefix op> ::=! <class 2 binary op> ::= * / % <class 3 binary op> ::= + - <class 4 binary op> ::= << >> <class 5 binary op> ::= < > <= >= <class 6 binary op> ::= ==!= <class 7 binary op> ::= & <class 8 binary op> ::= ^ <class 9 binary op> ::= <class 10 binary op> ::= && <class 11 binary op> ::= <class 12 binary op> ::= = <exp[0]> ::= <variable> <constant> ( <exp[12]> ) <exp[1]> ::= <exp[0]> <class 1 prefix op> <exp[1]> For 2 <= i <= 11, <exp[i]> ::= <exp[i-1]> <exp[i]> <class i binary op> <exp[i-1]> <exp[12]> ::= <exp[11]> <exp[11]> <class 12 binary op> <exp[12]> <exp[12]> is the starting nonterminal. The question does not say this, but in fact the left operand of "=" in C/C++ must be associated with a location. If we are only allowed to use the given operators, then the left side has to be a variable. If we take this into account then the productions for <exp[12]> should be: <exp[12]> ::= <exp[11]> <variable> = <exp[12]>

11 2.13 We write <bop10>, <bop6>, <bop5> and <prop1> for <class 10 binary op>, <class 6 binary op>, <class 5 binary op> and <class 1 prefix op>. (a) <exp[12]> <exp[11]> <exp[10]> <exp[9]> <exp[8]> <exp[7]> <exp[6]> <exp[5]> / \ <exp[5]> <bop5> <exp[4]> <exp[4]> >= <exp[3]> <exp[3]> <exp[2]> <exp[2]> <exp[1]> <exp[1]> <exp[0]> <exp[0]> <constant:0> <variable:i>

12 (b) <exp[12]> <exp[11]> <exp[10]> / \ <exp[10]> <bop10> <exp[9]> <exp[9]> && <exp[8]> <exp[2]> <exp[1]> / \ <exp[1]> <prop1> <exp[1]> <exp[0]>! <exp[0]> / \ ( <exp[12]> ) <variable:p> <exp[11]>... <exp[5]> / \ <exp[5]> <bop5> <exp[4]> <exp[4]> >= <exp[3]> <exp[3]> <exp[2]> <exp[2]> <exp[1]> <exp[1]> <exp[0]> <exp[0]> <constant:0> <variable:i>

13 (c) <exp[12]> <exp[11]> <exp[10]> / \ <exp[10]> <bop10> <exp[9]> <exp[9]> && <exp[8]> <exp[8]> <exp[7]> <exp[7]> <exp[6]> <exp[6]> <exp[5]> <exp[5]> <exp[4]> / \ <exp[5]> <bop5> <exp[4]> <exp[3]> <exp[4]> >= <exp[3]> <exp[2]> <exp[3]> <exp[2]> <exp[1]> \ <exp[2]> <exp[1]> <prop1> <exp[1]> <exp[1]> <exp[0]>! <exp[0]> <exp[0]> <constant:0> <variable:p> <variable:i>

14 (d) <exp[12]> <exp[11]> <exp[10]> / \ <exp[10]> <bop10> <exp[9]> \ <exp[9]> && <exp[8]> \ <exp[8]> <exp[7]> \ <exp[7]> <exp[6]> / \ <exp[6]> <exp[6]><bop6><exp[5]> <exp[5]> <exp[5]>!= <exp[4]> / \ <exp[5]> <bop5> <exp[4]> <exp[4]> <exp[3]> <exp[4]> >= <exp[3]> <exp[3]> <exp[2]> <exp[3]> <exp[2]> <exp[2]> <exp[1]> <exp[2]> <exp[1]> <exp[1]> <exp[0]> <exp[1]> <exp[0]> <exp[0]> <variable:y> <exp[0]> <constant:0> <variable:x> <variable:i>

15 2.15 (a) Any Declaration that involves * Declarator ( Type ) or * Declarator [ number ] has more than one parse tree. For example, int * name [ number ] has two parse trees: Declaration / \ Type Declarator / \ int Declarator [ number ] / \ * Declarator name Declaration / \ Type Declarator / \ int * Declarator / \ Declarator [ number ] name 2.15 (b) Decl0 ::= name ( Decl2 ) Decl1 ::= Decl0 Decl1 <class 1 postfix op> Decl2 ::= Decl1 <class 2 prefix op> Decl2 <class 1 postfix op> ::= [ number ] ( Type ) <class 2 prefix op> ::= * Decl2 is the starting nonterminal (b) NOTATION: (...) denotes an oval node.... denotes a rectangular node. In the given grammar expr is a terminal, even though it would be a non-terminal in a larger grammar that specifies the syntax of an entire programming language. That is why expr nodes in the syntax charts below are oval.

16 S > (id)--(:=)--(expr) (if)---(expr)--(then)--sl (else)--sl-----(end) <----(elsif)---< > (loop)--sl--(end) (while)--(expr)--(do)--sl--(end) SL ---->----S---> <--(;)--<--

### Chapter 3: Describing Syntax and Semantics. Introduction Formal methods of describing syntax (BNF)

Chapter 3: Describing Syntax and Semantics Introduction Formal methods of describing syntax (BNF) We can analyze syntax of a computer program on two levels: 1. Lexical level 2. Syntactic level Lexical

### A Simple Syntax-Directed Translator

Chapter 2 A Simple Syntax-Directed Translator 1-1 Introduction The analysis phase of a compiler breaks up a source program into constituent pieces and produces an internal representation for it, called

6. Syntax Learning objectives: syntax and semantics syntax diagrams and EBNF describe context-free grammars terminal and nonterminal symbols productions definition of EBNF by itself parse tree grammars

### Principles of Programming Languages COMP251: Syntax and Grammars

Principles of Programming Languages COMP251: Syntax and Grammars Prof. Dekai Wu Department of Computer Science and Engineering The Hong Kong University of Science and Technology Hong Kong, China Fall 2007

### A simple syntax-directed

Syntax-directed is a grammaroriented compiling technique Programming languages: Syntax: what its programs look like? Semantic: what its programs mean? 1 A simple syntax-directed Lexical Syntax Character

### Context-Free Grammar. Concepts Introduced in Chapter 2. Parse Trees. Example Grammar and Derivation

Concepts Introduced in Chapter 2 A more detailed overview of the compilation process. Parsing Scanning Semantic Analysis Syntax-Directed Translation Intermediate Code Generation Context-Free Grammar A

### CPS 506 Comparative Programming Languages. Syntax Specification

CPS 506 Comparative Programming Languages Syntax Specification Compiling Process Steps Program Lexical Analysis Convert characters into a stream of tokens Lexical Analysis Syntactic Analysis Send tokens

### Principles of Programming Languages COMP251: Syntax and Grammars

Principles of Programming Languages COMP251: Syntax and Grammars Prof. Dekai Wu Department of Computer Science and Engineering The Hong Kong University of Science and Technology Hong Kong, China Fall 2006

### 2.2 Syntax Definition

42 CHAPTER 2. A SIMPLE SYNTAX-DIRECTED TRANSLATOR sequence of "three-address" instructions; a more complete example appears in Fig. 2.2. This form of intermediate code takes its name from instructions

### Syntax Analysis Check syntax and construct abstract syntax tree

Syntax Analysis Check syntax and construct abstract syntax tree if == = ; b 0 a b Error reporting and recovery Model using context free grammars Recognize using Push down automata/table Driven Parsers

### Chapter 3: CONTEXT-FREE GRAMMARS AND PARSING Part2 3.3 Parse Trees and Abstract Syntax Trees

Chapter 3: CONTEXT-FREE GRAMMARS AND PARSING Part2 3.3 Parse Trees and Abstract Syntax Trees 3.3.1 Parse trees 1. Derivation V.S. Structure Derivations do not uniquely represent the structure of the strings

### 1 Lexical Considerations

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler

### The PCAT Programming Language Reference Manual

The PCAT Programming Language Reference Manual Andrew Tolmach and Jingke Li Dept. of Computer Science Portland State University September 27, 1995 (revised October 15, 2002) 1 Introduction The PCAT language

### A programming language requires two major definitions A simple one pass compiler

A programming language requires two major definitions A simple one pass compiler [Syntax: what the language looks like A context-free grammar written in BNF (Backus-Naur Form) usually suffices. [Semantics:

### COP 3402 Systems Software Top Down Parsing (Recursive Descent)

COP 3402 Systems Software Top Down Parsing (Recursive Descent) Top Down Parsing 1 Outline 1. Top down parsing and LL(k) parsing 2. Recursive descent parsing 3. Example of recursive descent parsing of arithmetic

### More on Syntax. Agenda for the Day. Administrative Stuff. More on Syntax In-Class Exercise Using parse trees

More on Syntax Judy Stafford Comp 80 Meeting February, 00 Agenda for the Day Administrative Stuff Moodle Classlist at without waiting list More on Syntax InClass Exercise Using parse trees Last time Syntax

### Lexical Considerations

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a

### SMURF Language Reference Manual Serial MUsic Represented as Functions

SMURF Language Reference Manual Serial MUsic Represented as Functions Richard Townsend, Lianne Lairmore, Lindsay Neubauer, Van Bui, Kuangya Zhai {rt2515, lel2143, lan2135, vb2363, kz2219}@columbia.edu

### Lexical Considerations

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler

### Specifying Syntax. An English Grammar. Components of a Grammar. Language Specification. Types of Grammars. 1. Terminal symbols or terminals, Σ

Specifying Syntax Language Specification Components of a Grammar 1. Terminal symbols or terminals, Σ Syntax Form of phrases Physical arrangement of symbols 2. Nonterminal symbols or syntactic categories,

### COMP-421 Compiler Design. Presented by Dr Ioanna Dionysiou

COMP-421 Compiler Design Presented by Dr Ioanna Dionysiou Administrative! Any questions about the syllabus?! Course Material available at www.cs.unic.ac.cy/ioanna! Next time reading assignment [ALSU07]

### Lexical and Syntax Analysis. Top-Down Parsing

Lexical and Syntax Analysis Top-Down Parsing Easy for humans to write and understand String of characters Lexemes identified String of tokens Easy for programs to transform Data structure Syntax A syntax

### Part 5 Program Analysis Principles and Techniques

1 Part 5 Program Analysis Principles and Techniques Front end 2 source code scanner tokens parser il errors Responsibilities: Recognize legal programs Report errors Produce il Preliminary storage map Shape

### CSCI312 Principles of Programming Languages!

CSCI312 Principles of Programming Languages! Chapter 2 Syntax! Xu Liu Review! Principles of PL syntax, naming, types, semantics Paradigms of PL design imperative, OO, functional, logic What makes a successful

### Lexical and Syntax Analysis

Lexical and Syntax Analysis (of Programming Languages) Top-Down Parsing Lexical and Syntax Analysis (of Programming Languages) Top-Down Parsing Easy for humans to write and understand String of characters

### Section 5.5. Left subtree The left subtree of a vertex V on a binary tree is the graph formed by the left child L of V, the descendents

Section 5.5 Binary Tree A binary tree is a rooted tree in which each vertex has at most two children and each child is designated as being a left child or a right child. Thus, in a binary tree, each vertex

### Building Compilers with Phoenix

Building Compilers with Phoenix Syntax-Directed Translation Structure of a Compiler Character Stream Intermediate Representation Lexical Analyzer Machine-Independent Optimizer token stream Intermediate

### Chapter 3. Describing Syntax and Semantics

Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs:

### COP4020 Programming Languages. Syntax Prof. Robert van Engelen

COP4020 Programming Languages Syntax Prof. Robert van Engelen Overview Tokens and regular expressions Syntax and context-free grammars Grammar derivations More about parse trees Top-down and bottom-up

### Decaf Language Reference Manual

Decaf Language Reference Manual C. R. Ramakrishnan Department of Computer Science SUNY at Stony Brook Stony Brook, NY 11794-4400 cram@cs.stonybrook.edu February 12, 2012 Decaf is a small object oriented

### Syntax. A. Bellaachia Page: 1

Syntax 1. Objectives & Definitions... 2 2. Definitions... 3 3. Lexical Rules... 4 4. BNF: Formal Syntactic rules... 6 5. Syntax Diagrams... 9 6. EBNF: Extended BNF... 10 7. Example:... 11 8. BNF Statement

### COMPILERS AND INTERPRETERS Lesson 4 TDDD16

COMPILERS AND INTERPRETERS Lesson 4 TDDD16 Kristian Stavåker (kristian.stavaker@liu.se) Department of Computer and Information Science Linköping University TODAY Introduction to the Bison parser generator

### Defining syntax using CFGs

Defining syntax using CFGs Roadmap Last time Defined context-free grammar This time CFGs for specifying a language s syntax Language membership List grammars Resolving ambiguity CFG Review G = (N,Σ,P,S)

### YOLOP Language Reference Manual

YOLOP Language Reference Manual Sasha McIntosh, Jonathan Liu & Lisa Li sam2270, jl3516 and ll2768 1. Introduction YOLOP (Your Octothorpean Language for Optical Processing) is an image manipulation language

### Chapter 4. Syntax - the form or structure of the expressions, statements, and program units

Syntax - the form or structure of the expressions, statements, and program units Semantics - the meaning of the expressions, statements, and program units Who must use language definitions? 1. Other language

### Describing Syntax and Semantics

Describing Syntax and Semantics Introduction Syntax: the form or structure of the expressions, statements, and program units Semantics: the meaning of the expressions, statements, and program units Syntax

### Formal Languages and Grammars. Chapter 2: Sections 2.1 and 2.2

Formal Languages and Grammars Chapter 2: Sections 2.1 and 2.2 Formal Languages Basis for the design and implementation of programming languages Alphabet: finite set Σ of symbols String: finite sequence

### BNF, EBNF Regular Expressions. Programming Languages,

BNF, EBNF Regular Expressions Programming Languages, 234319 1 Reminder - (E)BNF A notation for describing the grammar of a language The notation consists of: Terminals: the actual legal strings, written

### CSE 3302 Programming Languages Lecture 2: Syntax

CSE 3302 Programming Languages Lecture 2: Syntax (based on slides by Chengkai Li) Leonidas Fegaras University of Texas at Arlington CSE 3302 L2 Spring 2011 1 How do we define a PL? Specifying a PL: Syntax:

### COP4020 Programming Languages. Syntax Prof. Robert van Engelen

COP4020 Programming Languages Syntax Prof. Robert van Engelen Overview n Tokens and regular expressions n Syntax and context-free grammars n Grammar derivations n More about parse trees n Top-down and

### Examples of attributes: values of evaluated subtrees, type information, source file coordinates,

1 2 3 Attributes can be added to the grammar symbols, and program fragments can be added as semantic actions to the grammar, to form a syntax-directed translation scheme. Some attributes may be set by

### TDDD55 - Compilers and Interpreters Lesson 3

TDDD55 - Compilers and Interpreters Lesson 3 November 22 2011 Kristian Stavåker (kristian.stavaker@liu.se) Department of Computer and Information Science Linköping University LESSON SCHEDULE November 1,

### Chapter 3. Describing Syntax and Semantics ISBN

Chapter 3 Describing Syntax and Semantics ISBN 0-321-49362-1 Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the

### Chapter 3. Describing Syntax and Semantics

Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs:

### Intermediate Code Generation

Intermediate Code Generation In the analysis-synthesis model of a compiler, the front end analyzes a source program and creates an intermediate representation, from which the back end generates target

### MATVEC: MATRIX-VECTOR COMPUTATION LANGUAGE REFERENCE MANUAL. John C. Murphy jcm2105 Programming Languages and Translators Professor Stephen Edwards

MATVEC: MATRIX-VECTOR COMPUTATION LANGUAGE REFERENCE MANUAL John C. Murphy jcm2105 Programming Languages and Translators Professor Stephen Edwards Language Reference Manual Introduction The purpose of

### CSE 12 Abstract Syntax Trees

CSE 12 Abstract Syntax Trees Compilers and Interpreters Parse Trees and Abstract Syntax Trees (AST's) Creating and Evaluating AST's The Table ADT and Symbol Tables 16 Using Algorithms and Data Structures

### CA4003 Compiler Construction Assignment Language Definition

CA4003 Compiler Construction Assignment Language Definition David Sinclair 2017-2018 1 Overview The language is not case sensitive. A nonterminal, X, is represented by enclosing it in angle brackets, e.g.

### EECS 6083 Intro to Parsing Context Free Grammars

EECS 6083 Intro to Parsing Context Free Grammars Based on slides from text web site: Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. 1 Parsing sequence of tokens parser

### Dr. D.M. Akbar Hussain

Syntax Analysis Parsing Syntax Or Structure Given By Determines Grammar Rules Context Free Grammar 1 Context Free Grammars (CFG) Provides the syntactic structure: A grammar is quadruple (V T, V N, S, R)

### Syntax. In Text: Chapter 3

Syntax In Text: Chapter 3 1 Outline Syntax: Recognizer vs. generator BNF EBNF Chapter 3: Syntax and Semantics 2 Basic Definitions Syntax the form or structure of the expressions, statements, and program

### Chapter 3. Syntax - the form or structure of the expressions, statements, and program units

Syntax - the form or structure of the expressions, statements, and program units Semantics - the meaning of the expressions, statements, and program units Who must use language definitions? 1. Other language

### The SPL Programming Language Reference Manual

The SPL Programming Language Reference Manual Leonidas Fegaras University of Texas at Arlington Arlington, TX 76019 fegaras@cse.uta.edu February 27, 2018 1 Introduction The SPL language is a Small Programming

### SMPL - A Simplified Modeling Language for Mathematical Programming

SMPL - A Simplified Modeling Language for Mathematical Programming Mihály Csaba Markót November 3, 2008 1 Purpose and Scope This working paper describes SMPL, an initiative of a Simplified Modeling Language

### Syntax and Semantics

Syntax and Semantics Syntax - The form or structure of the expressions, statements, and program units Semantics - The meaning of the expressions, statements, and program units Syntax Example: simple C

### CS 403: Scanning and Parsing

CS 403: Scanning and Parsing Stefan D. Bruda Fall 2017 THE COMPILATION PROCESS Character stream Scanner (lexical analysis) Token stream Parser (syntax analysis) Parse tree Semantic analysis Abstract syntax

### Syntax Intro and Overview. Syntax

Syntax Intro and Overview CS331 Syntax Syntax defines what is grammatically valid in a programming language Set of grammatical rules E.g. in English, a sentence cannot begin with a period Must be formal

### programming languages need to be precise a regular expression is one of the following: tokens are the building blocks of programs

Chapter 2 :: Programming Language Syntax Programming Language Pragmatics Michael L. Scott Introduction programming languages need to be precise natural languages less so both form (syntax) and meaning

### CSE302: Compiler Design

CSE302: Compiler Design Instructor: Dr. Liang Cheng Department of Computer Science and Engineering P.C. Rossin College of Engineering & Applied Science Lehigh University February 20, 2007 Outline Recap

### Chapter 3. Topics. Languages. Formal Definition of Languages. BNF and Context-Free Grammars. Grammar 2/4/2019

Chapter 3. Topics The terms of Syntax, Syntax Description Method: Context-Free Grammar (Backus-Naur Form) Derivation Parse trees Ambiguity Operator precedence and associativity Extended Backus-Naur Form

### Defining Program Syntax. Chapter Two Modern Programming Languages, 2nd ed. 1

Defining Program Syntax Chapter Two Modern Programming Languages, 2nd ed. 1 Syntax And Semantics Programming language syntax: how programs look, their form and structure Syntax is defined using a kind

### cmps104a 2002q4 Assignment 3 LALR(1) Parser page 1

cmps104a 2002q4 Assignment 3 LALR(1) Parser page 1 \$Id: asg3-parser.mm,v 327.1 2002-10-07 13:59:46-07 - - \$ 1. Summary Write a main program, string table manager, lexical analyzer, and parser for the language

### Earlier edition Dragon book has been revised. Course Outline Contact Room 124, tel , rvvliet(at)liacs(dot)nl

Compilerconstructie najaar 2013 http://www.liacs.nl/home/rvvliet/coco/ Rudy van Vliet kamer 124 Snellius, tel. 071-527 5777 rvvliet(at)liacs(dot)nl college 1, dinsdag 3 september 2013 Overview 1 Why this

### CMPS Programming Languages. Dr. Chengwei Lei CEECS California State University, Bakersfield

CMPS 3500 Programming Languages Dr. Chengwei Lei CEECS California State University, Bakersfield Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing

### Chapter 3. Describing Syntax and Semantics ISBN

Chapter 3 Describing Syntax and Semantics ISBN 0-321-49362-1 Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Copyright 2009 Addison-Wesley. All

### 3. Context-free grammars & parsing

3. Context-free grammars & parsing The parsing process sequences of tokens parse tree or syntax tree a / [ / index / ]/= / 4 / + / 2 The parsing process sequences of tokens parse tree or syntax tree a

### ([1-9] 1[0-2]):[0-5][0-9](AM PM)? What does the above match? Matches clock time, may or may not be told if it is AM or PM.

What is the corresponding regex? [2-9]: ([1-9] 1[0-2]):[0-5][0-9](AM PM)? What does the above match? Matches clock time, may or may not be told if it is AM or PM. CS 230 - Spring 2018 4-1 More CFG Notation

### Full file at

Java Programming: From Problem Analysis to Program Design, 3 rd Edition 2-1 Chapter 2 Basic Elements of Java At a Glance Instructor s Manual Table of Contents Overview Objectives s Quick Quizzes Class

### CS558 Programming Languages. Winter 2013 Lecture 1

CS558 Programming Languages Winter 2013 Lecture 1 1 GOALS OF THE COURSE Learn fundamental structure of programming languages. Understand key issues in language design and implementation. Increase awareness

### CE 221 Data Structures and Algorithms

CE 221 Data Structures and Algorithms Chapter 4: Trees (Binary) Text: Read Weiss, 4.1 4.2 Izmir University of Economics 1 Preliminaries - I (Recursive) Definition: A tree is a collection of nodes. The

### THE COMPILATION PROCESS EXAMPLE OF TOKENS AND ATTRIBUTES

THE COMPILATION PROCESS Character stream CS 403: Scanning and Parsing Stefan D. Bruda Fall 207 Token stream Parse tree Abstract syntax tree Modified intermediate form Target language Modified target language

### Chapter 2. Lexical Elements & Operators

Chapter 2. Lexical Elements & Operators Byoung-Tak Zhang TA: Hanock Kwak Biointelligence Laboratory School of Computer Science and Engineering Seoul National Univertisy http://bi.snu.ac.kr The C System

### Syntax/semantics. Program <> program execution Compiler/interpreter Syntax Grammars Syntax diagrams Automata/State Machines Scanning/Parsing

Syntax/semantics Program program execution Compiler/interpreter Syntax Grammars Syntax diagrams Automata/State Machines Scanning/Parsing Meta-models 8/27/10 1 Program program execution Syntax Semantics

### IPCoreL. Phillip Duane Douglas, Jr. 11/3/2010

IPCoreL Programming Language Reference Manual Phillip Duane Douglas, Jr. 11/3/2010 The IPCoreL Programming Language Reference Manual provides concise information about the grammar, syntax, semantics, and

### CSCE 314 Programming Languages

CSCE 314 Programming Languages Syntactic Analysis Dr. Hyunyoung Lee 1 What Is a Programming Language? Language = syntax + semantics The syntax of a language is concerned with the form of a program: how

### MIDTERM EXAMINATION. CSE 130: Principles of Programming Languages. Professor Goguen. February 16, points total

CSE 130, Winter 2006 MIDTERM EXAMINATION CSE 130: Principles of Programming Languages Professor Goguen February 16, 2006 100 points total Don t start the exam until you are told to. Turn off any cell phone

### Examination in Compilers, EDAN65

Examination in Compilers, EDAN65 Department of Computer Science, Lund University 2016 10 28, 08.00-13.00 Note! Your exam will be marked only if you have completed all six programming lab assignments in

### UNIT I Programming Language Syntax and semantics. Kainjan Sanghavi

UNIT I Programming Language Syntax and semantics B y Kainjan Sanghavi Contents Language Definition Syntax Abstract and Concrete Syntax Concept of binding Language Definition Should enable a person or computer

### Chapter 20: Binary Trees

Chapter 20: Binary Trees 20.1 Definition and Application of Binary Trees Definition and Application of Binary Trees Binary tree: a nonlinear linked list in which each node may point to 0, 1, or two other

### Outline. Parser overview Context-free grammars (CFG s) Derivations Syntax-Directed Translation

Outline Introduction to Parsing (adapted from CS 164 at Berkeley) Parser overview Context-free grammars (CFG s) Derivations Syntax-Directed ranslation he Functionality of the Parser Input: sequence of

### Syntax Analysis/Parsing. Context-free grammars (CFG s) Context-free grammars vs. Regular Expressions. BNF description of PL/0 syntax

Susan Eggers 1 CSE 401 Syntax Analysis/Parsing Context-free grammars (CFG s) Purpose: determine if tokens have the right form for the language (right syntactic structure) stream of tokens abstract syntax

### 22c:111 Programming Language Concepts. Fall Syntax III

22c:111 Programming Language Concepts Fall 2008 Syntax III Copyright 2007-08, The McGraw-Hill Company and Cesare Tinelli. These notes were originally developed by Allen Tucker, Robert Noonan and modified

### Decaf Language Reference

Decaf Language Reference Mike Lam, James Madison University Fall 2016 1 Introduction Decaf is an imperative language similar to Java or C, but is greatly simplified compared to those languages. It will

### Chapter 3. Semantics. Topics. Introduction. Introduction. Introduction. Introduction

Topics Chapter 3 Semantics Introduction Static Semantics Attribute Grammars Dynamic Semantics Operational Semantics Axiomatic Semantics Denotational Semantics 2 Introduction Introduction Language implementors

### EDAN65: Compilers, Lecture 04 Grammar transformations: Eliminating ambiguities, adapting to LL parsing. Görel Hedin Revised:

EDAN65: Compilers, Lecture 04 Grammar transformations: Eliminating ambiguities, adapting to LL parsing Görel Hedin Revised: 2017-09-04 This lecture Regular expressions Context-free grammar Attribute grammar

### COP 3402 Systems Software Syntax Analysis (Parser)

COP 3402 Systems Software Syntax Analysis (Parser) Syntax Analysis 1 Outline 1. Definition of Parsing 2. Context Free Grammars 3. Ambiguous/Unambiguous Grammars Syntax Analysis 2 Lexical and Syntax Analysis

### Programming Lecture 3

Programming Lecture 3 Expressions (Chapter 3) Primitive types Aside: Context Free Grammars Constants, variables Identifiers Variable declarations Arithmetic expressions Operator precedence Assignment statements

### Operators And Expressions

Operators And Expressions Operators Arithmetic Operators Relational and Logical Operators Special Operators Arithmetic Operators Operator Action Subtraction, also unary minus + Addition * Multiplication

### Context-free grammars (CFG s)

Syntax Analysis/Parsing Purpose: determine if tokens have the right form for the language (right syntactic structure) stream of tokens abstract syntax tree (AST) AST: captures hierarchical structure of

### First Semester - Question Bank Department of Computer Science Advanced Data Structures and Algorithms...

First Semester - Question Bank Department of Computer Science Advanced Data Structures and Algorithms.... Q1) What are some of the applications for the tree data structure? Q2) There are 8, 15, 13, and

### CS 315 Programming Languages Syntax. Parser. (Alternatively hand-built) (Alternatively hand-built)

Programming languages must be precise Remember instructions This is unlike natural languages CS 315 Programming Languages Syntax Precision is required for syntax think of this as the format of the language

### MIT Top-Down Parsing. Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology

MIT 6.035 Top-Down Parsing Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Orientation Language specification Lexical structure regular expressions Syntactic structure

### Chapter 10: Trees. A tree is a connected simple undirected graph with no simple circuits.

Chapter 10: Trees A tree is a connected simple undirected graph with no simple circuits. Properties: o There is a unique simple path between any 2 of its vertices. o No loops. o No multiple edges. Example

### UNIT II LEXICAL ANALYSIS

UNIT II LEXICAL ANALYSIS 2 Marks 1. What are the issues in lexical analysis? Simpler design Compiler efficiency is improved Compiler portability is enhanced. 2. Define patterns/lexeme/tokens? This set

### Programming Project II

Programming Project II CS 322 Compiler Construction Winter Quarter 2006 Due: Saturday, January 28, at 11:59pm START EARLY! Description In this phase, you will produce a parser for our version of Pascal.

### SEMANTIC ANALYSIS TYPES AND DECLARATIONS

SEMANTIC ANALYSIS CS 403: Type Checking Stefan D. Bruda Winter 2015 Parsing only verifies that the program consists of tokens arranged in a syntactically valid combination now we move to check whether

### Section A. A grammar that produces more than one parse tree for some sentences is said to be ambiguous.

Section A 1. What do you meant by parser and its types? A parser for grammar G is a program that takes as input a string w and produces as output either a parse tree for w, if w is a sentence of G, or

### Compiler Construction

Compiled on 5/05/207 at 3:2pm Abbreviations NFA. Non-deterministic finite automaton DFA. Deterministic finite automaton Compiler Construction Collection of exercises Version May 5, 207 General Remarks