This grammar is LALR(1)
Number of Rules 17
Number of Terminals 8
Number of Lr0 States9
Number of La States0
Accept ::= attributesSub
1: attributesSub ::= attributes s? tagType
2: attributes ::=
3: attributes ::= attributes s attribute
6: tagType ::= emptyTag
7: tagType ::= contentTag
8: attribute ::= qName eq attValue
9: attribute ::= nsAttName eq attValue
10: emptyTag ::= '/'
11: contentTag ::=
12: eq ::= '='
13: attValue ::= quotAttValueStart
14: attValue ::= aposAttValueStart
15: quotAttValueStart ::= '"'
16: aposAttValueStart ::= '''
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]*)?'
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]*)?'
attributes->. (2)
attributesSub Goto 2
attributes Goto 3
'/' Reduce 2
Eof Reduce 2
Eof Reduce 0
attributesSub->attributes .s? tagType
attributes->attributes .s attribute
'/' Reduce 5
Eof Reduce 5
attributesSub->attributes s? .tagType
contentTag->. (11)
'/' Sh/Rd 10
contentTag Gt/Rd 7
Eof Reduce 11
attributes->attributes s .attribute
'/' Reduce 4
Eof Reduce 4
attribute->nsAttName .eq attValue
'=' Sh/Rd 12
'=' Sh/Rd 12
attribute->nsAttName eq .attValue
''' Sh/Rd 16
'"' Sh/Rd 15
aposAttValueStart Gt/Rd 14
quotAttValueStart Gt/Rd 13
''' Sh/Rd 16
'"' Sh/Rd 15
aposAttValueStart Gt/Rd 14
quotAttValueStart Gt/Rd 13
quotAttValueStart ==>> { '"'}
emptyTag ==>> { '/'}
contentTag ==>> { Empty}
attributesSub ==>> { s '/' Empty}
attribute ==>> { qName nsAttName}
aposAttValueStart ==>> { '''}
attributes ==>> { Empty s}
attValue ==>> { '"' '''}
eq ==>> { '='}
Accept ==>> { s '/' Eof(endTag)}
quotAttValueStart ==>> {}
emptyTag ==>> {}
tagType ==>> { contentTag emptyTag}
contentTag ==>> {}
attributesSub ==>> { attributes}
attribute ==>> {}
aposAttValueStart ==>> {}
attributes ==>> {}
s? ==>> {}
attValue ==>> { aposAttValueStart quotAttValueStart}
eq ==>> {}
Accept ==>> { attributes attributesSub}
quotAttValueStart ==>> false
emptyTag ==>> false
tagType ==>> true
contentTag ==>> true
attributesSub ==>> true
attribute ==>> false
aposAttValueStart ==>> false
attributes ==>> true
s? ==>> true
attValue ==>> false
eq ==>> false
Accept ==>> false