Grammar

This grammar is LALR(2)

Number of Rules 109

Number of Terminals 55

Number of Lr0 States83

Number of La States1

BNF

Accept ::= extSubset

1: extSubset ::= textDecl? extSubsetDecl*

6: textDecl ::= '<?xml' versionInfo? encodingDecl '>'

7: extSubsetDecl ::= markupdecl

8: extSubsetDecl ::= conditionalSect

11: encodingDecl ::= 'encoding' eq '"' encName '"'

12: encodingDecl ::= 'encoding' eq ''' encName '''

13: markupdecl ::= attlistDecl

14: markupdecl ::= elementdecl

15: markupdecl ::= entityDecl

16: markupdecl ::= notationDecl

17: conditionalSect ::= includeSect

18: conditionalSect ::= ignoreSect

19: versionInfo ::= 'version' eq versionNum

20: eq ::= '='

21: attlistDecl ::= '<!ATTLIST' qName attDef* '>'

22: elementdecl ::= '<!ELEMENT' qName contentspec '>'

23: entityDecl ::= geDecl

24: entityDecl ::= peDecl

25: notationDecl ::= '<!NOTATION' name externalID '>'

26: notationDecl ::= '<!NOTATION' name publicID '>'

27: includeSect ::= '<![' 'INCLUDE' '[' extSubsetDecl ']]>'

28: ignoreSect ::= '<![' 'IGNORE' '[' ignoreSectContents ']]>'

29: versionNum ::= version

32: contentspec ::= 'EMPTY'

33: contentspec ::= 'ANY'

34: contentspec ::= children

35: contentspec ::= mixed

36: geDecl ::= '<!ENTITY' name entityDef '>'

37: peDecl ::= '<!ENTITY' '%' name peDef '>'

38: externalID ::= 'SYSTEM' systemLiteral

39: externalID ::= 'PUBLIC' pubidLiteral systemLiteral

40: publicID ::= 'PUBLIC' pubidLiteral

41: ignoreSectContents ::= ignore ('<!\[' ignoreSectContents '\]\]>' ignore)*

42: attDef ::= nsAttName attType defaultDecl

43: attDef ::= qName attType defaultDecl

44: children ::= seq ('[\+\*\?]')?

45: children ::= choice ('[\+\*\?]')?

46: mixed ::= '(' '#PCDATA' ')'

47: mixed ::= '(' '#PCDATA' mixedNames ')' '*'

48: entityDef ::= externalID nDataDecl?

49: entityDef ::= entityValue

50: peDef ::= externalID

51: peDef ::= entityValue

52: pubidLiteral ::= pubidLiteralMinusApostrophe

53: pubidLiteral ::= pubidLiteralWithApostrophe

54: ignore ::= ignoreEnd

57: attType ::= stringType

58: attType ::= tokenizedType

59: attType ::= enumeratedType

60: defaultDecl ::= '#IMPLIED'

61: defaultDecl ::= '#FIXED'? attValue

62: defaultDecl ::= '#REQUIRED'

63: seq ::= '(' cp ('\,' cp)* ')'

66: choice ::= '(' cp ('\|' cp)+ ')'

67: mixedNames ::=

68: mixedNames ::= mixedNames '|' qName

71: entityValue ::= quotEntityValueStart

72: entityValue ::= aposEntityValueStart

74: stringType ::= 'CDATA'

75: tokenizedType ::= 'ID' 'REF'

76: tokenizedType ::= 'ENTITY'

77: tokenizedType ::= 'ID' 'REF' 'S'

78: tokenizedType ::= 'NMTOKEN'

79: tokenizedType ::= 'ID'

80: tokenizedType ::= 'NMTOKEN' 'S'

81: tokenizedType ::= 'ENTITIES'

82: enumeratedType ::= enumeration

83: enumeratedType ::= notationType

86: attValue ::= quotAttValueStart

87: attValue ::= aposAttValueStart

88: cp ::= qName ('[\+\*\?]')?

89: cp ::= seq ('[\+\*\?]')?

90: cp ::= choice ('[\+\*\?]')?

96: nDataDecl ::= 'NDATA' name

97: quotEntityValueStart ::= '"'

98: aposEntityValueStart ::= '''

99: enumeration ::= '(' nmtoken enumerationNMTokens ')'

100: notationType ::= 'NOTATION' '(' name notationTypeNames ')'

101: quotAttValueStart ::= '"'

102: aposAttValueStart ::= '''

105: enumerationNMTokens ::= enumerationNMTokens '|' nmtoken

106: enumerationNMTokens ::=

107: notationTypeNames ::= notationTypeNames '|' name

108: notationTypeNames ::=

Terminals

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

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

name = '[: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]*'

s = '[\x20\x09\x0A]+'

version = '"[0-9]\.[0-9]"|'[0-9]\.[0-9]''

systemLiteral = '"[^"]*"|'[^']*''

pubidLiteralWithApostrophe = '"[\x20\x0D\x0Aa-zA-Z0-9\-'\(\)\+\,\./:=\?;!\*#@\$_%]*"'

pubidLiteralMinusApostrophe = ''[\x20\x0D\x0Aa-zA-Z0-9\-\(\)\+\,\./:=\?;!\*#@\$_%]*''

qName = '[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]*)?'

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

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

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]*;'

nsAttName = 'xmlns(:[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]*)?'

encName = '[A-Za-z][A-Za-z0-9\._\-]*'

nmtoken = '[: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]+'

States

State 1

( )

Accept->.extSubset

textDecl?->. (3)

'<?xml' Shift 4

extSubset Goto 2

textDecl? Goto 3

textDecl Gt/Rd 2

'<!ATTLIST' Reduce 3

'<!ELEMENT' Reduce 3

'<!ENTITY' Reduce 3

'<!NOTATION' Reduce 3

'<![' Reduce 3

Eof Reduce 3

State 2

( 1 )

Accept->extSubset . (0)

Accept->extSubset . (0)

Eof Reduce 0

State 3

( 1 )

extSubset->textDecl? .extSubsetDecl*

extSubsetDecl*->. (4)

extSubsetDecl* Goto 5

'<!ATTLIST' Reduce 4

'<!ELEMENT' Reduce 4

'<!ENTITY' Reduce 4

'<!NOTATION' Reduce 4

'<![' Reduce 4

Eof Reduce 4

State 4

( 1 )

textDecl->'<?xml' .versionInfo? encodingDecl '>'

versionInfo?->. (10)

'version' Shift 7

versionInfo? Goto 6

versionInfo Gt/Rd 9

'encoding' Reduce 10

State 5

( 3 )

extSubset->textDecl? extSubsetDecl* . (1)

extSubsetDecl*->extSubsetDecl* .extSubsetDecl

extSubset->textDecl? extSubsetDecl* . (1)

'<![' Shift 8

'<!ATTLIST' Shift 9

'<!ELEMENT' Shift 10

'<!ENTITY' Shift 11

'<!NOTATION' Shift 12

extSubsetDecl Gt/Rd 5

conditionalSect Gt/Rd 8

markupdecl Gt/Rd 7

ignoreSect Gt/Rd 18

includeSect Gt/Rd 17

peDecl Gt/Rd 24

geDecl Gt/Rd 23

notationDecl Gt/Rd 16

entityDecl Gt/Rd 15

elementdecl Gt/Rd 14

attlistDecl Gt/Rd 13

Eof Reduce 1

State 6

( 4 )

textDecl->'<?xml' versionInfo? .encodingDecl '>'

'encoding' Shift 14

encodingDecl Goto 13

State 7

( 4 )

versionInfo->'version' .eq versionNum

'=' Sh/Rd 20

eq Goto 15

State 8

( 5 25 )

includeSect->'<![' .'INCLUDE' '[' extSubsetDecl ']]>'

ignoreSect->'<![' .'IGNORE' '[' ignoreSectContents ']]>'

'IGNORE' Shift 16

'INCLUDE' Shift 17

State 9

( 5 25 )

attlistDecl->'<!ATTLIST' .qName attDef* '>'

qName Shift 18

State 10

( 5 25 )

elementdecl->'<!ELEMENT' .qName contentspec '>'

qName Shift 19

State 11

( 5 25 )

geDecl->'<!ENTITY' .name entityDef '>'

peDecl->'<!ENTITY' .'%' name peDef '>'

'%' Shift 20

name Shift 21

State 12

( 5 25 )

notationDecl->'<!NOTATION' .name externalID '>'

notationDecl->'<!NOTATION' .name publicID '>'

name Shift 22

State 13

( 6 )

textDecl->'<?xml' versionInfo? encodingDecl .'>'

'>' Sh/Rd 6

State 14

( 6 )

encodingDecl->'encoding' .eq '"' encName '"'

encodingDecl->'encoding' .eq ''' encName '''

'=' Sh/Rd 20

eq Goto 23

State 15

( 7 )

versionInfo->'version' eq .versionNum

version Sh/Rd 29

versionNum Gt/Rd 19

State 16

( 8 )

ignoreSect->'<![' 'IGNORE' .'[' ignoreSectContents ']]>'

'[' Shift 24

State 17

( 8 )

includeSect->'<![' 'INCLUDE' .'[' extSubsetDecl ']]>'

'[' Shift 25

State 18

( 9 )

attlistDecl->'<!ATTLIST' qName .attDef* '>'

attDef*->. (30)

attDef* Goto 26

'>' Reduce 30

nsAttName Reduce 30

qName Reduce 30

State 19

( 10 )

elementdecl->'<!ELEMENT' qName .contentspec '>'

'ANY' Sh/Rd 33

'EMPTY' Sh/Rd 32

'(' Shift 28

contentspec Goto 27

mixed Gt/Rd 35

children Gt/Rd 34

choice Goto 29

seq Goto 30

State 20

( 11 )

peDecl->'<!ENTITY' '%' .name peDef '>'

name Shift 31

State 21

( 11 )

geDecl->'<!ENTITY' name .entityDef '>'

'"' Sh/Rd 97

''' Sh/Rd 98

'PUBLIC' Shift 34

'SYSTEM' Shift 35

entityDef Goto 32

entityValue Gt/Rd 49

externalID Goto 33

aposEntityValueStart Gt/Rd 72

quotEntityValueStart Gt/Rd 71

State 22

( 12 )

notationDecl->'<!NOTATION' name .externalID '>'

notationDecl->'<!NOTATION' name .publicID '>'

'SYSTEM' Shift 35

'PUBLIC' Shift 38

publicID Goto 36

externalID Goto 37

State 23

( 14 )

encodingDecl->'encoding' eq .'"' encName '"'

encodingDecl->'encoding' eq .''' encName '''

''' Shift 39

'"' Shift 40

State 24

( 16 )

ignoreSect->'<![' 'IGNORE' '[' .ignoreSectContents ']]>'

ignoreEnd Sh/Rd 54

ignoreSectContents Goto 41

ignore Goto 42

State 25

( 17 )

includeSect->'<![' 'INCLUDE' '[' .extSubsetDecl ']]>'

'<![' Shift 8

'<!ATTLIST' Shift 9

'<!ELEMENT' Shift 10

'<!ENTITY' Shift 11

'<!NOTATION' Shift 12

extSubsetDecl Goto 43

conditionalSect Gt/Rd 8

markupdecl Gt/Rd 7

ignoreSect Gt/Rd 18

includeSect Gt/Rd 17

peDecl Gt/Rd 24

geDecl Gt/Rd 23

notationDecl Gt/Rd 16

entityDecl Gt/Rd 15

elementdecl Gt/Rd 14

attlistDecl Gt/Rd 13

State 26

( 18 )

attlistDecl->'<!ATTLIST' qName attDef* .'>'

attDef*->attDef* .attDef

'>' Sh/Rd 21

qName Shift 44

nsAttName Shift 45

attDef Gt/Rd 31

State 27

( 19 )

elementdecl->'<!ELEMENT' qName contentspec .'>'

'>' Sh/Rd 22

State 28

( 19 )

mixed->'(' .'#PCDATA' ')'

mixed->'(' .'#PCDATA' mixedNames ')' '*'

seq->'(' .cp ('\,' cp)* ')'

choice->'(' .cp ('\|' cp)+ ')'

'#PCDATA' Shift 47

qName Shift 50

'(' Shift 51

cp Goto 46

choice Goto 48

seq Goto 49

State 29

( 19 )

children->choice .('[\+\*\?]')?

('[\+\*\?]')?->. (65)

'[+*?]' Sh/Rd 93

('[\+\*\?]')? Gt/Rd 45

('[\+\*\?]') Gt/Rd 64

'>' Reduce 65

State 30

( 19 )

children->seq .('[\+\*\?]')?

('[\+\*\?]')?->. (65)

'[+*?]' Sh/Rd 93

('[\+\*\?]')? Gt/Rd 44

('[\+\*\?]') Gt/Rd 64

'>' Reduce 65

State 31

( 20 )

peDecl->'<!ENTITY' '%' name .peDef '>'

'"' Sh/Rd 97

''' Sh/Rd 98

'PUBLIC' Shift 34

'SYSTEM' Shift 35

peDef Goto 52

entityValue Gt/Rd 51

externalID Gt/Rd 50

aposEntityValueStart Gt/Rd 72

quotEntityValueStart Gt/Rd 71

State 32

( 21 )

geDecl->'<!ENTITY' name entityDef .'>'

'>' Sh/Rd 36

State 33

( 21 )

entityDef->externalID .nDataDecl?

nDataDecl?->. (70)

'NDATA' Shift 53

nDataDecl? Gt/Rd 48

nDataDecl Gt/Rd 69

'>' Reduce 70

State 34

( 21 31 )

externalID->'PUBLIC' .pubidLiteral systemLiteral

pubidLiteralWithApostrophe Sh/Rd 53

pubidLiteralMinusApostrophe Sh/Rd 52

pubidLiteral Goto 54

State 35

( 21 22 31 )

externalID->'SYSTEM' .systemLiteral

systemLiteral Sh/Rd 38

State 36

( 22 )

notationDecl->'<!NOTATION' name publicID .'>'

'>' Sh/Rd 26

State 37

( 22 )

notationDecl->'<!NOTATION' name externalID .'>'

'>' Sh/Rd 25

State 38

( 22 )

externalID->'PUBLIC' .pubidLiteral systemLiteral

publicID->'PUBLIC' .pubidLiteral

pubidLiteralWithApostrophe Sh/Rd 53

pubidLiteralMinusApostrophe Sh/Rd 52

pubidLiteral Goto 55

State 39

( 23 )

encodingDecl->'encoding' eq ''' .encName '''

encName Shift 56

State 40

( 23 )

encodingDecl->'encoding' eq '"' .encName '"'

encName Shift 57

State 41

( 24 )

ignoreSect->'<![' 'IGNORE' '[' ignoreSectContents .']]>'

']]>' Sh/Rd 28

State 42

( 24 69 )

ignoreSectContents->ignore .('<!\[' ignoreSectContents '\]\]>' ignore)*

('<!\[' ignoreSectContents '\]\]>' ignore)*->. (55)

('<!\[' ignoreSectContents '\]\]>' ignore)* Goto 58

'<![' Reduce 55

']]>' Reduce 55

State 43

( 25 )

includeSect->'<![' 'INCLUDE' '[' extSubsetDecl .']]>'

']]>' Sh/Rd 27

State 44

( 26 )

attDef->qName .attType defaultDecl

'(' Shift 60

'NOTATION' Shift 61

'ENTITIES' Sh/Rd 81

'NMTOKEN' Shift 62

'ENTITY' Sh/Rd 76

'ID' Shift 63

'CDATA' Sh/Rd 74

attType Goto 59

enumeratedType Gt/Rd 59

tokenizedType Gt/Rd 58

stringType Gt/Rd 57

notationType Gt/Rd 83

enumeration Gt/Rd 82

State 45

( 26 )

attDef->nsAttName .attType defaultDecl

'(' Shift 60

'NOTATION' Shift 61

'ENTITIES' Sh/Rd 81

'NMTOKEN' Shift 62

'ENTITY' Sh/Rd 76

'ID' Shift 63

'CDATA' Sh/Rd 74

attType Goto 64

enumeratedType Gt/Rd 59

tokenizedType Gt/Rd 58

stringType Gt/Rd 57

notationType Gt/Rd 83

enumeration Gt/Rd 82

State 46

( 28 51 )

seq->'(' cp .('\,' cp)* ')'

choice->'(' cp .('\|' cp)+ ')'

('\,' cp)*->. (91)

'|' Shift 67

('\,' cp)* Goto 65

('\|' cp) Gt/Rd 95

('\|' cp)+ Goto 66

')' Reduce 91

',' Reduce 91

State 47

( 28 )

mixed->'(' '#PCDATA' .')'

mixed->'(' '#PCDATA' .mixedNames ')' '*'

mixedNames->. (67)

')' Shift 84

mixedNames Goto 68

'|' Reduce 67

State 48

( 28 51 67 74 )

cp->choice .('[\+\*\?]')?

('[\+\*\?]')?->. (65)

'[+*?]' Sh/Rd 93

('[\+\*\?]')? Gt/Rd 90

('[\+\*\?]') Gt/Rd 64

')' Reduce 65

',' Reduce 65

'|' Reduce 65

State 49

( 28 51 67 74 )

cp->seq .('[\+\*\?]')?

('[\+\*\?]')?->. (65)

'[+*?]' Sh/Rd 93

('[\+\*\?]')? Gt/Rd 89

('[\+\*\?]') Gt/Rd 64

')' Reduce 65

',' Reduce 65

'|' Reduce 65

State 50

( 28 51 67 74 )

cp->qName .('[\+\*\?]')?

('[\+\*\?]')?->. (65)

'[+*?]' Sh/Rd 93

('[\+\*\?]')? Gt/Rd 88

('[\+\*\?]') Gt/Rd 64

')' Reduce 65

',' Reduce 65

'|' Reduce 65

State 51

( 28 51 67 74 )

seq->'(' .cp ('\,' cp)* ')'

choice->'(' .cp ('\|' cp)+ ')'

qName Shift 50

'(' Shift 51

cp Goto 46

choice Goto 48

seq Goto 49

State 52

( 31 )

peDecl->'<!ENTITY' '%' name peDef .'>'

'>' Sh/Rd 37

State 53

( 33 )

nDataDecl->'NDATA' .name

name Sh/Rd 96

State 54

( 34 )

externalID->'PUBLIC' pubidLiteral .systemLiteral

systemLiteral Sh/Rd 39

State 55

( 38 )

externalID->'PUBLIC' pubidLiteral .systemLiteral

publicID->'PUBLIC' pubidLiteral . (40)

publicID->'PUBLIC' pubidLiteral . (40)

systemLiteral Sh/Rd 39

'>' Reduce 40

State 56

( 39 )

encodingDecl->'encoding' eq ''' encName .'''

''' Sh/Rd 12

State 57

( 40 )

encodingDecl->'encoding' eq '"' encName .'"'

'"' Sh/Rd 11

State 58

( 42 )

ignoreSectContents->ignore ('<!\[' ignoreSectContents '\]\]>' ignore)* . (41)

('<!\[' ignoreSectContents '\]\]>' ignore)*->('<!\[' ignoreSectContents '\]\]>' ignore)* .('<!\[' ignoreSectContents '\]\]>' ignore)

ignoreSectContents->ignore ('<!\[' ignoreSectContents '\]\]>' ignore)* . (41)

'<![' Shift 69

('<!\[' ignoreSectContents '\]\]>' ignore) Gt/Rd 56

']]>' Reduce 41

State 59

( 44 )

attDef->qName attType .defaultDecl

'#FIXED'?->. (84)

'#REQUIRED' Sh/Rd 62

'#IMPLIED' Sh/Rd 60

'#FIXED' Sh/Rd 85

defaultDecl Gt/Rd 43

'#FIXED'? Goto 70

'"' Reduce 84

''' Reduce 84

State 60

( 44 45 )

enumeration->'(' .nmtoken enumerationNMTokens ')'

nmtoken Shift 71

State 61

( 44 45 )

notationType->'NOTATION' .'(' name notationTypeNames ')'

'(' Shift 72

State 62

( 44 45 )

tokenizedType->'NMTOKEN' . (78)

tokenizedType->'NMTOKEN' .'S'

tokenizedType->'NMTOKEN' . (78)

'S' Sh/Rd 80

'#IMPLIED' Reduce 78

'#FIXED' Reduce 78

'"' Reduce 78

''' Reduce 78

'#REQUIRED' Reduce 78

State 63

( 44 45 )

tokenizedType->'ID' .'REF'

tokenizedType->'ID' .'REF' 'S'

tokenizedType->'ID' . (79)

tokenizedType->'ID' . (79)

'REF' Shift 73

'#IMPLIED' Reduce 79

'#FIXED' Reduce 79

'"' Reduce 79

''' Reduce 79

'#REQUIRED' Reduce 79

State 64

( 45 )

attDef->nsAttName attType .defaultDecl

'#FIXED'?->. (84)

'#REQUIRED' Sh/Rd 62

'#IMPLIED' Sh/Rd 60

'#FIXED' Sh/Rd 85

defaultDecl Gt/Rd 42

'#FIXED'? Goto 70

'"' Reduce 84

''' Reduce 84

State 65

( 46 )

seq->'(' cp ('\,' cp)* .')'

('\,' cp)*->('\,' cp)* .('\,' cp)

')' Sh/Rd 63

',' Shift 74

('\,' cp) Gt/Rd 92

State 66

( 46 )

choice->'(' cp ('\|' cp)+ .')'

('\|' cp)+->('\|' cp)+ .('\|' cp)

')' Sh/Rd 66

'|' Shift 67

('\|' cp) Gt/Rd 94

State 67

( 46 66 )

('\|' cp)->'|' .cp

qName Shift 50

'(' Shift 51

cp Gt/Rd 104

choice Goto 48

seq Goto 49

State 68

( 47 )

mixed->'(' '#PCDATA' mixedNames .')' '*'

mixedNames->mixedNames .'|' qName

'|' Shift 75

')' Shift 76

State 69

( 58 )

('<!\[' ignoreSectContents '\]\]>' ignore)->'<![' .ignoreSectContents ']]>' ignore

ignoreEnd Sh/Rd 54

ignoreSectContents Goto 77

ignore Goto 42

State 70

( 59 64 )

defaultDecl->'#FIXED'? .attValue

''' Sh/Rd 102

'"' Sh/Rd 101

attValue Gt/Rd 61

aposAttValueStart Gt/Rd 87

quotAttValueStart Gt/Rd 86

State 71

( 60 )

enumeration->'(' nmtoken .enumerationNMTokens ')'

enumerationNMTokens->. (106)

enumerationNMTokens Goto 78

')' Reduce 106

'|' Reduce 106

State 72

( 61 )

notationType->'NOTATION' '(' .name notationTypeNames ')'

name Shift 79

State 73

( 63 )

tokenizedType->'ID' 'REF' . (75)

tokenizedType->'ID' 'REF' .'S'

tokenizedType->'ID' 'REF' . (75)

'S' Sh/Rd 77

'#IMPLIED' Reduce 75

'#FIXED' Reduce 75

'"' Reduce 75

''' Reduce 75

'#REQUIRED' Reduce 75

State 74

( 65 )

('\,' cp)->',' .cp

qName Shift 50

'(' Shift 51

cp Gt/Rd 103

choice Goto 48

seq Goto 49

State 75

( 68 )

mixedNames->mixedNames '|' .qName

qName Sh/Rd 68

State 76

( 68 )

mixed->'(' '#PCDATA' mixedNames ')' .'*'

'*' Sh/Rd 47

State 77

( 69 )

('<!\[' ignoreSectContents '\]\]>' ignore)->'<![' ignoreSectContents .']]>' ignore

']]>' Shift 80

State 78

( 71 )

enumeration->'(' nmtoken enumerationNMTokens .')'

enumerationNMTokens->enumerationNMTokens .'|' nmtoken

'|' Shift 81

')' Sh/Rd 99

State 79

( 72 )

notationType->'NOTATION' '(' name .notationTypeNames ')'

notationTypeNames->. (108)

notationTypeNames Goto 82

')' Reduce 108

'|' Reduce 108

State 80

( 77 )

('<!\[' ignoreSectContents '\]\]>' ignore)->'<![' ignoreSectContents ']]>' .ignore

ignoreEnd Sh/Rd 54

ignore Gt/Rd 73

State 81

( 78 )

enumerationNMTokens->enumerationNMTokens '|' .nmtoken

nmtoken Sh/Rd 105

State 82

( 79 )

notationType->'NOTATION' '(' name notationTypeNames .')'

notationTypeNames->notationTypeNames .'|' name

'|' Shift 83

')' Sh/Rd 100

State 83

( 82 )

notationTypeNames->notationTypeNames '|' .name

name Sh/Rd 107

Lookahead States

State 84

(
47 )

'>' Sh/Rd 46

'*' Reduce 67

First Map for Nonterminals

stringType ==>> { 'CDATA'}

enumerationNMTokens ==>> { '\|' Empty}

nDataDecl? ==>> { 'NDATA' Empty}

aposEntityValueStart ==>> { '''}

ignoreSect ==>> { '<!\['}

markupdecl ==>> { '<!ATTLIST' '<!ELEMENT' '<!ENTITY' '<!NOTATION'}

peDef ==>> { 'SYSTEM' 'PUBLIC' '"' '''}

mixedNames ==>> { Empty '\|'}

tokenizedType ==>> { 'ID' 'ENTITY' 'NMTOKEN' 'ENTITIES'}

publicID ==>> { 'PUBLIC'}

notationTypeNames ==>> { '\|' Empty}

('<!\[' ignoreSectContents '\]\]>' ignore) ==>> { '<!\['}

entityValue ==>> { '"' '''}

entityDef ==>> { 'SYSTEM' 'PUBLIC' '"' '''}

('\|' cp) ==>> { '\|'}

includeSect ==>> { '<!\['}

peDecl ==>> { '<!ENTITY'}

externalID ==>> { 'SYSTEM' 'PUBLIC'}

attDef ==>> { nsAttName qName}

textDecl? ==>> { '<\?xml' Empty}

cp ==>> { qName '\('}

defaultDecl ==>> { '#IMPLIED' '#FIXED' '"' ''' '#REQUIRED'}

enumeration ==>> { '\('}

contentspec ==>> { 'EMPTY' 'ANY' '\('}

attlistDecl ==>> { '<!ATTLIST'}

('[\+\*\?]')? ==>> { '[\+\*\?]' Empty}

attValue ==>> { '"' '''}

elementdecl ==>> { '<!ELEMENT'}

versionNum ==>> { version}

quotAttValueStart ==>> { '"'}

extSubsetDecl* ==>> { Empty '<!ATTLIST' '<!ELEMENT' '<!ENTITY' '<!NOTATION' '<!\['}

choice ==>> { '\('}

('<!\[' ignoreSectContents '\]\]>' ignore)* ==>> { Empty '<!\['}

children ==>> { '\('}

attType ==>> { 'CDATA' 'ID' 'ENTITY' 'NMTOKEN' 'ENTITIES' '\(' 'NOTATION'}

('\|' cp)+ ==>> { '\|'}

conditionalSect ==>> { '<!\['}

versionInfo? ==>> { 'version' Empty}

entityDecl ==>> { '<!ENTITY'}

('\,' cp) ==>> { '\,'}

mixed ==>> { '\('}

extSubsetDecl ==>> { '<!ATTLIST' '<!ELEMENT' '<!ENTITY' '<!NOTATION' '<!\['}

notationType ==>> { 'NOTATION'}

ignore ==>> { ignoreEnd}

('\,' cp)* ==>> { Empty '\,'}

versionInfo ==>> { 'version'}

enumeratedType ==>> { '\(' 'NOTATION'}

nDataDecl ==>> { 'NDATA'}

pubidLiteral ==>> { pubidLiteralMinusApostrophe pubidLiteralWithApostrophe}

('[\+\*\?]') ==>> { '[\+\*\?]'}

'#FIXED'? ==>> { Empty '#FIXED'}

attDef* ==>> { Empty nsAttName qName}

aposAttValueStart ==>> { '''}

quotEntityValueStart ==>> { '"'}

notationDecl ==>> { '<!NOTATION'}

extSubset ==>> { '<\?xml' '<!ATTLIST' '<!ELEMENT' '<!ENTITY' '<!NOTATION' '<!\[' Empty}

ignoreSectContents ==>> { ignoreEnd}

textDecl ==>> { '<\?xml'}

seq ==>> { '\('}

geDecl ==>> { '<!ENTITY'}

eq ==>> { '='}

encodingDecl ==>> { 'encoding'}

Accept ==>> { '<\?xml' '<!ATTLIST' '<!ELEMENT' '<!ENTITY' '<!NOTATION' '<!\[' Eof}

Closure for Nonterminals

stringType ==>> {}

enumerationNMTokens ==>> {}

nDataDecl? ==>> { nDataDecl}

aposEntityValueStart ==>> {}

ignoreSect ==>> {}

markupdecl ==>> { notationDecl geDecl peDecl entityDecl elementdecl attlistDecl}

peDef ==>> { quotEntityValueStart aposEntityValueStart entityValue externalID}

mixedNames ==>> {}

tokenizedType ==>> {}

publicID ==>> {}

notationTypeNames ==>> {}

('<!\[' ignoreSectContents '\]\]>' ignore) ==>> {}

entityValue ==>> { aposEntityValueStart quotEntityValueStart}

entityDef ==>> { quotEntityValueStart aposEntityValueStart entityValue externalID}

('\|' cp) ==>> {}

includeSect ==>> {}

peDecl ==>> {}

externalID ==>> {}

attDef ==>> {}

textDecl? ==>> { textDecl}

cp ==>> { choice seq}

defaultDecl ==>> { '#FIXED'¿}

enumeration ==>> {}

contentspec ==>> { mixed seq choice children}

attlistDecl ==>> {}

('[\+\*\?]')? ==>> { ?{'[\+\*\?]'}}

attValue ==>> { aposAttValueStart quotAttValueStart}

elementdecl ==>> {}

versionNum ==>> {}

quotAttValueStart ==>> {}

extSubsetDecl* ==>> {}

choice ==>> {}

('<!\[' ignoreSectContents '\]\]>' ignore)* ==>> {}

children ==>> { choice seq}

attType ==>> { enumeration notationType enumeratedType tokenizedType stringType}

('\|' cp)+ ==>> { ?{'\|',cp}}

conditionalSect ==>> { ignoreSect includeSect}

versionInfo? ==>> { versionInfo}

entityDecl ==>> { peDecl geDecl}

('\,' cp) ==>> {}

mixed ==>> {}

extSubsetDecl ==>> { includeSect ignoreSect conditionalSect attlistDecl elementdecl entityDecl peDecl geDecl notationDecl markupdecl}

notationType ==>> {}

ignore ==>> {}

('\,' cp)* ==>> {}

versionInfo ==>> {}

enumeratedType ==>> { notationType enumeration}

nDataDecl ==>> {}

pubidLiteral ==>> {}

('[\+\*\?]') ==>> {}

'#FIXED'? ==>> {}

attDef* ==>> {}

aposAttValueStart ==>> {}

quotEntityValueStart ==>> {}

notationDecl ==>> {}

extSubset ==>> { textDecl textDecl¿}

ignoreSectContents ==>> { ignore}

textDecl ==>> {}

seq ==>> {}

geDecl ==>> {}

eq ==>> {}

encodingDecl ==>> {}

Accept ==>> { textDecl¿ textDecl extSubset}

Nullable Nonterminals

stringType ==>> false

enumerationNMTokens ==>> true

nDataDecl? ==>> true

aposEntityValueStart ==>> false

ignoreSect ==>> false

markupdecl ==>> false

peDef ==>> false

mixedNames ==>> true

tokenizedType ==>> false

publicID ==>> false

notationTypeNames ==>> true

('<!\[' ignoreSectContents '\]\]>' ignore) ==>> false

entityValue ==>> false

entityDef ==>> false

('\|' cp) ==>> false

includeSect ==>> false

peDecl ==>> false

externalID ==>> false

attDef ==>> false

textDecl? ==>> true

cp ==>> false

defaultDecl ==>> false

enumeration ==>> false

contentspec ==>> false

attlistDecl ==>> false

('[\+\*\?]')? ==>> true

attValue ==>> false

elementdecl ==>> false

versionNum ==>> false

quotAttValueStart ==>> false

extSubsetDecl* ==>> true

choice ==>> false

('<!\[' ignoreSectContents '\]\]>' ignore)* ==>> true

children ==>> false

attType ==>> false

('\|' cp)+ ==>> false

conditionalSect ==>> false

versionInfo? ==>> true

entityDecl ==>> false

('\,' cp) ==>> false

mixed ==>> false

extSubsetDecl ==>> false

notationType ==>> false

ignore ==>> false

('\,' cp)* ==>> true

versionInfo ==>> false

enumeratedType ==>> false

nDataDecl ==>> false

pubidLiteral ==>> false

('[\+\*\?]') ==>> false

'#FIXED'? ==>> true

attDef* ==>> true

aposAttValueStart ==>> false

quotEntityValueStart ==>> false

notationDecl ==>> false

extSubset ==>> true

ignoreSectContents ==>> false

textDecl ==>> false

seq ==>> false

geDecl ==>> false

eq ==>> false

encodingDecl ==>> false

Accept ==>> false