(→What is a Grammar?) |
(→Context-free Grammars) |
||
Line 15: | Line 15: | ||
The above grammar is unrestricted in its derivations capabilities and directly supports context-dependent rules. | The above grammar is unrestricted in its derivations capabilities and directly supports context-dependent rules. | ||
− | In our coverage of programming language processing, though, only context-free grammars will be considered. This means that the <amsmath>R</amsmath> set is defined on <amsmath>(V-\Sigma)\times{}V^*</amsmath> | + | In our coverage of programming language processing, though, only context-free grammars will be considered. This means that the <amsmath>R</amsmath> set is defined on <amsmath>(V-\Sigma)\times{}V^*</amsmath>, i.e., only non-terminals are allowed on the left side of a rule. |
= The FIRST and FOLLOW sets = | = The FIRST and FOLLOW sets = |
An unrestricted grammar is a quadruple , where is an alphabet; is the set of terminal symbols (); is the set of non-terminal symbols; is the initial symbol; and is a set of rules (a finite subset of ).
The following are defined:
The above grammar is unrestricted in its derivations capabilities and directly supports context-dependent rules.
In our coverage of programming language processing, though, only context-free grammars will be considered. This means that the set is defined on , i.e., only non-terminals are allowed on the left side of a rule.
The FIRST set for a given string or symbol can be computed as follows:
As an example, consider production X -> Y1...Yn
The FIRST set can also be computed for a string Y1...Yn much in the same way as in case 3 above.
The FOLLOW set is computed for non-terminals and indicates the set of terminal symbols that are possible after a given non-terminal. The special symbol $ is used to represent the end of phrase (end of input).
The algorithm should be repeated until the FOLLOW set remains unchanged.