Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UP Lecture 09

UP Lecture 09

Compilers
Precedence of Operators I
(202602)

Avatar for Javier Gonzalez-Sanchez

Javier Gonzalez-Sanchez PRO

December 12, 2023
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. 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.
  2. Dr. Javier Gonzalez-Sanchez | Compilers | 4 jgs Test Yourselves

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

    Create New Rules to Facilitate Understanding Divide-and-Conquer Approach
  4. Dr. Javier Gonzalez-Sanchez | Compilers | 10 jgs Grammar |

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

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

    Derivation 5 integer / operator 20 integer x ID = operator Expression: Operator: Assignment:
  7. Dr. Javier Gonzalez-Sanchez | Compilers | 13 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
  8. Dr. Javier Gonzalez-Sanchez | Compilers | 14 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
  9. Dr. Javier Gonzalez-Sanchez | Compilers | 16 jgs Layering Rule

    1 Rule 2 Rule 3 Rule 4 Rule 5 . . . . . Leaf (Terminals, i.e., Tokens) Root Start symbol Layers
  10. Dr. Javier Gonzalez-Sanchez | Compilers | 17 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
  11. Dr. Javier Gonzalez-Sanchez | Compilers | 18 jgs Rule 2.

    Create New Rules to Establish Levels of Precedence for Operators
  12. Dr. Javier Gonzalez-Sanchez | Compilers | 20 jgs Exercise 1

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

    Precedence <E> → <A> | <A> {'+' <A>} | <A> {'-' <A>} <A> → <B> | <B> {'*' <B>} | <B> {'/' <B>} <B> → '-'<C> | <C> <C> → integer
  14. Dr. Javier Gonzalez-Sanchez | Compilers | 24 jgs Exercise 1

    | Precedence <E> → <A> {(’+'|'-’) <A>} <A> → <B> {('*'|'/') <B>} <B> → ['-'] <C> <C> → integer
  15. jgs Compilers Javier Gonzalez-Sanchez, Ph.D. [email protected] Spring 2026 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.