Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PHP Grammar #12

Open
ghostwriter opened this issue Jun 23, 2023 · 0 comments
Open

PHP Grammar #12

ghostwriter opened this issue Jun 23, 2023 · 0 comments

Comments

@ghostwriter
Copy link
Owner

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]*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant