- From: Falk, Alexander <falk@icon.at>
- Date: Wed, 12 Apr 2000 12:54:30 +0200
- To: "'kent@trl.ibm.co.jp'" <kent@trl.ibm.co.jp>
- Cc: "'www-xml-schema-comments@w3.org'" <www-xml-schema-comments@w3.org>
- Message-ID: <0FED160BABE4D311AD2E0050DA4657850226CE@MEDUSA>
Hi,
I would certainly also hope to see a compact EBNF description for the
Regular Expressions in the final draft - for the time being I have created
my own condensed version for use in our own development, which I'll gladly
share with you:
regExp ::= branch ('|' branch)*
>Regular Expression (branch|branch|...)
branch$ ::= piece+
>Branch (piece+)
piece$ ::= atom quantifier?
>Piece (atom quantifier?)
quantifier$ ::= [?*+] | ( '{' quantity '}' )
>Piece quantifier (? | * | + | {quantity})
quantity$ ::= quantRange | quantMin | QuantExact
>Numeric quantity
quantRange$ ::= QuantExact ',' QuantExact
>Quantity range {n,m}
quantMin$ ::= QuantExact ','
>Minimum quantity {n,}
QuantExact$ ::= [0-9]+
>Exact quantity {n}
atom$ ::= Char | charClass | ( '(' regExp ')' )
>Atom (char | charclass | (regexp))
Char$ ::= [^.\?*+()|#x5B#x5D]
>Normal character (any non-metacharacter)
charClass ::= charClassEsc | charClassExpr
>Character class (escape | expression)
charClassExpr$ ::= '[' charGroup ']'
>Character class expression ( [charGroup] )
charGroup ::= negCharGroup | posCharGroup | charClassSub
>Character group
negCharGroup$ ::= '^' posCharGroup
>Negative character group
charClassSub$ ::= ( posCharGroup | negCharGroup ) '-' charClassExpr
>Character class subtraction
posCharGroup$ ::= ( charRange | charClassEsc )+
>Positive character group (character range | character class escape)+
charRange$ ::= seRange | XmlCharRef | XmlChar
>Character range (XML character|s-e range)
seRange$ ::= charOrEsc '-' charOrEsc
>s-e character range
charOrEsc$ ::= XmlChar | SingleCharEsc
>XML character or single-character escape
XmlChar$ ::= [^\#x2D#x5B#x5D]
>XML character (all except \[])
XmlCharRef ::= ('&#' [0-9]+ ';') | ('&#x' [0-9a-fA-F]+ ';')
>Character-Reference (Ù or ê)
charClassEsc ::= ( SingleCharEsc | MultiCharEsc | catEsc | complEsc )
>Character class escape
SingleCharEsc ::= '\' [nrt\.?*+()|{}#x2D#x5B#x5D#x5E]
>Single character escape
MultiCharEsc ::= '.' | ('\' [sSiIcCdDwW])
>Multi-character escape
catEsc$ ::= '\p{' charProp '}'
>Category escape
complEsc$ ::= '\P{' charProp '}'
>Category escape compliment
charProp$ ::= Letters | Marks | Numbers | Punctuation |
Separators | Symbols | Other | IsBlock >Unicode character property
IsBlock ::= 'Is' [a-zA-Z]+
>Unicode block name
Letters ::= 'L' [ultmo]?
>Unicode letters category
Marks ::= 'M' [nce]?
>Unicode marks category
Numbers ::= 'N' [dlo]?
>Unicode numbers category
Punctuation ::= 'P' [cdseifo]?
>Unicode punctuation category
Separators ::= 'Z' [slp]?
>Unicode separators category
Symbols ::= 'S' [mcko]?
>Unicode symbols category
Other ::= 'C' [cfson]?
>Unicode other category
Sincerely,
Alexander Falk
... Icon Information-Systems
... ALEXANDER FALK
... President, CEO
... http://www.icon-is.com/falk
Received on Wednesday, 12 April 2000 06:54:36 UTC