Article View: comp.bugs.4bsd
Article #1150Berkeley Pascal parses := etc incorrectly
From: Ian Donaldson
Date: Wed, 31 Aug 1988 08:08
Date: Wed, 31 Aug 1988 08:08
60 lines
2006 bytes
2006 bytes
Description:
Berkeley pascal parses ":=", "<>", "<=", ">=" incorrectly.
Any amount of white space is allowed to intervene between the
two characters. This is incorrect pascal, and in the case
of SunOS contravenes the syntax diagrams on pages 97 and 98
of the Sun Pascal programmers guide.
Compilers:
Both pi and pc
O/S's:
SunOS 3.5
4.3bsd
probably others
Repeat-by:
Compile the following program and note that there are -no-
errors diagnosed.
----------
program x(output);
var
a: integer;
begin
a :
= 3;
if a <
> 3 then
writeln('amazing')
end.
----------
Compile it again with the "-s" option and note that there
still aren't any errors. This program is NOT a standard
pascal program, but Berkeley pascal allows it.
Fix:
In 4.3bsd pc/pi, ":" and "=" are taken as
separate tokens and if adjacent form the ":=" token. The
problem is that there is no code that checks for exact
adjacency; ie: leading white space may intervene (as with
all other tokens)
In "/usr/src/ucb/pascal/src/yylex.c" the characters ":"
and "=" are returned as individual tokens without checking the
next character.
In "/usr/src/ucb/pascal/src/pas.y" the tokens for ':' and
'=' are checked for adjacency, but a second call to yylex() for
the 2nd character will skip intervening blanks between them.
yylex() needs to identify special 2-character tokens and
return a magic cookie for each type, rather than returning
just the individual characters.
Ian D
Technical Details
Message-ID:
<472@koel.rmit.oz>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!nrl-cmf!ames!pasteur!ucbvax!decwrl!sun!pitstop!sundc!seismo!uunet!munnari!bruce!goanna!yabbie!koel!rcodiShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!nrl-cmf!ames!pasteur!ucbvax!decwrl!sun!pitstop!sundc!seismo!uunet!munnari!bruce!goanna!yabbie!koel!rcodi From: rcodi@koel.rmit.oz (Ian Donaldson) Newsgroups: comp.bugs.4bsd Subject: Berkeley Pascal parses := etc incorrectly Message-ID: <472@koel.rmit.oz> Date: 31 Aug 88 08:08:28 GMT Organization: RMIT Comm & Elec Eng, Melbourne, Australia. Lines: 60