Skip to content

PHP Grammar #12

@ghostwriter

Description

@ghostwriter

It's incomplete, invalid, outdated, and gathering dust in my secret gists.github.com/ghostwriter

program ::= statement_list

statement_list ::= statement | statement_list statement

statement ::= expression_statement | if_statement | while_statement | for_statement | foreach_statement | switch_statement | break_statement | continue_statement | return_statement | throw_statement | try_statement | function_declaration | class_declaration | interface_declaration | trait_declaration | namespace_declaration | use_declaration

expression_statement ::= expression ';'

if_statement ::= 'if' '(' expression ')' statement ('else' statement)?

while_statement ::= 'while' '(' expression ')' statement

for_statement ::= 'for' '(' (expression_statement | variable_declaration)? ';' expression? ';' expression_statement? ')' statement

foreach_statement ::= 'foreach' '(' expression 'as' variable ')' statement

switch_statement ::= 'switch' '(' expression ')' '{' case_list '}'

case_list ::= case_item | case_list case_item

case_item ::= 'case' expression ':' statement_list | 'default' ':' statement_list

break_statement ::= 'break' ';'

continue_statement ::= 'continue' ';'

return_statement ::= 'return' expression? ';'

throw_statement ::= 'throw' expression ';'

try_statement ::= 'try' statement ('catch' '(' variable ')' statement)?

function_declaration ::= 'function' identifier '(' parameter_list? ')' '{' statement_list '}'

class_declaration ::= 'class' identifier ('extends' identifier)? ('implements' identifier_list)? '{' class_member_list '}'

interface_declaration ::= 'interface' identifier '{' interface_member_list '}'

trait_declaration ::= 'trait' identifier '{' trait_member_list '}'

namespace_declaration ::= 'namespace' namespace_name '{' statement_list '}'

use_declaration ::= 'use' namespace_name ('as' identifier)? ';'

variable_declaration ::= variable '=' expression

parameter_list ::= parameter | parameter_list ',' parameter

parameter ::= variable ('=' expression)?

identifier_list ::= identifier | identifier_list ',' identifier

class_member_list ::= class_member | class_member_list class_member

class_member ::= variable_declaration | function_declaration

interface_member_list ::= interface_member | interface_member_list interface_member

interface_member ::= function_declaration

trait_member_list ::= trait_member | trait_member_list trait_member

trait_member ::= variable_declaration | function_declaration

namespace_name ::= identifier | namespace_name '\' identifier

variable ::= '$' identifier

identifier ::= [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions