Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regex BNF Grammar

Tags:

regex

grammar

bnf

Is there any BNF grammar for regular expression?

like image 379
Julien Grenier Avatar asked Nov 05 '08 15:11

Julien Grenier


People also ask

What is{} in EBNF?

in EBNF, we replace this by syntax to indicate that a sequence is a repetition of an element: <binary-seq> ::= { <binary-digit> }+ The braces: {} signify the repetition of the encosed non-terminal, and the + sign after the right brace signifies there should be at least one occurrence.

What is BNF and EBNF in PPL?

Grammars are the language of languages. Behind every language, there is a grammar that determines its structure. This article explains grammars and common notations for grammars, such as Backus-Naur Form (BNF), Extended Backus-Naur Form (EBNF) and regular extensions to BNF.

How is Backus Naur form used to describe a formal language?

BNF stands for Backus-Naur Form. It is used to write a formal representation of a context-free grammar. It is also used to describe the syntax of a programming language. BNF notation is basically just a variant of a context-free grammar.


2 Answers

You can see one for Perl regexp (displayed a little more in detail here, as posted by edg)

like image 136
VonC Avatar answered Sep 24 '22 20:09

VonC


To post them on-site:

CMPT 384 Lecture Notes Robert D. Cameron November 29 - December 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> 

via VonC.

--- Knud van Eeden --- 21 October 2003 - 03:22 am --------------------

PERL:Search/Replace:Regular Expression:Backus Naur Form:What is possible BNF for regular expression?

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  ---------------------------------------------------------------------- 

via Ed Guinness.

like image 31
n611x007 Avatar answered Sep 22 '22 20:09

n611x007