# Common regular expression groups.

# Hexadecimal ID, including possible underscore or hyphen (captures UUIDs)
h  = ([a-fA-F0-9_-]++)

# A positive integer.
i  = (\\d++)

# A positive floating point number.
d = ([fd\\d.-]++)

# A single-quoted string
s  = '([^']*+)'

# A double-quoted string
S  = "([^"]*+)"

# A single-quoted name (sticky)
n  = '([^']*+)'

# A double-quoted name (sticky)
N  = "([^"]*+)"

# Any amount of optional whitespace
\  = \\s*+

# A javascript variable name, possibly qualified with a '.'.
v  = (\\w[\\w\\d_\\.]++)
# A javascript function name.
f  = (\\w[\\w\\d_]++)

# The word "var" indicating a variable declaration.
V  = var

# Various characters.
<  = <
>  = >
\[ = \\[
\] = \\]
(  = \\(
)  = \\)
,  = ,
\= = \=
&  = &
;  = ;
\:  = \:
'  = '
"  = "
+  = \\+

# Sticky identifiers that used as correlation anchors.
sticky.f = true
sticky.v = true
sticky.n = true
sticky.N = true

# The number of capture groups represented by each symbol.
capture.f = 1
capture.i = 1
capture.h = 1
capture.s = 1
capture.S = 1
capture.n = 1
capture.N = 1
capture.v = 1
