Defining Program Syntax
Chapter Two Modern Programming Languages, 2nd ed. 1
Defining Program Syntax Chapter Two Modern Programming Languages, - - PowerPoint PPT Presentation
Defining Program Syntax Chapter Two Modern Programming Languages, 2nd ed. 1 Syntax And Semantics Programming language syntax: how programs look, their form and structure Syntax is defined using a kind of formal grammar Programming
Chapter Two Modern Programming Languages, 2nd ed. 1
– Syntax is defined using a kind of formal
– Semantics is harder to define—more on this in
Chapter Two Modern Programming Languages, 2nd ed. 2
Chapter Two Modern Programming Languages, 2nd ed. 3
Chapter Two Modern Programming Languages, 2nd ed. 4
Chapter Two Modern Programming Languages, 2nd ed. 5
Chapter Two Modern Programming Languages, 2nd ed. 6
Chapter Two Modern Programming Languages, 2nd ed. 7
Chapter Two Modern Programming Languages, 2nd ed. 8
Chapter Two Modern Programming Languages, 2nd ed. 9
Chapter Two Modern Programming Languages, 2nd ed. 10
– The set of tokens – The set of non-terminal symbols – The start symbol – The set of productions
Chapter Two Modern Programming Languages, 2nd ed. 11
The tokens are the smallest units of syntax
– Strings of one or more characters of program text – They are atomic: not treated as being composed from
The non-terminal symbols stand for larger pieces
– They are strings enclosed in angle brackets, as in <NP> – They are not strings that occur literally in program text – The grammar says how they can be expanded into
The start symbol is the particular non-terminal that
Chapter Two Modern Programming Languages, 2nd ed. 12
The productions are the tree-building rules Each one has a left-hand side, the separator ::=,
– The left-hand side is a single non-terminal – The right-hand side is a sequence of one or more things,
A production gives one possible way of building a
Chapter Two Modern Programming Languages, 2nd ed. 13
Chapter Two Modern Programming Languages, 2nd ed. 14
Chapter Two Modern Programming Languages, 2nd ed. 15
Chapter Two Modern Programming Languages, 2nd ed. 16
Chapter Two Modern Programming Languages, 2nd ed. 17
Chapter Two Modern Programming Languages, 2nd ed. 18
Chapter Two Modern Programming Languages, 2nd ed. 19
Chapter Two Modern Programming Languages, 2nd ed. 20
Chapter Two Modern Programming Languages, 2nd ed. 21
Chapter Two Modern Programming Languages, 2nd ed. 22
Chapter Two Modern Programming Languages, 2nd ed. 23
Chapter Two Modern Programming Languages, 2nd ed. 24
Chapter Two Modern Programming Languages, 2nd ed. 25
< program > ::= < statement > ; < statement_list > < statement_list > ::= < statement >< statement_list > | < empty > < statement > ::= < assignment_statement > | < expression > < assignment_statement > ::= < identifier > < assignment_operator > < expression > < expression > ::= < identifier > < operator > < expression > < expression > ::= < number > < operator > < expression > < expression > ::= < identifier > < expression > ::= < number > < operator > ::= + | − | ∗ | / |% < assignment_operator > ::= =
1Chapter Two Modern Programming Languages, 2nd ed. 26
Chapter Two Modern Programming Languages, 2nd ed. 27
Chapter Two Modern Programming Languages, 2nd ed. 28
Chapter Two Modern Programming Languages, 2nd ed. 29
– One says how to construct a sequence of tokens
– One says how to construct a parse tree from a
Chapter Two Modern Programming Languages, 2nd ed. 30
Chapter Two Modern Programming Languages, 2nd ed. 31
– Early Fortran and Algol dialects allowed spaces
– Other languages like PL/I allow keywords to be
Chapter Two Modern Programming Languages, 2nd ed. 32
– One statement per line (i.e. per card) – First few columns for statement label – Etc.
Chapter Two Modern Programming Languages, 2nd ed. 33
Chapter Two Modern Programming Languages, 2nd ed. 34
Chapter Two Modern Programming Languages, 2nd ed. 35
Chapter Two Modern Programming Languages, 2nd ed. 36
– {x} to mean zero or more repetitions of x – [x] to mean x is optional (i.e. x | <empty>) – () for grouping – | anywhere to mean a choice among alternatives – Quotes around tokens, if necessary, to
Chapter Two Modern Programming Languages, 2nd ed. 37
Chapter Two Modern Programming Languages, 2nd ed. 38
Chapter Two Modern Programming Languages, 2nd ed. 39
Chapter Two Modern Programming Languages, 2nd ed. 40
Chapter Two Modern Programming Languages, 2nd ed. 41
Chapter Two Modern Programming Languages, 2nd ed. 42
Chapter Two Modern Programming Languages, 2nd ed. 43
Chapter Two Modern Programming Languages, 2nd ed. 44
Chapter Two Modern Programming Languages, 2nd ed. 45
Chapter Two Modern Programming Languages, 2nd ed. 46
– Two grammars, two compiler passes – Parser-generators can write code for those two
Chapter Two Modern Programming Languages, 2nd ed. 47
– Novices want to find out what legal programs
– Experts—advanced users and language system
– Tools—parser and scanner generators—want
Chapter Two Modern Programming Languages, 2nd ed. 48