PHP
Sintaxes completas representadas por
Diagrama Sintático - Diagrama de Sintaxe
(
ver convenções
) ou
BNF
(ver
convenções
).
Diagrama Sintático - Diagrama de Sintaxe
|
Diagrama Sintático - Diagrama de Sintaxe e BNF
|
BNF
PHP_script
: Statement*
Class_def
: Class_mod CLASS_NAME
extends:
CLASS_NAME?
implements:
INTERFACE_NAME* Member*
Class_mod
: "abstract"? "final"?
Interface_def
: INTERFACE_NAME
extends:
INTERFACE_NAME* Member*
Member
: Method | Attribute
Method
: Signature Statement*?
Signature
: Method_mod
is_ref:
"&"? METHOD_NAME Formal_parameter*
Method_mod
: "public"? "protected"? "private"? "static"? "abstract"? "final"?
Formal_parameter
:
Type is_ref:
"&"?
var:
Name_with_default
Type
: CLASS_NAME?
Name_with_default
: VARIABLE_NAME Expr?
Attribute
:
Attr_mod vars:
Name_with_default*
Attr_mod
: "public"? "protected"? "private"? "static"? "const"?
Statement
: Class_def | Interface_def | Method | Return | Static_declaration | Global | Try | Throw | Eval_expr | If | While | Do | For | Foreach | Switch | Break | Continue | Declare | Nop
If
: Expr
iftrue:
Statement*
iffalse:
Statement*
While
: Expr Statement*
Do
: Statement* Expr
For
:
init:
Expr?
cond:
Expr?
incr:
Expr? Statement*
Foreach
: Expr
key:
Variable?
is_ref:
"&"?
val:
Variable Statement*
Switch
: Expr Switch_case*
Switch_case
: Expr? Statement*
Break
: Expr?
Continue
: Expr?
Return
: Expr?
Static_declaration
:
vars:
Name_with_default*
Global
: Variable_name*
Declare
: Directive+ Statement*
Directive
: DIRECTIVE_NAME Expr
Try
: Statement*
catches:
Catch*
Catch
: CLASS_NAME VARIABLE_NAME Statement*
Throw
: Expr
Eval_expr
: Expr
Nop
:
Expr
: Assignment | Cast | Unary_op | Bin_op | Constant | Instanceof | Variable | Pre_op | Method_invocation | New | Literal | Op_assignment | List_assignment | Post_op | Array | Conditional_expr | Ignore_errors
Literal
: INT
| REAL
| STRING
| BOOL
| NIL<>
Assignment
: Variable
is_ref:
"&"? Expr
Op_assignment
: Variable OP Expr
List_assignment
: List_element?* Expr
List_element
: Variable | Nested_list_elements
Nested_list_elements
: List_element?*
Cast
: CAST Expr
Unary_op
: OP Expr
Bin_op
:
left:
Expr OP
right:
Expr
Conditional_expr
:
cond:
Expr
iftrue:
Expr
iffalse:
Expr
Ignore_errors
: Expr
Constant
: CLASS_NAME? CONSTANT_NAME
Instanceof
: Expr Class_name
Variable
: Target? Variable_name
array_indices:
Expr?*
Variable_name
: VARIABLE_NAME | Reflection
Reflection
: Expr
Target
: Expr | CLASS_NAME
Pre_op
: OP Variable
Post_op
: Variable OP
Array
: Array_elem*
Array_elem
:
key:
Expr?
is_ref:
"&"?
val:
Expr
Method_invocation
: Target? Method_name Actual_parameter*
Method_name
: METHOD_NAME | Reflection
Actual_parameter
:
is_ref:
"&"? Expr
New
: Class_name Actual_parameter*
Class_name
: CLASS_NAME | Reflection
Commented_node
: Member | Statement | Interface_def | Class_def | Switch_case | Catch
Identifier
: INTERFACE_NAME | CLASS_NAME | METHOD_NAME | VARIABLE_NAME | CAST | OP | CONSTANT_NAME | DIRECTIVE_NAME
Source_rep
: Identifier | Literal