🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.unix
Article #843

Re: awk syntax

#843
From: Arnold Robbins
Date: Tue, 14 May 1991 16:48
65 lines
3591 bytes
Submitted-by: arnold%audiofax.com@mathcs.emory.edu (Arnold Robbins)

>In article <1991May11.224436.25175@uunet.uu.net> arnold@audiofax.com writes:
>> (How do I know that        awk 'BEGIN { print "hi" } ; END { print "bye" }'
>> is legal while             awk 'BEGIN { print "hi" }   END { print "bye" }'
>> isn't?  Presenting a grammar for the language is almost a necessity...)

In article <1991May13.222855.9433@uunet.uu.net> peter@ficc.ferranti.com (Peter da Silva) writes:
>It isn't? I use the latter all the time!

History lesson time.   First of all, posix awk is "new" awk, not old awk.
It is based on the awk in the 1988 book by Aho, Weinberger and Kernighan.
It has some additional features that have gone in to both att & gnu awk.

One of the things that happened when new awk was first realeased was a lot
of cleaning up and consistencizing (if I may coin a term) of the awk language.
In particular, rules had to be seperated by either a newline or a semi-colon,
just like the statements inside an action.  Here's a real live example
from my V.3.2 system:

	Script started on Tue May 14 12:25:28 1991
	audiofax1> rlogin tiktok
	Password:
	
	ESIX System 5.3.2 Rev.D
	Copyright (C) 1984, 1986, 1987, 1988 AT&T
	Copyright (C) 1987, 1988 Microsoft Corp.
	Copyright (C) 1988, 1989, 1990 Everex Systems, Inc.
	All Rights Reserved
	Login last used: Tue May 14 12:24:29 1991
	TERM=at386
	tiktok> nawk 'BEGIN { print "hi" } ; END { print "bye" }' /dev/null
	hi
	bye
	tiktok> nawk 'BEGIN { print "hi" }  END { print "bye" }' /dev/null 
	nawk: syntax error at source line 1
	 context is
	        BEGIN { print "hi" }  >>>  END <<<  { print "bye" }
	nawk: bailing out at source line 1
	tiktok> 
	Connection closed.
	audiofax1> 
	script done on Tue May 14 12:26:28 1991

Based on a cursory reading of the grammar in the posix spec, this rule
applies.

Alas, some time back, backwards compatibility reared it's ugly head within
AT&T, and for V.4 nawk, Brian Kernighan "fixed" things so that the seperator
is no longer necessary.  (This was at the request of the System V folks.)
David Trueman went ahead and fixed gawk to be the same way (adding heavily
to the number of shift/reduce conflicts in the grammar).

So, the upshot is that technically, leaving out the semi-colon or newline
is not legal, but most likely you can get away with it.
-- 
Arnold Robbins				 AudioFAX, Inc. | Threads are the
2000 Powers Ferry Road, Suite 200 / Marietta, GA. 30067 | lack of an idea.
INTERNET: arnold@audiofax.com  Phone:   +1 404 618 4281 |     -- Rob Pike
UUCP:	  emory!audfax!arnold  Fax-box: +1 404 618 4581 |

[ I think this discussion is getting more towards the realm of 
  comp.unix.questions.  I'm keeping this part of it here because it is
   related to *nix standards and a good example of how fun they are. -- mod ]
Volume-Number: Volume 23, Number 68
Technical Details
Message-ID: <1991May14.185737.15746@uunet.uu.net>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!samsung!cs.utexas.edu!uunet!uunet.UU.NET!sef
References: <1991May13.222855.9433@uunet.uu.net>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!samsung!cs.utexas.edu!uunet!uunet.UU.NET!sef
From: arnold%audiofax.com@mathcs.emory.edu (Arnold Robbins)
Newsgroups: comp.std.unix
Subject: Re: awk syntax
Message-ID: <1991May14.185737.15746@uunet.uu.net>
Date: 14 May 91 16:48:07 GMT
References: <1991May13.222855.9433@uunet.uu.net>
Sender: usenet@uunet.uu.net (UseNet News)
Reply-To: arnold@audiofax.com
Organization: AudioFAX, Inc., Atlanta Georgia
Lines: 65
Approved: sef@uunet.uu.net (Moderator, Sean Eric Fagan - comp.std.unix)
Originator: sef@uunet.UU.NET
Nntp-Posting-Host: uunet.uu.net
X-Submissions: std-unix@uunet.uu.net