Grammar

This grammar is LALR(1)

Number of Rules 9

Number of Terminals 6

Number of Lr0 States3

Number of La States0

BNF

Accept ::= aposEntityValueSub

1: aposEntityValueSub ::= aposEntityValue

2: aposEntityValue ::=

3: aposEntityValue ::= aposEntityValue reference

4: aposEntityValue ::= aposEntityValue notAposValue

5: reference ::= entityRef

6: reference ::= charRef

7: charRef ::= charRefDecimal

8: charRef ::= charRefHex

Terminals

Eof(singleApostrophe) = '''

peReference = '%[: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]*;'

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

notAposValue = '[^%\&']+'

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->.aposEntityValueSub

aposEntityValue->. (2)

aposEntityValueSub Goto 2

aposEntityValue Goto 3

entityRef Reduce 2

charRefDecimal Reduce 2

charRefHex Reduce 2

notAposValue Reduce 2

Eof Reduce 2

State 2

( 1 )

Accept->aposEntityValueSub . (0)

Accept->aposEntityValueSub . (0)

Eof Reduce 0

State 3

( 1 )

aposEntityValueSub->aposEntityValue . (1)

aposEntityValue->aposEntityValue .reference

aposEntityValue->aposEntityValue .notAposValue

aposEntityValueSub->aposEntityValue . (1)

notAposValue Sh/Rd 4

entityRef Sh/Rd 5

charRefHex Sh/Rd 8

charRefDecimal Sh/Rd 7

reference Gt/Rd 3

charRef Gt/Rd 6

Eof Reduce 1

First Map for Nonterminals

aposEntityValueSub ==>> { entityRef charRefDecimal charRefHex notAposValue Empty}

charRef ==>> { charRefDecimal charRefHex}

aposEntityValue ==>> { Empty entityRef charRefDecimal charRefHex notAposValue}

reference ==>> { entityRef charRefDecimal charRefHex}

Accept ==>> { entityRef charRefDecimal charRefHex notAposValue Eof(singleApostrophe)}

Closure for Nonterminals

aposEntityValueSub ==>> { aposEntityValue}

charRef ==>> {}

aposEntityValue ==>> {}

reference ==>> { charRef}

Accept ==>> { aposEntityValue aposEntityValueSub}

Nullable Nonterminals

aposEntityValueSub ==>> true

charRef ==>> false

aposEntityValue ==>> true

reference ==>> false

Accept ==>> false