Re: Approaching the First Draft [of a language spec]

From: Date: Tue, 21 Nov 2000 01:27:48 +0000
Subject: Re: Approaching the First Draft [of a language spec]
References: 1  Groups: php.dev php.lang 
Request: Send a blank email to php-dev+get-38736@lists.php.net to get a copy of this message
The way I see this actually working is that someone sits down and writes a first draft of this thing. Probably quite incomplete, but at least it will lay out the framework. From there we complete it as a group. Historically not too many things have been accomplished through concensus and voting and whatever other structure you might put in place. You need to start with some sort of base usually hammered out by either a single person or a very small group. At this point I would prefer to see someone like Sascha just sit down and write this base document. It should be a complete and unambiguous language spec using some sort of established language description syntax. However, it should also include mere-mortal interpretation hints. Something like the following. I am using BNF since that is what I am familiar with, but there might be some better alternatives. I think the important part is to have the combination of the rigid definition of something like BNF combined with the user-friendly explanation and example text: <while-statement> ::= while ( boolean_expr ) [ statement_sequence ] | [ : statement_sequence endwhile ] The while statement has two syntactical variations. The first and most traditional is a simple statement sequence: while( $a > 1 ) $a = 0; Remember that statement sequences can contain multiple statements inside braces, so the following is also a valid syntax for the while statement: while( $a > 1 ) { $a = 0; $b = 0 } The second variation is a carryover from the early days of PHP and it is still used today as it makes reading code containing large blocks of raw HTML easier on the eyes: while( $a > 1 ): $a = 0; endwhile; Again, multiple statements are valid: while( $a > 1): { $a = 0; $b = 0; } endwhile; This syntax has implied statement grouping which means it is valid to drop the braces around the statement sequence: while( $a > 1): $a = 0; $b = 0; endwhile; And finally, what this syntax was intended for: <?php while( $a > 1): ?> <B>Block of raw HTML</B> <?php endwhile ?> -Rasmus

« previous php.dev (#38736) next »