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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.