cvs: php-lang / c-like-syntax-spec.txt
[email protected] ("Sascha Schumann")
| Newsgroups | php.lang |
|---|---|
| Message-ID | <cvssas974502132@cvsserver> |
sas Fri Nov 17 15:02:12 2000 EDT
Added files:
/php-lang c-like-syntax-spec.txt
Log:
This is a very rough draft of how the syntax specification could look
like.
It is completely incomplete. Operators, precedence, everything is
missing.
And I'm prepared to throw it away. ;-)
Index: php-lang/c-like-syntax-spec.txt
+++ php-lang/c-like-syntax-spec.txt
# $Id: c-like-syntax-spec.txt,v 1.1 2000/11/17 23:02:12 sas Exp $
#
# See Language_Notation.txt for notation notes
statement-list:
statement
statement-list statement
statement:
labeled-statement
expression-statement
inclusion-statement
compound-statement
selection-statement
iteration-statement
jump-statement
output-statement
labeled-statement:
'case' constant ':' statement
'default' ':' statement
expression-statement:
[expression] ';'
inclusion-statement:
'include' expression ';'
'include_once' expression ';'
'require' constant ';'
'require_once' constant ';'
compound-statement:
'{' [statement-list] '}'
selection-statement:
'if' '(' expression ')' statement
'if' '(' expression ')' statement 'else' statement
'switch' '(' expression ')' statement
iteration-statement:
'for' '(' [expression] ';' [expression] ';' [expression] ')' for-statement
'while' '(' expression ')' while-statement
jump-statement:
'continue' ';'
'break' ';'
'return' [expression] ';'
output-statement:
'echo' expression-list ';'
'print' expression ';'
for-statement:
statement
':' statement-list 'endfor' ';'
while-statement:
statement
':' statement-list 'endwhile' ';'
switch-statement:
'{' [labeled-statement] '}'
function-definition:
'function' function-declarator compound-statement
function-declarator:
identifier '(' [parameter-list] ')'
parameter-list:
parameter-declaration
parameter-list ',' parameter-declaration
parameter-declaration:
variable
variable '=' constant
class-definition:
'class' class-declarator class-body
class-declarator:
identifier
identifier 'extends' identifier
class-body:
'{' [class-element-list] '}'
class-element-list:
class-element
class-element-list class-element
class-element:
class-property
function-definition
class-property:
'var' variable ';'
'var' variable '=' constant ';'
expression-list:
expression
expression-list ',' expression
variable:
'$' identifier
expression:
postfix-expression
string-constant
interpolated-string
postfix-expression:
variable
primary-expression
postfix-expression '[' expression ']'
postfix-expression '->' '{' expression '}'
postfix-expression '->' identifier
identifier '(' [expression-list] ')'
postfix-expression '.' expression
primary-expression:
constant
string-literal
'(' expression ')'
constant:
integer-constant
floating-constant
character-constant
integer-constant:
decimal-constant
octal-constant
hexadecimal-constant
decimal-constant:
nonzero-digit
decimal-constant digit
octal-constant:
'0'
octal-constant octal-digit
hexadecimal-constant:
hexadecimal-prefix hexadecimal-digit
hexadecimal-constant hexadecimal-digit
hexadecimal-prefix: one of
'0x' '0X'
floating-constant:
fractional-constant [exponent-part]
digit-sequence [exponent-part]
fractional-constant:
[digit-sequence] '.' digit-sequence
digit-sequence '.'
exponent-part:
'e' [sign] digit-sequence
'E' [sign] digit-sequence
sign: one of
'+' '-'
digit-sequence:
digit
digit-sequence digit
interpolated-string:
'"' [i-char-sequence] '"'
character-constant:
'"' [s-char-sequence] '"'
''' [c-char-sequence] '''
i-char-sequence:
i-char
i-char-sequence i-char
s-char-sequence:
s-char
s-char-sequence s-char
c-char-sequence:
c-char
c-char-sequence c-char
i-char:
any member of the source character set except
the double-quote, backslash, or the new-line character.
escape-sequence
s-char:
any member of the source character set except
the double-quote, backslash, new-line character,
or the dollar-sign.
escape-sequence
c-char:
any member of the source character set except
the single-quote, backslash, or the new-line character.
escape-sequence
escape-sequence:
simple-escape-sequence
octal-escape-sequence
hexadecimal-escape-sequence
simple-escape-esquence: one of
'\'' '\"' '\?' '\\'
'\a' '\b' '\f' '\n' '\r' '\t' '\v'
octal-escape-sequence:
'\' octal-digit [octal-digit] [octal-digit]
hexadecimal-escape-sequence:
'\x' hexadecimal-digit
hexadecimal-escape-sequence hexadecimal-digit
hexadecimal-digit: matching
0-9a-fA-F
octal-digit: matching
0-7
identifier:
nondigit
identifier nondigit
identifier digit
nondigit: matching
_a-zA-Z
nonzero-digit: matching
1-9
digit: matching
0-9