Slide 1

Slide 1 text

jgs Compilers Lecture 12: Precedence of Operators Dr. Javier Gonzalez-Sanchez [email protected]

Slide 2

Slide 2 text

jgs Previously …

Slide 3

Slide 3 text

Dr. Javier Gonzalez-Sanchez | Compilers | 3 jgs Do not Forget ▪ Terminals: Represented in lowercase, enclosed in single or double quotes, or depicted as ovals in diagrams. ▪ Non-Terminals: Represented with an uppercase initial letter, enclosed in angle brackets (< >), or depicted as rectangles in diagrams.

Slide 4

Slide 4 text

Dr. Javier Gonzalez-Sanchez | Compilers | 4 jgs Homework Syntax Diagrams for Java: - Class - Attributes - Methods - Parameters - Instruction (stop here) Do not forget static, final, public, private, data-types, abstract, extends, implements …

Slide 5

Slide 5 text

Dr. Javier Gonzalez-Sanchez | Compilers | 5 jgs Handwritten Notes

Slide 6

Slide 6 text

jgs Problem

Slide 7

Slide 7 text

Dr. Javier Gonzalez-Sanchez | Compilers | 7 jgs Grammar | Derivation 5 integer / operator 5 integer x ID = operator

Slide 8

Slide 8 text

Dr. Javier Gonzalez-Sanchez | Compilers | 8 jgs Grammar | Derivation 5 integer / operator 5 integer x ID = operator Expression: Operator: Assignment:

Slide 9

Slide 9 text

Dr. Javier Gonzalez-Sanchez | Compilers | 9 jgs Grammar | Derivation 5 integer / operator 20 integer x ID = operator Expression: Operator: Assignment:

Slide 10

Slide 10 text

Dr. Javier Gonzalez-Sanchez | Compilers | 10 jgs Grammar | Derivation 1 integer + operator 2 integer x ID = operator / operator 3 integer 1 integer / operator 2 integer x ID = operator + operator 3 integer

Slide 11

Slide 11 text

Dr. Javier Gonzalez-Sanchez | Compilers | 11 jgs Grammar | Derivation 1 integer + operator 2 integer x ID = operator / operator 3 integer 1 integer / operator 2 integer x ID = operator + operator 3 integer

Slide 12

Slide 12 text

Dr. Javier Gonzalez-Sanchez | Compilers | 12 jgs Layering 2 3 1

Slide 13

Slide 13 text

Dr. Javier Gonzalez-Sanchez | Compilers | 13 jgs Layering Rule 1 Rule 2 Rule 3 Rule 4 Rule 5 . . . . . Leaf (Terminals, i.e., Tokens) Root Start symbol Layers

Slide 14

Slide 14 text

Dr. Javier Gonzalez-Sanchez | Compilers | 14 jgs Layering 1 2 4 5 3 inputs: ▪ 1 + 2 + 3 < 4 * 5 ▪ 1 * 2 + 3 + 4 < 5 ▪ 1 < 2 + 3 + 4 * 5 ▪ 1 + 2 < 3 * 4 + 5 ▪ 1 + 2 * 3 < 4 + 5

Slide 15

Slide 15 text

jgs Step 1

Slide 16

Slide 16 text

Dr. Javier Gonzalez-Sanchez | Compilers | 17 jgs Precedence Precedence of operators + - * / -

Slide 17

Slide 17 text

Dr. Javier Gonzalez-Sanchez | Compilers | 18 jgs Exercise 1 | Precedence New Grammar: → <__> + <__> | <__> < > → <__> - <__> | <__> < > → - __ | __ Original Grammar: E → E OP E | E E → integer OP→ + | - | * | /

Slide 18

Slide 18 text

Dr. Javier Gonzalez-Sanchez | Compilers | 19 jgs Exercise 1 | Handwritten notes

Slide 19

Slide 19 text

Dr. Javier Gonzalez-Sanchez | Compilers | 20 jgs Exercise | Precedence → | {'+' } | {'-' } | {'*' } | {'/' } → '-' | → integer

Slide 20

Slide 20 text

Dr. Javier Gonzalez-Sanchez | Compilers | 21 jgs Exercise 1 | Precedence → {(’+'|'-’) } {('*'|'/') } → ['-'] → integer

Slide 21

Slide 21 text

Dr. Javier Gonzalez-Sanchez | Compilers | 22 jgs Syntax Diagrams E A B C

Slide 22

Slide 22 text

Dr. Javier Gonzalez-Sanchez | Compilers | 23 jgs Exercise 1 | Handwritten notes

Slide 23

Slide 23 text

jgs Step 2

Slide 24

Slide 24 text

Dr. Javier Gonzalez-Sanchez | Compilers | 25 jgs Exercise 2 Include rules for handling parenthesis into the previous grammar. The grammar should accept as correct the following expressions: 10 * 20 + 15 (10 * 20) + 15 10 * (20 + 15) (10) * (20) + (15) (10 * 20 + 15) 10 * (20) + 15

Slide 25

Slide 25 text

Dr. Javier Gonzalez-Sanchez | Compilers | 26 jgs Precedence Precedence of operators + - * / - ( )

Slide 26

Slide 26 text

Dr. Javier Gonzalez-Sanchez | Compilers | 27 jgs Syntax Diagrams E A B C

Slide 27

Slide 27 text

Dr. Javier Gonzalez-Sanchez | Compilers | 28 jgs Exercise 2 | Handwritten notes

Slide 28

Slide 28 text

Dr. Javier Gonzalez-Sanchez | Compilers | 29 jgs Exercise 2 | Handwritten notes

Slide 29

Slide 29 text

jgs Step 3

Slide 30

Slide 30 text

Dr. Javier Gonzalez-Sanchez | Compilers | 31 jgs Exercise 3 Include rules to accept variables names (identifiers) in expressions. The grammar should accept as correct the following expressions: A * 20 + time (x * y) + 15 10 * (ASU + cse340) (10) * (20) + (15) (hello * world + Arizona) 10 * (counter) + 15

Slide 31

Slide 31 text

Dr. Javier Gonzalez-Sanchez | Compilers | 32 jgs Syntax Diagrams E A B C

Slide 32

Slide 32 text

jgs To be continued…

Slide 33

Slide 33 text

Dr. Javier Gonzalez-Sanchez | Compilers | 41 jgs Questions

Slide 34

Slide 34 text

jgs Compilers Javier Gonzalez-Sanchez, Ph.D. [email protected] Spring 2025 Copyright. These slides can only be used as study material for the Compilers course at Universidad Panamericana. They cannot be distributed or used for another purpose.