First
(
X
) for SPL
: Example
First
(
begin
)
:= {
begin
}
First
(
end
)
:= {
end
}
First
(
read
)
:= {
read
}
First
(
write
)
:= {
write
}
First
(
,
)
:= {
,
}
First
(
(
)
:= {
(
}
First
(
)
)
:= {
)
}
First
(
;
)
:= {
;
}
<st-list>
®
end
Î
P
:
add
First
(
end
)
to
First
(
<st-list>
)
<st-list>
®
<stat>
…
Î
P
:
add
First
(
<stat>
)
to
First
(
<st-list>
)
Summary:
First
(
<st-list>
)
= {
id
,
write
,
read
,
end
}
<prog>
®
begin
…
Î
P
:
add
First
(
begin
)
to
First
(
<prog>
)
Summary:
First
(
<prog>
)
= {
begin
}
First
(
id
)
:= {
id
}
First
(
int
)
:= {
int
}
First
(
:=
)
:= {
:=
}
First
(
add
)
:= {
add
}
<item>
®
id
Î
P
:
add
First
(
id
)
to
First
(
<item>
)
<item>
®
int
Î
P
:
add
First
(
int
)
to
First
(
<item>
)
Summary:
First
(
<item>
)
= {
id
,
int
}
<it-list>
®
)
Î
P
:
add
First
(
)
)
to
First
(
<it-list>
)
<it-list>
®
,
…
Î
P
:
add
First
(
,
)
to
First
(
<it-list>
)
Summary:
First
(
<it-list>
)
= {
)
,
,
}
<stat>
®
id
…
Î
P
:
add
First
(
id
)
to
First
(
<stat>
)
<stat>
®
write
…
Î
P
:
add
First
(
write
)
to
First
(
<stat>
)
<stat>
®
read
…
Î
P
:
add
First
(
read
)
to
First
(
<stat>
)
Summary:
First
(
<stat>
)
= {
id
,
write
,
read
}
8/57