﻿::: { R:{A:i4, B:b, C:r8, D:d}, X:n }

R.A
R.B
R.B.X
X
X.A
R.X

%% N
::: { X:{A:s}* }

R.A
R.B
R.B.X
X
X.A
N.X
N.X.A
@X
@X.A

// Assign and reference "this".
`` {@X, R};
this
this.R
this.R.A
this.X
this.X.A

%% 'NS 1'
::: { X:{A:d}* }

X
X.A
N.X
N.X.A
'NS 1'.X
'NS 1'.X.A

%%

X
X.A
N.X
N.X.A
'NS 1'.X
'NS 1'.X.A

%% N.P
::: { Y:b, 'Y 2':s }

R.A
R.B
R.B.X
X
X.A
N.X
N.X.A
'NS 1'.X
'NS 1'.X.A
@X
@X.A

Y
P.Y
N.P.Y
'Y 2'
P.'Y 2'
N.P.'Y 2'
P
N
N.P
'NS 1'

@Y
@P.Y
@N.P.Y
@'Y 2'
@P.'Y 2'
@N.P.'Y 2'
@P
@N
@N.P
@'NS 1'

N.P.Z

%%

// Fuzzy match
n
n.P
N.p
n.p
n.P.Y
N.p.Y
n.p.Y
n.P.y
N.p.y
n.p.y
n.P.'Y 2'
N.p.'Y 2'
n.p.'Y 2'
n.P.'y 2'
N.p.'y 2'
n.p.'y 2'
n.P.Z
N.p.Z
n.p.Z
'nS 1'
'nS 1'.X
'NS 1'.x
'nS 1'.x

@n
@n.P
@n.p.Y
@N.p.Y
@n.P.y
