Slide 1

Slide 1 text

jgs Compilers Lecture 10: Backus-Naur Form and Syntax Diagrams 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 Outline Language Lexical Analysis (Lexer) Rules Symbols Token Tools Regular Expression DFA Syntactic Analysis (Parser) Grammar (Rules) Terminal Non-terminal Tools BNF (Backus-Naur Form) Syntax Diagrams

Slide 4

Slide 4 text

jgs Backus-Naur Form

Slide 5

Slide 5 text

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);

Slide 9

Slide 9 text

Dr. Javier Gonzalez-Sanchez | Compilers | 10 jgs Test Yourselves BNF → identifier(); | identifier(); → identifier | identifier, EBNF → identifier ('('')' | '('')' ) ';' → identifier | identifier, EBNF → identifier'('[]')' ';' → identifier | identifier, EBNF → identifier'('[]')' ';' → identifier { ,identifier }

Slide 10

Slide 10 text

jgs Syntax Diagrams

Slide 11

Slide 11 text

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

Slide 14

Slide 14 text

jgs Test Yourselves

Slide 15

Slide 15 text

Dr. Javier Gonzalez-Sanchez | Compilers | 16 jgs Grammar → '{' '}’ → {';'|';'|';’|||';'} → identifier '=' → ('int'|'float'|'boolean'|'char’|'string'|'void')identifier → 'while' '(' ')' → 'if' '(' ')' ['else' ] → 'return' → ’print’ ‘(‘ ‘)’ →

Slide 16

Slide 16 text

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.