Thu, 26 Jun 2014 00:54:33 -0400

From: | George Neuner <gneuner2@comcast.net> |

Newsgroups: | comp.compilers |

Date: | Thu, 26 Jun 2014 00:54:33 -0400 |

Organization: | A noiseless patient Spider |

References: | 14-06-010 14-06-023 |

Keywords: | semantics |

Posted-Date: | 27 Jun 2014 19:08:38 EDT |

On Tue, 24 Jun 2014 02:19:05 -0700 (PDT), seimarao@gmail.com wrote:

*>Is there something for semantics as BNF is for grammars ?*

First, there is no canon BNF. What we refer to as "Backus-Naur Form"

today is not the original used for Algol-58, but is BNF plus a handful

of widely accepted practical extensions - alternation set notation,

closure notation, etc. - which together is known as EBNF ('E' for

"extended") or sometimes "core" EBNF.

Core EBNF is easily (but not trivially) portable: every popular

grammar tool understands it in concept, but not every tool uses

exactly the same rule syntax.

In addition, nearly every tool extends core EBNF to enable its own

unique features. Grammars taking advantage of any feature not in core

EBNF generally will not be portable (not trivially and possibly not

even easily) to a different tool.

To answer your question: No ... there really is nothing for semantics

that approaches the ubiquity of EBNF for grammars. The closest thing

in practice is the lambda calculus, but there are multiple forms of

the calculus and you'll find that every author extends their chosen

form in some slightly different way.

Moreover, there are 3 broad categories of semantic description:

operational, denotational and axiomatic. Lambda calculus really is

suitable only for expressing operational and/or denotational forms.

Axiomatic descriptions generally take the form of a propositional

algebra.

Historically, *most* languages have been described by operational

semantics alone, and the majority did not use any formal calculus to

do so. The most common form of description is, in fact, text - in

conjunction with a "reference" implementation: a compiler or

interpreter against which new implementations can be compared.

Scheme, ML and Haskell are described by denotational semantics. There

undoubtedly have been others but these are the ones I know offhand.

I'm not aware any languages that are described solely by axiomatic

semantics [possibly some of the declarative logic or theorem prover

languages, but I'm not very familiar with any of these]. AFAIHS,

axiomatic descriptions tend to be more for the developer of a compiler

than for the user of it. When the language gets documented, it tends

to be using an operational or denotational description.

*>What do the books on type systems, lambda calculus, etc, teach and*

*>where are their topics applied ?*

Read some and find out.

George

Post a followup to this message

Return to the
comp.compilers page.

Search the
comp.compilers archives again.