Grammar

This grammar is LALR(1)

Number of Rules 12

Number of Terminals 10

Number of Lr0 States3

Number of La States0

BNF

Accept ::= elementContent

1: elementContent ::= content

2: content ::=

3: content ::= content cdSect

4: content ::= content reference

5: content ::= content element

6: reference ::= entityRef

7: reference ::= charRef

8: element ::= sTag

9: charRef ::= charRefDecimal

10: charRef ::= charRefHex

11: sTag ::= sTagName

Terminals

comment = '<!\-\-[\x01-\uD7FF\uE000-\uFFFD\x{10000}-\x{10FFFF}]*\-\->'

Eof(eTag) = '</[A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\x{10000}-\x{10FFFF}][A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\x{10000}-\x{10FFFF}\-\.0-9\xB7\u0300-\u036F\u203F-\u2040]*(:[A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\x{10000}-\x{10FFFF}][A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\x{10000}-\x{10FFFF}\-\.0-9\xB7\u0300-\u036F\u203F-\u2040]*)?[\x20\x09\x0A]*>'

charData = '[^<\&\x0d\x85\u2028]+'

eol = '\x0d\x0a|\x0d\x85|\x85|\x0d|\u2028'

pi = '<\?[\x01-\uD7FF\uE000-\uFFFD\x{10000}-\x{10FFFF}]*\?>'

charRefHex = '\&#x[0-9a-fA-F]+;'

cdSect = '<!\[CDATA\[[\x01-\uD7FF\uE000-\uFFFD\x{10000}-\x{10FFFF}]*\]\]>'

sTagName = '<[A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\x{10000}-\x{10FFFF}][A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\x{10000}-\x{10FFFF}\-\.0-9\xB7\u0300-\u036F\u203F-\u2040]*(:[A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\x{10000}-\x{10FFFF}][A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\x{10000}-\x{10FFFF}\-\.0-9\xB7\u0300-\u036F\u203F-\u2040]*)?'

entityRef = '\&[:A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\x{10000}-\x{10FFFF}][:A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\x{10000}-\x{10FFFF}\-\.0-9\xB7\u0300-\u036F\u203F-\u2040]*;'

charRefDecimal = '\&#[0-9]+;'

States

State 1

( )

Accept->.elementContent

content->. (2)

elementContent Goto 2

content Goto 3

cdSect Reduce 2

entityRef Reduce 2

charRefDecimal Reduce 2

charRefHex Reduce 2

sTagName Reduce 2

Eof Reduce 2

State 2

( 1 )

Accept->elementContent . (0)

Accept->elementContent . (0)

Eof Reduce 0

State 3

( 1 )

elementContent->content . (1)

content->content .cdSect

content->content .reference

content->content .element

elementContent->content . (1)

cdSect Sh/Rd 3

entityRef Sh/Rd 6

charRefHex Sh/Rd 10

charRefDecimal Sh/Rd 9

sTagName Sh/Rd 11

element Gt/Rd 5

reference Gt/Rd 4

charRef Gt/Rd 7

sTag Gt/Rd 8

Eof Reduce 1

First Map for Nonterminals

content ==>> { Empty cdSect entityRef charRefDecimal charRefHex sTagName}

sTag ==>> { sTagName}

element ==>> { sTagName}

charRef ==>> { charRefDecimal charRefHex}

elementContent ==>> { cdSect entityRef charRefDecimal charRefHex sTagName Empty}

reference ==>> { entityRef charRefDecimal charRefHex}

Accept ==>> { cdSect entityRef charRefDecimal charRefHex sTagName Eof(eTag)}

Closure for Nonterminals

content ==>> {}

sTag ==>> {}

element ==>> { sTag}

charRef ==>> {}

elementContent ==>> { content}

reference ==>> { charRef}

Accept ==>> { content elementContent}

Nullable Nonterminals

content ==>> true

sTag ==>> false

element ==>> false

charRef ==>> false

elementContent ==>> true

reference ==>> false

Accept ==>> false