Related articles |
---|
[14 earlier articles] |
Re: Is the dangling else a syntax bug? esmond.pitt@bigpond.com (Esmond Pitt) (2001-07-18) |
Re: Is the dangling else a syntax bug? jcrens@earthlink.net (Jack Crenshaw) (2001-07-23) |
Re: Is the dangling else a syntax bug? marcov@toad.stack.nl (2001-07-23) |
Re: Is the dangling else a syntax bug? joachim_d@gmx.de (Joachim Durchholz) (2001-07-23) |
Re: Is the dangling else a syntax bug? vbdis@aol.com (2001-07-27) |
Re: Is the dangling else a syntax bug? wb@vestein.arb-phys.uni-dortmund.de (2001-07-30) |
Re: Is the dangling else a syntax bug? mike@dimmick.demon.co.uk (Mike Dimmick) (2001-07-30) |
Re: Is the dangling else a syntax bug? wclodius@aol.com (2001-07-30) |
Re: Is the dangling else a syntax bug? joachim_d@gmx.de (Joachim Durchholz) (2001-07-30) |
Re: Is the dangling else a syntax bug? marcov@toad.stack.nl (2001-08-02) |
Re: Is the dangling else a syntax bug? vbdis@aol.com (2001-08-02) |
Re: Is the dangling else a syntax bug? stephen_bevan@yahoo.com (2001-08-06) |
From: | "Mike Dimmick" <mike@dimmick.demon.co.uk> |
Newsgroups: | comp.compilers |
Date: | 30 Jul 2001 01:18:44 -0400 |
Organization: | Compilers Central |
References: | 01-07-133 01-07-153 |
Keywords: | syntax, design |
Posted-Date: | 30 Jul 2001 01:18:44 EDT |
"VBDis" <vbdis@aol.com> wrote in message news:01-07-153@comp.compilers...
> "Joachim Durchholz" <joachim_d@gmx.de> schreibt:
>
> >An interesting variation of this is the use of unindentation as "end"
> >marker. This has been done e.g. in Python and Haskell.
>
> Did you ever see source code with a mix of tab and space characters?
> Such text becomes unreadable to both a human and a compiler, when the
> tab size is changed to some user defined value. The whole source code
> then is bound to a specific editor :-(
The Miranda functional programming system uses what is termed the 'offside
rule' (actually, I can't remember the term, but it was something like that)
which determined whether a line of source was a continuation of the above
expression, or the beginning of a new expression.
My notes (from Programming Language Concepts and Paradigms course) read:
"Layout is syntactically significant in Miranda. An equation right-part
(the part _after_ '=') is terminated by (and only by) a symbol that _begins
to the left_ of the right-part's first nonblank character. In Miranda
terminology, the terminating symbol is said to be _offside_."
CORRECT WRONG
fare age = 40, if age < 16 fare age = 40, if age < 16
= 80, otherwise = 80, otherwise
fib n = fib (n - 1) + fib n = fib (n - 1) +
fib (n - 2) fib (n - 2)
This matters because of 'where' clauses - this function calculates the
distance between two points, given in (x,y) pairs:
distance (x1, y1) (x2, y2)
= sqrt (sqr xgap + sqr ygap)
where
xgap = x1 - x2
ygap = y1 - y2
If the offset is incorrect for the line beginning 'ygap' it will be
considered a global function, not a calculation subordinate to 'distance'.
These rules are much the same for Haskell (another functional programming
system). I don't have experience with Python, but I know that indentation
is also significant in the Occam language to mark subordinate code.
I seem to recall that the interpreted tab size could be changed in Miranda
(which doesn't have a built-in editor) by setting some environment variable.
The nearly-compatible Amanda (which is free) has a built-in editor.
> But perhaps I misunderstood your point. When the editor inserts the
> appropriate End keyword whenever a line is outdented, then everything
> is okay. But then it's a feature of the editor, not of the language.
True. But as I've said, some languages do use indentation alone to indicate
grouping and subordination.
--
Mike Dimmick
Return to the
comp.compilers page.
Search the
comp.compilers archives again.