17
Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Embed Size (px)

Citation preview

Page 1: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Syntax Specificationand BNF

© Allan C. Milne

Abertay University

v12.7.11

Page 2: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Agenda.

• Language Sspecification.

• BNF.

• Derivation sequence.

• Examples.

Page 3: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Syntax and Semantics.

• A language must be defined in terms of both its syntax and semantics.

• Syntax defines the format of the programs, statements and structures.– What a program looks like.

• Semantics defines the meaning of language constructs.– What a program does.

Page 4: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Language Specifications.

• Syntax can be formally defined.– e.g. grammars, BNF, syntax diagrams.

• While semantics can also be formally defined these definitions are usually long-winded and inaccessible to programmers.– e.g. attribute grammars, denotational

semantics.

Page 5: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Specifying Syntax.

• There are a number of approaches to defining the syntax of a language:

– Informal (eg Basic manuals).• An assignment statement has the name of an

identifier followed by an equals sign and an arbitrary expression.

– Syntax diagrams (eg Pascal).•

– BNF (eg Algol-60).• <Assignment> ::= <Id> "=" <Expression>

id expression=

Page 6: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Backus Normal Form (BNF).

• Backus Naur Form or Backus Normal Form.• First used for the specification of Algol-60.• This is a formal specification method.• Underlying formalism is grammar theory.

– A grammar is a generative device that specifies how to generate valid sentences in the language.

• BNF is a metalanguage.

Page 7: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Naming of Parts.

<Assignment> ::= <Id> "=" <Expression> ;

metasymbolsa rule

non-terminal symbols

terminal symbol

a production

Page 8: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

The Parts.

• Metasymbols– part of the BNF language Not the language being

specified– < > ::= " ; | ( ) ? + *

• Terminal Symbols– atomic components of the language being specified– may use "…" to remove ambiguity

• Non-Terminal Symbols– define syntactic components used in the specification– are part of the specification not the language– name surrounded by <…>– are derived into smaller units

Page 9: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Productions.

• A rule in BNF can have 1 or more alternative productions:

<BooleanConstant> ::= true | false ;

• This rule is made up of the following two productions:

<BooleanConstant> ::= true ;<BooleanConstant> ::= false ;

Page 10: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

The Null Production.

• It is useful to have a notation for the null, or empty, production; – that is a production that derives to nothing.

• We use the notation <> to indicate the null production.

• Note this must be an entire production– it cannot be used with other terminal or non-

terminal symbols in a production.• Example

<If> ::= if "(" <Condition> ")" <Statement> <Else-part> ;<Else-part> ::= else <Statement> | <> ;

Page 11: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Applying Productions.• Productions of a rule are applied through substitution:

… <A> … … ... a

where the rule for <A> has a production <A> ::= a• This is a derivation of <A>.

• Example: assume a production <Foo> ::= hello <Name> ;

• and a stringa b <Foo> c d

• apply the production to geta b <Foo> c d a b hello <Name> c d

Page 12: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Derivation Sequence.• A derivation sequence is the sequence of single derivation

steps starting from the distinguished symbol of the BNF and

terminating in a string of terminal symbols.

• The distinguished or starter symbol is defined to be the non-

terminal of the first rule of the BNF specification.

• The final string of terminals is our program, known formally

as a sentence.

Page 13: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

The Language.

• The language defined by a BNF specification is the set of all sentences that can be derived from the distinguished symbol of the specification.

• Putting it another way, a sentence (or program) of a language is syntactically valid if and only if a derivation sequence can be found.

Page 14: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

An Example BNF Specification.

• A specification of the syntax of a parenthesised comma-separated list of animals:

<AnimalList> ::= "(" ")" | "(" <Animal> ")" | "(" <MoreAnimals> , <Animal> ")" ;

<MoreAnimals> ::= <Animal> | <MoreAnimals> , <Animal> ;

<Animal> ::= ant | bat | cat | dog ;

Page 15: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Example Derivation Sequence.

• Here is one possible derivation sequence for the sentence “( dog,ant)” :

<AnimalList> ( <MoreAnimals> , <Animal> )

( <MoreAnimals> , ant )

( <Animal> , ant )

( dog , ant )

Page 16: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Parsing.

• Parsing a program is finding a derivation sequence for the program.

• There are two general approaches to this:

– Top-down; start from the distinguished symbol and find substitutions that result in the target program.

– Bottom-up; start with the input programand try to reduce this back to the distinguished symbol.• This latter is the approach used by Yacc.

Page 17: Syntax Specification and BNF © Allan C. Milne Abertay University v12.7.11

Extended BNF.

• The standard BNF notation has been extended to include iterative constructs;– this is known as Extended BNF or EBNF notation;– it is a superset of standard BNF.

• For those interested refer to my version of this notation which includes a full specification of the EBNF notation in itself and supporting tools.

• Find this at

– http://a510690.ces.abertay.ac.uk/EBNF/