Dr. Javier Gonzalez-Sanchez | Compilers | 6
jgs
BNF (Backus-Naur Form)
Formal, mathematical way to specify grammars
▪ → or ::= is defined as
▪ | or operator
▪ or use uppercases
▪ terminal (lowercases)
* John Backus and Peter Naur
Slide 6
Slide 6 text
Dr. Javier Gonzalez-Sanchez | Compilers | 7
jgs
Extended BNF
Extended BNF include notation to indicate:
▪ 0 or more occurrences {…}
▪ 1 or more occurrences +
▪ 0 or 1 occurrences […]
▪ Use of parentheses for grouping ( )
* Niklaus Wirth
Slide 7
Slide 7 text
Dr. Javier Gonzalez-Sanchez | Compilers | 8
jgs
Test Yourselves
5
integer
/
operator
5
integer
Non-Terminals
Terminals
::= 'integer' ( '+' | '-' | '*' | '/' ) 'integer'
Expression
Rules
Start Symbol (root)
Assignment
::= 'id' '=' Expression
x
ID
=
operator
Assignment
Expression
Assignment
Slide 8
Slide 8 text
Dr. Javier Gonzalez-Sanchez | Compilers | 9
jgs
Test Yourselves
Grammar rule for calling a method:
▪ draw(x, y, z);
▪ print (a, b, c, d);
▪ done();
▪ foobar (one, two, three, four, five);
▪ sqrt (x);
Dr. Javier Gonzalez-Sanchez | Compilers | 12
jgs
Notation
▪ Ovals → Represent Terminals (Literals, Keywords, or Tokens)
▪ Rectangles → Represent Non-Terminals (Rules or Expressions)
▪ Lines → Represent the Flow of Parsing (Connections) : move left to right
▪ Lines Above (a baseline) → move right to left (usually a loop)
Slide 12
Slide 12 text
Dr. Javier Gonzalez-Sanchez | Compilers | 13
jgs
Test Yourselves
5
integer
/
operator
5
integer
Non-Terminals
Terminals
::= 'integer' ( '+' | '-' | '*' | '/' ) 'integer'
Expression
Rules
Start Symbol (root)
Assignment
::= 'id' '=' Expression
x
ID
=
operator
Assignment
Expression
Assignment
Slide 13
Slide 13 text
Dr. Javier Gonzalez-Sanchez | Compilers | 14
jgs
Syntax Diagrams
Call_method
Identifiers
Dr. Javier Gonzalez-Sanchez | Compilers | 17
jgs
Grammar
PROGRAM
BODY
ASSIGNMENT
Slide 17
Slide 17 text
Dr. Javier Gonzalez-Sanchez | Compilers | 18
jgs
Grammar
VARIABLE
WHILE
Slide 18
Slide 18 text
Dr. Javier Gonzalez-Sanchez | Compilers | 19
jgs
Grammar
IF
RETURN
PRINT
Slide 19
Slide 19 text
Dr. Javier Gonzalez-Sanchez | Compilers | 20
jgs
Questions
Slide 20
Slide 20 text
Dr. Javier Gonzalez-Sanchez | Compilers | 21
jgs
Homework | 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 …
Slide 21
Slide 21 text
Dr. Javier Gonzalez-Sanchez | Compilers | 22
jgs
Homework
Review Recursion
Slide 22
Slide 22 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.