Grammar

This grammar is LALR(1)

Number of Rules 9

Number of Terminals 5

Number of Lr0 States3

Number of La States0

BNF

Accept ::= quotAttValueSub

1: quotAttValueSub ::= quotAttValue

2: quotAttValue ::= quotAttValue notQuotValue

3: quotAttValue ::= quotAttValue reference

4: quotAttValue ::=

5: reference ::= entityRef

6: reference ::= charRef

7: charRef ::= charRefDecimal

8: charRef ::= charRefHex

Terminals

Eof(singleQuot) = '"'

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

notQuotValue = '[^%\&"]+'

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

quotAttValue->. (4)

quotAttValueSub Goto 2

quotAttValue Goto 3

notQuotValue Reduce 4

entityRef Reduce 4

charRefDecimal Reduce 4

charRefHex Reduce 4

Eof Reduce 4

State 2

( 1 )

Accept->quotAttValueSub . (0)

Accept->quotAttValueSub . (0)

Eof Reduce 0

State 3

( 1 )

quotAttValueSub->quotAttValue . (1)

quotAttValue->quotAttValue .notQuotValue

quotAttValue->quotAttValue .reference

quotAttValueSub->quotAttValue . (1)

notQuotValue Sh/Rd 2

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

charRef ==>> { charRefDecimal charRefHex}

quotAttValue ==>> { notQuotValue entityRef charRefDecimal charRefHex Empty}

quotAttValueSub ==>> { notQuotValue entityRef charRefDecimal charRefHex Empty}

reference ==>> { entityRef charRefDecimal charRefHex}

Accept ==>> { notQuotValue entityRef charRefDecimal charRefHex Eof(singleQuot)}

Closure for Nonterminals

charRef ==>> {}

quotAttValue ==>> {}

quotAttValueSub ==>> { quotAttValue}

reference ==>> { charRef}

Accept ==>> { quotAttValue quotAttValueSub}

Nullable Nonterminals

charRef ==>> false

quotAttValue ==>> true

quotAttValueSub ==>> true

reference ==>> false

Accept ==>> false