Есть ли грамматика BNF для регулярных выражений?
Грамматика Regex BNF
Ответы (3)
Вы можете увидеть его для Perl regexp (отображается немного подробнее здесь, как написано edg)
person
VonC
schedule
05.11.2008
Чтобы разместить их на сайте:
CMPT 384 Lecture Notes Роберт Д. Кэмерон 29 ноября - 1 декабря 1999 г.
BNF Grammar of Regular Expressions
Following the precedence rules given previously, a BNF grammar for Perl-style regular expressions can be constructed as follows.
<RE> ::= <union> | <simple-RE>
<union> ::= <RE> "|" <simple-RE>
<simple-RE> ::= <concatenation> | <basic-RE>
<concatenation> ::= <simple-RE> <basic-RE>
<basic-RE> ::= <star> | <plus> | <elementary-RE>
<star> ::= <elementary-RE> "*"
<plus> ::= <elementary-RE> "+"
<elementary-RE> ::= <group> | <any> | <eos> | <char> | <set>
<group> ::= "(" <RE> ")"
<any> ::= "."
<eos> ::= "$"
<char> ::= any non metacharacter | "\" metacharacter
<set> ::= <positive-set> | <negative-set>
<positive-set> ::= "[" <set-items> "]"
<negative-set> ::= "[^" <set-items> "]"
<set-items> ::= <set-item> | <set-item> <set-items>
<set-items> ::= <range> | <char>
<range> ::= <char> "-" <char>
через VonC.
--- Кнуд ван Иден --- 21 октября 2003 г. - 03:22 --------------------
PERL: Поиск / Замена: Регулярное выражение: Форма Бэкуса Наура: Какой возможен BNF для регулярного выражения?
expression = term
term | expression
term = factor
factor term
factor = atom
atom metacharacter
atom = character
.
( expression )
[ characterclass ]
[ ^ characterclass ]
{ min }
{ min , }
{ min , max }
characterclass = characterrange
characterrange characterclass
characterrange = begincharacter
begincharacter - endcharacter
begincharacter = character
endcharacter = character
character =
anycharacterexceptmetacharacters
\ anycharacterexceptspecialcharacters
metacharacter = ?
* {=0 or more, greedy}
*? {=0 or more, non-greedy}
+ {=1 or more, greedy}
+? {=1 or more, non-greedy}
^ {=begin of line character}
$ {=end of line character}
$` {=the characters to the left of the match}
$' {=the characters to the right of the match}
$& {=the characters that are matched}
\t {=tab character}
\n {=newline character}
\r {=carriage return character}
\f {=form feed character}
\cX {=control character CTRL-X}
\N {=the characters in Nth tag (if on match side)}
$N{=the characters in Nth tag (if not on match side)}
\NNN {=octal code for character NNN}
\b {=match a 'word' boundary}
\B {=match not a 'word' boundary}
\d {=a digit, [0-9]}
\D {=not a digit, [^0-9]}
\s {=whitespace, [ \t\n\r\f]}
\S {=not a whitespace, [^ \t\n\r\f]}
\w {='word' character, [a-zA-Z0-9_]}
\W {=not a 'word' character, [^a-zA-Z0-9_]}
\Q {=put a quote (de-meta) on characters, until \E}
\U {=change characters to uppercase, until \E}
\L {=change characters to uppercase, until \E}
min = integer
max = integer
integer = digit
digit integer
anycharacter = ! " # $ % & ' ( ) * + , - . / :
; < = > ? @ [ \ ] ^ _ ` { | } ~
0 1 2 3 4 5 6 7 8 9
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
---
[book: see also: Bucknall, Julian - the Tomes of Delphi: Algorithms
and Datastructures - p. 37 - 'Using regular expressions' -
http://www.amazon.com/exec/obidos/tg/detail/-
/1556227361/qid=1065748783/sr=1-1/ref=sr_1_1/002-0122962-7851254?
v=glance&s=books]
---
---
Internet: see also:
---
Compiler: Grammar: Expression: Regular: Which grammar defines set of
all regular expressions? [BNF]
http://www.faqts.com/knowledge_base/view.phtml/aid/25950/fid/1263
---
Perl Regular Expression: Quick Reference 1.05
http://www.erudil.com/preqr.pdf
---
Top: Computers: Programming: Languages: Regular Expressions: Perl
http://dmoz.org/Computers/Programming/Languages/Regular_Expressions/Per
l/
---
TSE: Search/Replace:Regular Expression:Backus Naur Form:What is
possible BNF for regular expression?
http://www.faqts.com/knowledge_base/view.phtml/aid/25714/fid/1236
---
Delphi: Search: Regular expression: Create: How to create a regular
expression parser in Delphi?
http://www.faqts.com/knowledge_base/view.phtml/aid/25645/fid/175
---
Delphi: Search: Regular expression: How to add regular expression
searching to Delphi? [Systools]
http://www.faqts.com/knowledge_base/view.phtml/aid/25295/fid/175
----------------------------------------------------------------------
через Эда Гиннесса.
person
n611x007
schedule
24.09.2015
person
Ed Guiness
schedule
05.11.2008