CSE443 Compilers Dr. Carl Alphonce alphonce@buffalo.edu 343 Davis - - PowerPoint PPT Presentation

cse443 compilers
SMART_READER_LITE
LIVE PREVIEW

CSE443 Compilers Dr. Carl Alphonce alphonce@buffalo.edu 343 Davis - - PowerPoint PPT Presentation

CSE443 Compilers Dr. Carl Alphonce alphonce@buffalo.edu 343 Davis Hall Syllabus Posted on website Academic Integrity Textbook Classic text. You should hang on to this one. Team formation If you have a team, please list members in


slide-1
SLIDE 1

CSE443 Compilers

  • Dr. Carl Alphonce

alphonce@buffalo.edu 343 Davis Hall

slide-2
SLIDE 2

Syllabus

Posted on website Academic Integrity

slide-3
SLIDE 3

Textbook

Classic text. You should hang on to this one.

slide-4
SLIDE 4

Team formation

If you have a team, please list members in response to Piazza post. Also indicate your choice: C or SML.

slide-5
SLIDE 5

syracuse : durée est un nombre e est un nombre début e prend 14 tant que e != 1 lis durée prend durée + 1 si (e mod 2) = 0, e prend e / 2 sinon e prend e * 3 + 1 affiche e ferme affiche "durée = {durée}" void syracuse() { int iterations = 0; int e; e = 14; while (e != 1) { iterations = iterations + 1; if ( (e % 2) == 0 ) e = e / 2; else e = e * 3 + 1; printf("%d\n",e); } printf("iterations = %d\n",iterations); }

Linotte French keywords C English keywords

  • Keywords have no inherent meaning.
  • Program meaning is given by formal semantics.
  • Compiler must preserve semantics of source

program in translation to low level form.

slide-6
SLIDE 6

Syntax and semantics

Syntax: program structure Semantics: program meaning Semantics are determined (in part) by program structure.

slide-7
SLIDE 7

Languages: the Chomsky hierarchy

"On Certain Formal Properties of Grammars" published 1959

recursively enumerable context-sensitive context-free

regular

https:/ /upload.wikimedia.org/wikipedia/commons/8/86/Noam_chomsky.jpg

slide-8
SLIDE 8

SOURCE: https:/ /openi.nlm.nih.gov/detailedresult.php?img=PMC3367694_rstb20120103-g2&req=4 AUTHORS: Fitch WT, Friederici AD - Philos. Trans. R. Soc. Lond., B, Biol. Sci. (2012) LICENSE: http:/ /creativecommons.org/licenses/by/3.0/

slide-9
SLIDE 9

SOURCE: https:/ /openi.nlm.nih.gov/detailedresult.php?img=PMC3367694_rstb20120103-g2&req=4 AUTHORS: Fitch WT, Friederici AD - Philos. Trans. R. Soc. Lond., B, Biol. Sci. (2012) LICENSE: http:/ /creativecommons.org/licenses/by/3.0/

Lexical structure Syntactic structure

slide-10
SLIDE 10

Phases of a compiler

Figure 1.6, page 5 of text

Lexical structure Syntactic structure

slide-11
SLIDE 11

Phases of a compiler

Figure 1.6, page 5 of text

Lexical structure

slide-12
SLIDE 12

Lexical Structure

int main(){

slide-13
SLIDE 13

Lexical Structure

int main(){

character stream

i n t m a i n ( ) {

slide-14
SLIDE 14

Lexical Structure

int main(){

character stream -> token stream

i n t m a i n ( ) { id(“int”) id(“main”) LPAR RPAR LBRACE

slide-15
SLIDE 15

Lexical Structure

tokens

keywords (e.g. static, for, while, struct)

  • perators (e.g. <, >, <=, =, ==, +, -, &, .)

identifiers (e.g. foo, bar, sum, mystery) literals (e.g. -17, 34.52E-45, true, ’e’, “Serenity”) punctuation (e.g. { , } , ( , ) , ; )

slide-16
SLIDE 16

meta vs object language

  • bject language: the language we

are describing meta language: the language we use to describe the object language

slide-17
SLIDE 17

meta vs object language

use quotes (meta vs ‘object’) punctuation (e.g. ‘{’ , ‘}’ , ‘(’ , ‘)’ , ‘;’ ) use font or font property (meta vs object) punctuation (e.g. { , } , ( , ) , ; )

slide-18
SLIDE 18

languages & grammars

Formally, a language is a set of strings

  • ver some alphabet
  • Ex. {00, 01, 10, 11} is the set of all

strings of length 2 over the alphabet {0, 1}

  • Ex. {00, 11} is the set of all even parity

strings of length 2 over the alphabet {0, 1}

slide-19
SLIDE 19

Formally, a grammar is defined by 4 items:

  • 1. N, a set of non-terminals
  • 2. ∑, a set of terminals
  • 3. P, a set of productions
  • 4. S, a start symbol

G = (N, ∑, P, S)

languages & grammars

slide-20
SLIDE 20

N, a set of non-terminals ∑, a set of terminals (alphabet) N ∩ ∑ = {} P, a set of productions of the form (right linear) X -> a X -> aY X -> ℇ X ∈ N, Y ∈ N, a ∈ ∑, ℇ denotes the empty string S, a start symbol S ∈ N

languages & grammars

slide-21
SLIDE 21

Given a string αΑ, where α ∈ ∑* and Α ∈ N, and a production Α -> β ∈ P we write αΑ => αβ to indicate that αΑ derives αβ in one step. =>k and =>* can be used to indicate k or arbitrarily many derivation steps, respectively.

languages & grammars

slide-22
SLIDE 22

𝓜(G) is the set of all strings derivable from G starting with the start symbol; i.e. it denotes the language of G.

languages & grammars

slide-23
SLIDE 23

Given a grammar G the language it generates, 𝓜(G), is unique. Given a language L there are many grammars H such that 𝓜(H) = L.

languages & grammars

slide-24
SLIDE 24

Lexical Analysis

Lexical structure described by regular grammar Deterministic finite state machine performs analysis

slide-25
SLIDE 25

LANGUAGE operations

If L and M are regular, so are:

L ∪ M = { s | s ∈ L or s ∈ M } union LM = { st | s ∈ L and t ∈ M } concatenation L* = ∪i=0,∞ Li Kleene closure

By definition, L0 = {ℇ}