Expressions Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section 8.1-8.2.

Slides:



Advertisements
Similar presentations
1 Compiler Construction Intermediate Code Generation.
Advertisements

Stacks - 3 Nour El-Kadri CSI Evaluating arithmetic expressions Stack-based algorithms are used for syntactical analysis (parsing). For example.
COP4020 Programming Languages Expression and assignment Prof. Xin Yuan.
Chapter 5: Elementary Data Types Properties of types and objects –Data objects, variables and constants –Data types –Declarations –Type checking –Assignment.
PZ14A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ14A - Text processing Programming Language Design and.
1 Languages and Compilers (SProg og Oversættere) Sequence control and Subprogram Control.
Louden, Chapter 7 - Control I: Expressions and Statements Programming Languages: Principles and Practice, 2nd Ed. Kenneth C. Louden.
1 Chapter 7: Expressions Expressions are the fundamental means of specifying computations in a programming language To understand expression evaluation,
Chapter 8 . Sequence Control
Chapter 7 Expressions and Assignment Statements. Copyright © 2007 Addison-Wesley. All rights reserved. 1–2 Arithmetic Expressions Arithmetic evaluation.
Topic 15 Implementing and Using Stacks
Lecture 18 Last Lecture Today’s Topic Instruction formats
Sequence Control Chapter 6. 2 l Control structures: the basic framework within which operations and data are combined into programs. Sequence control.
Chapter 7 Expressions and Assignment Statements. Copyright © 2007 Addison-Wesley. All rights reserved. 1–2 Arithmetic Expressions Arithmetic evaluation.
PZ07A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ07A - Expressions Programming Language Design and Implementation.
Stack Applications.
Appendixes 4. An Introduction to PostScript ® CVG Lab.
DATA STRUCTURE & ALGORITHMS CHAPTER 3: STACKS. 2 Objectives In this chapter, you will: Learn about stacks Examine various stack operations Discover stack.
Chapter 3: Data Types and Operators JavaScript - Introductory.
Operators Using Java operators An operator takes one or more arguments and produces a new value. All operators produce a value from their.
Chapter 8 Intermediate Code Zhang Jing, Wang HaiLing College of Computer Science & Technology Harbin Engineering University.
Overview What is PostScript? Types Language Concepts Control Operators Examples.
CSI 3120, Expressions and assignment, page 1 Expressions and assignment Points for discussion Arithmetic expressions Overloading Logical expressions Assignment.
C++ Basics Tutorial 6 Operators. What are going to see today? Assignment operator(=) Arithmetic operators(+,-,*,/,%) Compound assignment(+=,-=,*=……..)
Expressions and Statements. Expressions Literals and identifiers are expressions More complex expressions are built from simple expressions by the application.
Expressions and Assignment Statements
ISBN Chapter 7 Expressions and Assignment Statements.
PZ07A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ07A - Expressions Programming Language Design and Implementation.
PZ07A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ07A - Expressions Programming Language Design and Implementation.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 19: Stacks and Queues (part 2)
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 18: Stacks and Queues (part 2)
Text processing Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section 12.1.
1 Expressions Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
IS 1014 Introduction to Computer Graphics -- Paul Munro A Postscript Tutorial Book available at: cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF.
Semantics (1).
Copyright © Curt Hill Stacks An Useful Abstract Data Type.
1 Introduction to PostScript Sep. 21 Dae-Eun Hyun 3D MAP Lab.
CPS Review of Data Structures l We’ve studied concrete data structures/type (CDT)  Vectors Homogeneous aggregates supporting random access  Linked.
PZ09A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ09A - Activation records Programming Language Design.
ECE 103 Engineering Programming Chapter 4 Operators Herbert G. Mayer, PSU CS Status 6/19/2015 Initial content copied verbatim from ECE 103 material developed.
Copyright © 2009 Elsevier Chapter 6:: Control Flow Programming Language Pragmatics Michael L. Scott.
Semantics(1). 2 Symantec(1)  To provide an authoritative definition of the meaning of all language constructs for: 1.Programmers 2.Compiler writers 3.Standards.
CSE 3302 Programming Languages Chengkai Li, Weimin He Spring 2008 Control I Expressions and Statements Lecture 9 – Control I, Spring CSE3302 Programming.
Stacks Access is allowed only at one point of the structure, normally termed the top of the stack access to the most recently added item only Operations.
CSE 220 – C Programming Expressions.
Stack: What problems does it solve?
Expressions and Assignment
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
CO4301 – Advanced Games Development Week 2 Introduction to Parsing
Stack application: postponing data usage
PART II STACK APPLICATIONS
Stack Data Structure, Reverse Polish Notation, Homework 7
Chap. 6 :: Control Flow Michael L. Scott.
Page description language from Adobe
C Operators, Operands, Expressions & Statements
Chap. 6 :: Control Flow Michael L. Scott.
Associativity and Prescedence
Introduction to Programming – 4 Operators
Languages and Compilers (SProg og Oversættere)
Expressions Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
CSE 3302 Programming Languages
Text processing Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section 12.1.
C++ Programming Language Lecture 4 C++ Basics – Part II
Chapter 6 Programming the basic computer
ENERGY 211 / CME 211 Lecture 5 October 1, 2008.
PZ07A - Expressions Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section PZ07A.
Expressions Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Stacks A stack is an ordered set of elements, for which only the last element placed into the stack is accessible. The stack data type is also known as.
Expressions Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Presentation transcript:

Expressions Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section

Expressions 2 Execution-time representation  Machine code sequence  Tree representation  Pre-fix or post-fix

Expressions 3 Tree structure rules  Slow  software interpreter – parse tree  Problem –Uniform evaluation rules Eager evaluation ? Lazy evaluation (LISP, PROLOG) Z+(Y==0 ? X : X/Y) –Side effect a * fun(x) + a –Error conditions Optimization, … –Short-circuit boolean expression if((A==0) || (B/A)>C) {…} while((I 0)) {…}

Expressions 4 Postfix Infix notation: Operator appears between operands:   9 Implied precedence: * 4  2 + (3 * 4 ), not (2 + 3 ) * 4 Prefix notation: Operator precedes operands:  * 3 5  (+ 2 ( * 3 5 ) )   17 Postfix notation: Operator follows operands:  * 5 +  (( 2 3 * 5 +)   11 Called Polish postfix since few could pronounce Polish mathematician Lukasiewicz, who invented it. An interesting, but unimportant mathematical curiosity when presented in 1920s. Only became important in 1950s when Burroughs rediscovered it for their ALGOL compiler.

Expressions 5 Evaluation of postfix 1. If argument is an operand, stack it. 2. If argument is an n-ary operator, then the n arguments are already onthe stack. Pop the n arguments from the stack and replace by the value of the operator applied to the arguments. Example: * stack stack stack replace 3 and 4 on stack by stack 6. * - replace 5 and 7 on stack by replace 35 and 2 on stack by 37

Expressions 6 Importance of Postfix to Compilers Code generation same as expression evaluation. To generate code for * +, do: stack L-value of stack L-value of stack L-value of generate code to take R-value of top stack element (L- value of 4) and add to R-value of next stack element (L-value of 3) and place L-value of result on stack stack L-value of 5 6. * - generate code to take R-value of top stack element (L- value of 5) and multiply to R-value of next stack element (L- value of 7) and place L-value of result on stack generate code to take R-value of top stack element (L- value of 35) and add to R-value of next stack element (L-value of 2) and place L-value of result (37) on stack

Expressions 7 Forth - A language based on postfix Postfix source language leads to an efficient execution model, even though generally interpreted. System runs on two stacks - a subroutine return stack and an expression evaluation stack. Run-time model very small making it useful on small embedded computers. Forth was developed by Charles Moore around The name was a contraction of “Fourth Generation Programming Language” with the program name limited to five characters. The language was a replacement for FORTRAN on small minicomputers in the 1970s where space was at a premium and the only input-output device was often a very slow and cumbersome paper tape. Having a resident translator/interpreter made for easy program development on the target system.

Expressions 8 Example Forth program Program to compute: $ [Notation: a,b,c is expression stack. c is stack(top)] : SQR DUP * ; (Defines square by: n  n,n  (n*n)) : DOSUM SWAP 1 + SWAP OVER SQR + ; Execution: ( N,S  N+1,S+(N+1) 2 ) ( N,S  S,N  S,(N+1)  (N+1),S  (N+1),S, N+1)  (N+1),S, N+1) 2  (N+1),S+(N+1) 2 ) 3 6 DOSUM ok (Period (.) prints stack(top). Output is 22 = ) DO DOSUM LOOP. 385 ok (Apply DOSUM from 0 to 9 (Stop at 10)) }}

Expressions 9 Postscript Postscript is Forth with painting commands added. 1: %Same as Forth program 2: /Helvetica findfont 3: 20 scalefont 4: setfont 5: moveto 6: /formatit {10 10 string cvrs show} def 7: /sqr {dup mul} def 8: /dosum {exch 1 add exch 1 index sqr add} def 9: 3 6 dosum 2 copy formatit ( ) show formatit 10: clear 11: moveto 12: {pop dosum} for formatit 13: showpage

Expressions 10 Postscript painting commands 14: % Lets draw a truck 15: /box {newpath 0 0 moveto 0 1 lineto 3 1 lineto 3 0 lineto 16: closepath} def 17:.1 setlinewidth 0 setgray 18: gsave 19: scale 20: 2 5 translate box stroke 21: translate.5.5 scale box fill 22: 0 1 translate.6.6 scale box fill 23: grestore 24: /tire {newpath 1 0 moveto arc closepath} def 25:.5 setlinewidth scale 26: translate tire stroke 27: 3 0 translate tire stroke 28: 17 0 translate tire stroke 29: 3 0 translate tire stroke 30: 8 0 translate tire stroke 13: showpage

Expressions 11 Precedence of operators Assumed order of evaluation for arithmetic expressions: 2*3+4*5 assumed to be 26 since assumed ordering is (2*3)+(4*5). This is specified by precedence of operators. In any expression, the highest precedence operations are evaluated first, and so on. Most languages have an implied precedence.  APL and Smalltalk do not. Neither language emphasizes arithmetic data, so it is not clear what precedence means in this case.  C has 17 levels of precedence (given next)

Expressions 12 C precedence levels Precedence Operators Operator names 17 tokens, a[k], f()Literals, subscripting, function call.,-> Selection 16 ++, -- Postfix increment/decrement 15* ++, -- Prefix inc/dec , -, sizeof Unary operators, storage !,&,* Logical negation, indirection 14 typename Casts 13 *, /, % Multiplicative operators 12 +,- Additive operators 11 > Shift 10, = Relational 9 ==, != Equality 8 & Bitwise and 7  Bitwise xor 6 | Bitwise or 5 && Logical and 4 || Logical or 3 ?: Conditional 2 =, +=, -=, *=, Assignment /=, %=, >=, &=,  =, |= 1, Sequential evaluation