Grammar

This grammar is LALR(1)

Number of Rules 9

Number of Terminals 5

Number of Lr0 States3

Number of La States0

BNF

Accept ::= aposAttValueSub

1: aposAttValueSub ::= aposAttValue

2: aposAttValue ::= aposAttValue notAposValue

3: aposAttValue ::=

4: aposAttValue ::= aposAttValue reference

5: reference ::= entityRef

6: reference ::= charRef

7: charRef ::= charRefDecimal

8: charRef ::= charRefHex

Terminals

Eof(singleApostrophe) = '''

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

aposAttValue->. (3)

aposAttValueSub Goto 2

aposAttValue Goto 3

notAposValue Reduce 3

entityRef Reduce 3

charRefDecimal Reduce 3

charRefHex Reduce 3

Eof Reduce 3

State 2

( 1 )

Accept->aposAttValueSub . (0)

Accept->aposAttValueSub . (0)

Eof Reduce 0

State 3

( 1 )

aposAttValueSub->aposAttValue . (1)

aposAttValue->aposAttValue .notAposValue

aposAttValue->aposAttValue .reference

aposAttValueSub->aposAttValue . (1)

notAposValue Sh/Rd 2

entityRef Sh/Rd 5

charRefHex Sh/Rd 8

charRefDecimal Sh/Rd 7

reference Gt/Rd 4

charRef Gt/Rd 6

Eof Reduce 1

First Map for Nonterminals

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

charRef ==>> { charRefDecimal charRefHex}

reference ==>> { entityRef charRefDecimal charRefHex}

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

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

Closure for Nonterminals

aposAttValue ==>> {}

charRef ==>> {}

reference ==>> { charRef}

aposAttValueSub ==>> { aposAttValue}

Accept ==>> { aposAttValue aposAttValueSub}

Nullable Nonterminals

aposAttValue ==>> true

charRef ==>> false

reference ==>> false

aposAttValueSub ==>> true

Accept ==>> false