File: optseries.yo

package info (click to toggle)
bisonc%2B%2B 6.09.02-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,984 kB
  • sloc: cpp: 9,375; ansic: 1,505; fortran: 1,134; makefile: 1,062; sh: 526; yacc: 84; lex: 60
file content (24 lines) | stat: -rw-r--r-- 994 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
An em(optional) series of elements also use left-recursion, but the single
element alternative remains empty. For example, in bf(C++) a compound
statement may contain statements or declarations, but it may also be empty:
        verb(
    opt_statements:
        // empty
    |
        opt_statements statements
        )
    The above rule can be used as a prototype for recognizing a series of
elements: the generic form of this rule could be formulated as follows:
        verb(
    opt_series:
        // empty
    |
        opt_series unit
        )
    Note that the empty element is recognized em(first), even though it is
empty, whereafter the left-recursive alternative may be recognized repeatedly.
In practice this means that an em(action block) may be defined at the empty
alternative, which is then executed prior to the left-recursive
alternative. Such an action block could be used to perform initializations
necessary for the proper handling of the left-recursive alternative.