LR(0) parsing: how can I know sets of items corresponding to states?
An item is a rule with dot marker in it.  Think of the dot marker as what you've seen so far and what you are hoping to see in the future.  Itemsets are sets of items.  In the diagram above they are the boxes with all the items (nodes in the graph).  The kernel (or core) of an itemset are the rules that are in white.  Those items are given to us (rule 1) in CLOSURE from a different part of the table building algorithm.  Taking closure of all the kernel items gives you the full itemset and includes non-kernel items (the darker ones in your diagram). The CLOSURE(I) operation is this expansion algorithm.

Take I7 for example.  We start with only one kernel item.

T -&gt; T * . F


Step 2 of CLOSURE is saying that since F is in front of the dot we have to expand it, adding those items to the itemset. Hence, we add items the following items.

F -&gt; . ( E )
F -&gt; . id


This is everything that F can expand to.  So the full itemset is now:

T -&gt; T * . F
F -&gt; . ( E )
F -&gt; . id


We reapply rule (2), but see that the . is not in front of any new non-terminals that we haven't expanded, we are done.  The itemset is now closed.

The other half of the parse table building algorithm generates new itemsets.  This involves moving the dot across each symbol of each item.  For example, moving the dot over the 'F' gives you the itemset with the kernel item below.

T- &gt; T * F .


This is I10 in your diagram.  Note, that edges from I7 to I10 is labeled F (since the dot crossed that symbol).  You'd reapply the same closure algorithm here and loop this process.

See the Wikipedia entry on this for more information.