mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			132 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Go
		
	
	
	
| // Copyright 2012 The Go Authors. All rights reserved.
 | |
| // Use of this source code is governed by a BSD-style
 | |
| // license that can be found in the LICENSE file.
 | |
| 
 | |
| // DO NOT EDIT. This file is generated by mksyntaxgo from the RE2 distribution.
 | |
| 
 | |
| /*
 | |
| Package syntax parses regular expressions into parse trees and compiles
 | |
| parse trees into programs. Most clients of regular expressions will use the
 | |
| facilities of package regexp (such as Compile and Match) instead of this package.
 | |
| 
 | |
| Syntax
 | |
| 
 | |
| The regular expression syntax understood by this package when parsing with the Perl flag is as follows.
 | |
| Parts of the syntax can be disabled by passing alternate flags to Parse.
 | |
| 
 | |
| 
 | |
| Single characters:
 | |
|   .              any character, possibly including newline (flag s=true)
 | |
|   [xyz]          character class
 | |
|   [^xyz]         negated character class
 | |
|   \d             Perl character class
 | |
|   \D             negated Perl character class
 | |
|   [[:alpha:]]    ASCII character class
 | |
|   [[:^alpha:]]   negated ASCII character class
 | |
|   \pN            Unicode character class (one-letter name)
 | |
|   \p{Greek}      Unicode character class
 | |
|   \PN            negated Unicode character class (one-letter name)
 | |
|   \P{Greek}      negated Unicode character class
 | |
| 
 | |
| Composites:
 | |
|   xy             x followed by y
 | |
|   x|y            x or y (prefer x)
 | |
| 
 | |
| Repetitions:
 | |
|   x*             zero or more x, prefer more
 | |
|   x+             one or more x, prefer more
 | |
|   x?             zero or one x, prefer one
 | |
|   x{n,m}         n or n+1 or ... or m x, prefer more
 | |
|   x{n,}          n or more x, prefer more
 | |
|   x{n}           exactly n x
 | |
|   x*?            zero or more x, prefer fewer
 | |
|   x+?            one or more x, prefer fewer
 | |
|   x??            zero or one x, prefer zero
 | |
|   x{n,m}?        n or n+1 or ... or m x, prefer fewer
 | |
|   x{n,}?         n or more x, prefer fewer
 | |
|   x{n}?          exactly n x
 | |
| 
 | |
| Implementation restriction: The counting forms x{n,m}, x{n,}, and x{n}
 | |
| reject forms that create a minimum or maximum repetition count above 1000.
 | |
| Unlimited repetitions are not subject to this restriction.
 | |
| 
 | |
| Grouping:
 | |
|   (re)           numbered capturing group (submatch)
 | |
|   (?P<name>re)   named & numbered capturing group (submatch)
 | |
|   (?:re)         non-capturing group
 | |
|   (?flags)       set flags within current group; non-capturing
 | |
|   (?flags:re)    set flags during re; non-capturing
 | |
| 
 | |
|   Flag syntax is xyz (set) or -xyz (clear) or xy-z (set xy, clear z). The flags are:
 | |
| 
 | |
|   i              case-insensitive (default false)
 | |
|   m              multi-line mode: ^ and $ match begin/end line in addition to begin/end text (default false)
 | |
|   s              let . match \n (default false)
 | |
|   U              ungreedy: swap meaning of x* and x*?, x+ and x+?, etc (default false)
 | |
| 
 | |
| Empty strings:
 | |
|   ^              at beginning of text or line (flag m=true)
 | |
|   $              at end of text (like \z not Perl's \Z) or line (flag m=true)
 | |
|   \A             at beginning of text
 | |
|   \b             at ASCII word boundary (\w on one side and \W, \A, or \z on the other)
 | |
|   \B             not at ASCII word boundary
 | |
|   \z             at end of text
 | |
| 
 | |
| Escape sequences:
 | |
|   \a             bell (== \007)
 | |
|   \f             form feed (== \014)
 | |
|   \t             horizontal tab (== \011)
 | |
|   \n             newline (== \012)
 | |
|   \r             carriage return (== \015)
 | |
|   \v             vertical tab character (== \013)
 | |
|   \*             literal *, for any punctuation character *
 | |
|   \123           octal character code (up to three digits)
 | |
|   \x7F           hex character code (exactly two digits)
 | |
|   \x{10FFFF}     hex character code
 | |
|   \Q...\E        literal text ... even if ... has punctuation
 | |
| 
 | |
| Character class elements:
 | |
|   x              single character
 | |
|   A-Z            character range (inclusive)
 | |
|   \d             Perl character class
 | |
|   [:foo:]        ASCII character class foo
 | |
|   \p{Foo}        Unicode character class Foo
 | |
|   \pF            Unicode character class F (one-letter name)
 | |
| 
 | |
| Named character classes as character class elements:
 | |
|   [\d]           digits (== \d)
 | |
|   [^\d]          not digits (== \D)
 | |
|   [\D]           not digits (== \D)
 | |
|   [^\D]          not not digits (== \d)
 | |
|   [[:name:]]     named ASCII class inside character class (== [:name:])
 | |
|   [^[:name:]]    named ASCII class inside negated character class (== [:^name:])
 | |
|   [\p{Name}]     named Unicode property inside character class (== \p{Name})
 | |
|   [^\p{Name}]    named Unicode property inside negated character class (== \P{Name})
 | |
| 
 | |
| Perl character classes (all ASCII-only):
 | |
|   \d             digits (== [0-9])
 | |
|   \D             not digits (== [^0-9])
 | |
|   \s             whitespace (== [\t\n\f\r ])
 | |
|   \S             not whitespace (== [^\t\n\f\r ])
 | |
|   \w             word characters (== [0-9A-Za-z_])
 | |
|   \W             not word characters (== [^0-9A-Za-z_])
 | |
| 
 | |
| ASCII character classes:
 | |
|   [[:alnum:]]    alphanumeric (== [0-9A-Za-z])
 | |
|   [[:alpha:]]    alphabetic (== [A-Za-z])
 | |
|   [[:ascii:]]    ASCII (== [\x00-\x7F])
 | |
|   [[:blank:]]    blank (== [\t ])
 | |
|   [[:cntrl:]]    control (== [\x00-\x1F\x7F])
 | |
|   [[:digit:]]    digits (== [0-9])
 | |
|   [[:graph:]]    graphical (== [!-~] == [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])
 | |
|   [[:lower:]]    lower case (== [a-z])
 | |
|   [[:print:]]    printable (== [ -~] == [ [:graph:]])
 | |
|   [[:punct:]]    punctuation (== [!-/:-@[-`{-~])
 | |
|   [[:space:]]    whitespace (== [\t\n\v\f\r ])
 | |
|   [[:upper:]]    upper case (== [A-Z])
 | |
|   [[:word:]]     word characters (== [0-9A-Za-z_])
 | |
|   [[:xdigit:]]   hex digit (== [0-9A-Fa-f])
 | |
| 
 | |
| */
 | |
| package syntax
 |