GRAMMAR COMPILER


  • Read regular expression grammar, and parse it into a lattice format. Add node NULL when necessary.

  • Regular expression:
    Ordinary parentheses ( ) are used to bracket sub-expressions.
    Curly braces { } denote zero or more repetitions.
    Angle brackets <> denote one or more repetitions.
    Square brackets [ ] are used to enclose optional items.
    Vertical bar | denotes alternatives.

  • For example,

    sent_start dial ( < one | two > | call [ zhao ] ) sent_end


  • N=12 L=15
    J=0 S=0 E=1 W=sent_start v=0 a=0.00 l=0.000
    J=1 S=1 E=2 W=dial v=0 a=0.00 l=0.000
    J=2 S=2 E=3 W=!NULL v=0 a=0.00 l=0.000
    J=3 S=2 E=8 W=call v=0 a=0.00 l=0.000
    J=4 S=3 E=4 W=one v=0 a=0.00 l=0.000
    J=5 S=3 E=6 W=two v=0 a=0.00 l=0.000
    J=6 S=4 E=5 W=!NULL v=0 a=0.00 l=0.000
    J=7 S=5 E=3 W=!NULL v=0 a=0.00 l=0.000
    J=8 S=5 E=7 W=!NULL v=0 a=0.00 l=0.000
    J=9 S=6 E=5 W=!NULL v=0 a=0.00 l=0.000
    J=10 S=7 E=11 W=sent_end v=0 a=0.00 l=0.000
    J=11 S=8 E=9 W=zhao v=0 a=0.00 l=0.000
    J=12 S=8 E=10 W=!NULL v=0 a=0.00 l=0.000
    J=13 S=9 E=10 W=!NULL v=0 a=0.00 l=0.000
    J=14 S=10 E=7 W=!NULL v=0 a=0.00 l=0.000