mirror of
https://github.com/danog/phpdoc-parser.git
synced 2024-11-26 20:15:11 +01:00
finalize TypeParser grammar
This commit is contained in:
parent
3dc77d7af4
commit
aaa6ac83d1
95
doc/grammars/type.abnf
Normal file
95
doc/grammars/type.abnf
Normal file
@ -0,0 +1,95 @@
|
||||
; ---------------------------------------------------------------------------- ;
|
||||
; Type ;
|
||||
; ---------------------------------------------------------------------------- ;
|
||||
|
||||
Type
|
||||
= Atomic [Union / Intersection]
|
||||
/ Nullable
|
||||
|
||||
Union
|
||||
= 1*(TokenUnion Atomic)
|
||||
|
||||
Intersection
|
||||
= 1*(TokenIntersection Atomic)
|
||||
|
||||
Nullable
|
||||
= TokenNullable TokenIdentifier [Generic]
|
||||
|
||||
Atomic
|
||||
= TokenIdentifier [Generic / Array]
|
||||
/ TokenThisVariable
|
||||
/ TokenParenthesesOpen Type TokenParenthesesClose [Array]
|
||||
|
||||
Generic
|
||||
= TokenAngleBracketOpen Type *(TokenComma Type) TokenAngleBracketClose
|
||||
|
||||
Array
|
||||
= 1*(TokenSquareBracketOpen TokenSquareBracketClose)
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------- ;
|
||||
; Tokens ;
|
||||
; ---------------------------------------------------------------------------- ;
|
||||
|
||||
TokenUnion
|
||||
= "|" *ByteHorizontalWs
|
||||
|
||||
TokenIntersection
|
||||
= "&" *ByteHorizontalWs
|
||||
|
||||
TokenNullable
|
||||
= "?" *ByteHorizontalWs
|
||||
|
||||
TokenParenthesesOpen
|
||||
= "(" *ByteHorizontalWs
|
||||
|
||||
TokenParenthesesClose
|
||||
= ")" *ByteHorizontalWs
|
||||
|
||||
TokenAngleBracketOpen
|
||||
= "<" *ByteHorizontalWs
|
||||
|
||||
TokenAngleBracketClose
|
||||
= ">" *ByteHorizontalWs
|
||||
|
||||
TokenSquareBracketOpen
|
||||
= "[" *ByteHorizontalWs
|
||||
|
||||
TokenSquareBracketClose
|
||||
= "]" *ByteHorizontalWs
|
||||
|
||||
TokenComma
|
||||
= "," *ByteHorizontalWs
|
||||
|
||||
TokenThisVariable
|
||||
= %x24.74.68.69.73 *ByteHorizontalWs
|
||||
|
||||
TokenIdentifier
|
||||
= [ByteBackslash] ByteIdentifierFirst *ByteIdentifierSecond *(ByteBackslash ByteIdentifierFirst *ByteIdentifierSecond) *ByteHorizontalWs
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------- ;
|
||||
; Bytes ;
|
||||
; ---------------------------------------------------------------------------- ;
|
||||
|
||||
ByteHorizontalWs
|
||||
= %x09 ; horizontal tab
|
||||
/ %x20 ; space
|
||||
|
||||
|
||||
ByteIdentifierFirst
|
||||
= %x41-5A ; A-Z
|
||||
/ %x5F ; _
|
||||
/ %x61-7A ; a-z
|
||||
/ %x80-FF
|
||||
|
||||
ByteIdentifierSecond
|
||||
= %x30-39 ; 0-9
|
||||
/ %x41-5A ; A-Z
|
||||
/ %x5F ; _
|
||||
/ %x61-7A ; a-z
|
||||
/ %x80-FF
|
||||
|
||||
|
||||
ByteBackslash
|
||||
= %x5C ; \
|
@ -1,32 +0,0 @@
|
||||
Type
|
||||
::= Atomic (Union | Intersection)?
|
||||
| Nullable
|
||||
|
||||
Union
|
||||
::= ('|' Atomic)+
|
||||
|
||||
Intersection
|
||||
::= ('&' Atomic)+
|
||||
|
||||
Nullable
|
||||
::= '?' Identifier Generic?
|
||||
|
||||
Atomic
|
||||
::= Identifier (Generic | Array)?
|
||||
| ThisType
|
||||
| '(' Type ')' Array?
|
||||
|
||||
Generic
|
||||
::= '<' Type (',' Type)* '>'
|
||||
|
||||
Array
|
||||
::= ('[' ']')+
|
||||
|
||||
ThisType
|
||||
::= '$this'
|
||||
|
||||
Identifier
|
||||
::= ('\\'? Word)+
|
||||
|
||||
Word
|
||||
::= [a-zA-Z_#x7F-#x10FFFF][0-9a-zA-Z_#x7F-#x10FFFF]*
|
@ -1,32 +0,0 @@
|
||||
Type
|
||||
= Atomic (Union / Intersection)?
|
||||
/ Nullable
|
||||
|
||||
Union
|
||||
= ('|' Atomic)+
|
||||
|
||||
Intersection
|
||||
= ('&' Atomic)+
|
||||
|
||||
Nullable
|
||||
= '?' Identifier Generic?
|
||||
|
||||
Atomic
|
||||
= Identifier (Generic / Array)?
|
||||
/ ThisType
|
||||
/ '(' Type ')' Array?
|
||||
|
||||
Generic
|
||||
= '<' Type (',' Type)* '>'
|
||||
|
||||
Array
|
||||
= ('[' ']')+
|
||||
|
||||
ThisType
|
||||
= '$this'
|
||||
|
||||
Identifier
|
||||
= ('\\'? Word)+
|
||||
|
||||
Word
|
||||
= [a-zA-Z_\\127-\\255][a-zA-Z0-9_\\127-\\255]*
|
Loading…
Reference in New Issue
Block a user