markdown/parser.leg.go
Michael Teichgräber 7ce3bfa5ad parser.leg.go: update
2011-07-04 18:48:17 +02:00

13759 lines
310 KiB
Go

/* Original C version https://github.com/jgm/peg-markdown/
* Copyright 2008 John MacFarlane (jgm at berkeley dot edu).
*
* Modifications and translation from C into Go
* based on markdown_parser.leg and utility_functions.c
* Copyright 2010 Michael Teichgräber (mt at wmipf dot de)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License or the MIT
* license. See LICENSE for details.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
package markdown
// PEG grammar and parser actions for markdown syntax.
import (
"fmt"
"strings"
"log"
"sync"
)
// Semantic value of a parsing action.
type element struct {
key int
contents
children *element
next *element
}
// Information (label, URL and title) for a link.
type link struct {
label *element
url string
title string
}
// Union for contents of an Element (string, list, or link).
type contents struct {
str string
*link
}
// Types of semantic values returned by parsers.
const (
LIST = iota /* A generic list of values. For ordered and bullet lists, see below. */
RAW /* Raw markdown to be processed further */
SPACE
LINEBREAK
ELLIPSIS
EMDASH
ENDASH
APOSTROPHE
SINGLEQUOTED
DOUBLEQUOTED
STR
LINK
IMAGE
CODE
HTML
EMPH
STRONG
PLAIN
PARA
LISTITEM
BULLETLIST
ORDEREDLIST
H1 /* Code assumes that H1..6 are in order. */
H2
H3
H4
H5
H6
BLOCKQUOTE
VERBATIM
HTMLBLOCK
HRULE
REFERENCE
NOTE
DEFINITIONLIST
DEFTITLE
DEFDATA
numVAL
)
type Doc struct {
parser *yyParser
extension Extensions
tree *element /* Results of parse. */
references *element /* List of link references found. */
notes *element /* List of footnotes found. */
}
const (
ruleDoc = iota
ruleBlock
rulePara
rulePlain
ruleAtxInline
ruleAtxStart
ruleAtxHeading
ruleSetextHeading
ruleSetextBottom1
ruleSetextBottom2
ruleSetextHeading1
ruleSetextHeading2
ruleHeading
ruleBlockQuote
ruleBlockQuoteRaw
ruleNonblankIndentedLine
ruleVerbatimChunk
ruleVerbatim
ruleHorizontalRule
ruleBullet
ruleBulletList
ruleListTight
ruleListLoose
ruleListItem
ruleListItemTight
ruleListBlock
ruleListContinuationBlock
ruleEnumerator
ruleOrderedList
ruleListBlockLine
ruleHtmlBlockOpenAddress
ruleHtmlBlockCloseAddress
ruleHtmlBlockAddress
ruleHtmlBlockOpenBlockquote
ruleHtmlBlockCloseBlockquote
ruleHtmlBlockBlockquote
ruleHtmlBlockOpenCenter
ruleHtmlBlockCloseCenter
ruleHtmlBlockCenter
ruleHtmlBlockOpenDir
ruleHtmlBlockCloseDir
ruleHtmlBlockDir
ruleHtmlBlockOpenDiv
ruleHtmlBlockCloseDiv
ruleHtmlBlockDiv
ruleHtmlBlockOpenDl
ruleHtmlBlockCloseDl
ruleHtmlBlockDl
ruleHtmlBlockOpenFieldset
ruleHtmlBlockCloseFieldset
ruleHtmlBlockFieldset
ruleHtmlBlockOpenForm
ruleHtmlBlockCloseForm
ruleHtmlBlockForm
ruleHtmlBlockOpenH1
ruleHtmlBlockCloseH1
ruleHtmlBlockH1
ruleHtmlBlockOpenH2
ruleHtmlBlockCloseH2
ruleHtmlBlockH2
ruleHtmlBlockOpenH3
ruleHtmlBlockCloseH3
ruleHtmlBlockH3
ruleHtmlBlockOpenH4
ruleHtmlBlockCloseH4
ruleHtmlBlockH4
ruleHtmlBlockOpenH5
ruleHtmlBlockCloseH5
ruleHtmlBlockH5
ruleHtmlBlockOpenH6
ruleHtmlBlockCloseH6
ruleHtmlBlockH6
ruleHtmlBlockOpenMenu
ruleHtmlBlockCloseMenu
ruleHtmlBlockMenu
ruleHtmlBlockOpenNoframes
ruleHtmlBlockCloseNoframes
ruleHtmlBlockNoframes
ruleHtmlBlockOpenNoscript
ruleHtmlBlockCloseNoscript
ruleHtmlBlockNoscript
ruleHtmlBlockOpenOl
ruleHtmlBlockCloseOl
ruleHtmlBlockOl
ruleHtmlBlockOpenP
ruleHtmlBlockCloseP
ruleHtmlBlockP
ruleHtmlBlockOpenPre
ruleHtmlBlockClosePre
ruleHtmlBlockPre
ruleHtmlBlockOpenTable
ruleHtmlBlockCloseTable
ruleHtmlBlockTable
ruleHtmlBlockOpenUl
ruleHtmlBlockCloseUl
ruleHtmlBlockUl
ruleHtmlBlockOpenDd
ruleHtmlBlockCloseDd
ruleHtmlBlockDd
ruleHtmlBlockOpenDt
ruleHtmlBlockCloseDt
ruleHtmlBlockDt
ruleHtmlBlockOpenFrameset
ruleHtmlBlockCloseFrameset
ruleHtmlBlockFrameset
ruleHtmlBlockOpenLi
ruleHtmlBlockCloseLi
ruleHtmlBlockLi
ruleHtmlBlockOpenTbody
ruleHtmlBlockCloseTbody
ruleHtmlBlockTbody
ruleHtmlBlockOpenTd
ruleHtmlBlockCloseTd
ruleHtmlBlockTd
ruleHtmlBlockOpenTfoot
ruleHtmlBlockCloseTfoot
ruleHtmlBlockTfoot
ruleHtmlBlockOpenTh
ruleHtmlBlockCloseTh
ruleHtmlBlockTh
ruleHtmlBlockOpenThead
ruleHtmlBlockCloseThead
ruleHtmlBlockThead
ruleHtmlBlockOpenTr
ruleHtmlBlockCloseTr
ruleHtmlBlockTr
ruleHtmlBlockOpenScript
ruleHtmlBlockCloseScript
ruleHtmlBlockScript
ruleHtmlBlockInTags
ruleHtmlBlock
ruleHtmlBlockSelfClosing
ruleHtmlBlockType
ruleStyleOpen
ruleStyleClose
ruleInStyleTags
ruleStyleBlock
ruleInlines
ruleInline
ruleSpace
ruleStr
ruleEscapedChar
ruleEntity
ruleEndline
ruleNormalEndline
ruleTerminalEndline
ruleLineBreak
ruleSymbol
ruleUlOrStarLine
ruleStarLine
ruleUlLine
ruleEmph
ruleOneStarOpen
ruleOneStarClose
ruleEmphStar
ruleOneUlOpen
ruleOneUlClose
ruleEmphUl
ruleStrong
ruleTwoStarOpen
ruleTwoStarClose
ruleStrongStar
ruleTwoUlOpen
ruleTwoUlClose
ruleStrongUl
ruleImage
ruleLink
ruleReferenceLink
ruleReferenceLinkDouble
ruleReferenceLinkSingle
ruleExplicitLink
ruleSource
ruleSourceContents
ruleTitle
ruleTitleSingle
ruleTitleDouble
ruleAutoLink
ruleAutoLinkUrl
ruleAutoLinkEmail
ruleReference
ruleLabel
ruleRefSrc
ruleRefTitle
ruleEmptyTitle
ruleRefTitleSingle
ruleRefTitleDouble
ruleRefTitleParens
ruleReferences
ruleTicks1
ruleTicks2
ruleTicks3
ruleTicks4
ruleTicks5
ruleCode
ruleRawHtml
ruleBlankLine
ruleQuoted
ruleHtmlAttribute
ruleHtmlComment
ruleHtmlTag
ruleEof
ruleSpacechar
ruleNonspacechar
ruleNewline
ruleSp
ruleSpnl
ruleSpecialChar
ruleNormalChar
ruleNonAlphanumeric
ruleAlphanumeric
ruleAlphanumericAscii
ruleDigit
ruleHexEntity
ruleDecEntity
ruleCharEntity
ruleNonindentSpace
ruleIndent
ruleIndentedLine
ruleOptionallyIndentedLine
ruleStartList
ruleLine
ruleRawLine
ruleSkipBlock
ruleExtendedSpecialChar
ruleSmart
ruleApostrophe
ruleEllipsis
ruleDash
ruleEnDash
ruleEmDash
ruleSingleQuoteStart
ruleSingleQuoteEnd
ruleSingleQuoted
ruleDoubleQuoteStart
ruleDoubleQuoteEnd
ruleDoubleQuoted
ruleNoteReference
ruleRawNoteReference
ruleNote
ruleInlineNote
ruleNotes
ruleRawNoteBlock
ruleDefinitionList
ruleDefinition
ruleDListTitle
ruleDefTight
ruleDefLoose
ruleDefmark
ruleDefMarker
)
type yyParser struct {*Doc
Buffer string
Min, Max int
rules [249]func() bool
ResetBuffer func(string) string
}
func (p *yyParser) Parse(ruleId int) bool {
if p.rules[ruleId]() {
return true
}
return false
}
func (p *yyParser) PrintError() {
line := 1
character := 0
for i, c := range p.Buffer[0:] {
if c == '\n' {
line++
character = 0
} else {
character++
}
if i == p.Min {
if p.Min != p.Max {
fmt.Printf("parse error after line %v character %v\n", line, character)
} else {
break
}
} else if i == p.Max {
break
}
}
fmt.Printf("parse error: unexpected ")
if p.Max >= len(p.Buffer) {
fmt.Printf("end of file found\n")
} else {
fmt.Printf("'%c' at line %v character %v\n", p.Buffer[p.Max], line, character)
}
}
func (p *yyParser) Init() {
var position int
var yyp int
var yy *element
var yyval = make([]*element, 200)
actions := [...]func(string, int){
/* 0 Doc */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 1 Doc */
func(yytext string, _ int) {
a := yyval[yyp-1]
p.tree = reverse(a)
yyval[yyp-1] = a
},
/* 2 Para */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = a; yy.key = PARA
yyval[yyp-1] = a
},
/* 3 Plain */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = a; yy.key = PLAIN
yyval[yyp-1] = a
},
/* 4 AtxStart */
func(yytext string, _ int) {
yy = mk_element(H1 + (len(yytext) - 1))
},
/* 5 AtxHeading */
func(yytext string, _ int) {
s := yyval[yyp-1]
a := yyval[yyp-2]
a = cons(yy, a)
yyval[yyp-1] = s
yyval[yyp-2] = a
},
/* 6 AtxHeading */
func(yytext string, _ int) {
s := yyval[yyp-1]
a := yyval[yyp-2]
yy = mk_list(s.key, a)
s = nil
yyval[yyp-1] = s
yyval[yyp-2] = a
},
/* 7 SetextHeading1 */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 8 SetextHeading1 */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(H1, a)
yyval[yyp-1] = a
},
/* 9 SetextHeading2 */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 10 SetextHeading2 */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(H2, a)
yyval[yyp-1] = a
},
/* 11 BlockQuote */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_element(BLOCKQUOTE)
yy.children = a
yyval[yyp-1] = a
},
/* 12 BlockQuoteRaw */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 13 BlockQuoteRaw */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 14 BlockQuoteRaw */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(mk_str("\n"), a)
yyval[yyp-1] = a
},
/* 15 BlockQuoteRaw */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_str_from_list(a, true)
yy.key = RAW
yyval[yyp-1] = a
},
/* 16 VerbatimChunk */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(mk_str("\n"), a)
yyval[yyp-1] = a
},
/* 17 VerbatimChunk */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 18 VerbatimChunk */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_str_from_list(a, false)
yyval[yyp-1] = a
},
/* 19 Verbatim */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 20 Verbatim */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_str_from_list(a, false)
yy.key = VERBATIM
yyval[yyp-1] = a
},
/* 21 HorizontalRule */
func(yytext string, _ int) {
yy = mk_element(HRULE)
},
/* 22 BulletList */
func(yytext string, _ int) {
yy.key = BULLETLIST
},
/* 23 ListTight */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 24 ListTight */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(LIST, a)
yyval[yyp-1] = a
},
/* 25 ListLoose */
func(yytext string, _ int) {
a := yyval[yyp-1]
b := yyval[yyp-2]
li := b.children
li.contents.str += "\n\n"
a = cons(b, a)
yyval[yyp-1] = a
yyval[yyp-2] = b
},
/* 26 ListLoose */
func(yytext string, _ int) {
a := yyval[yyp-1]
b := yyval[yyp-2]
yy = mk_list(LIST, a)
yyval[yyp-1] = a
yyval[yyp-2] = b
},
/* 27 ListItem */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 28 ListItem */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 29 ListItem */
func(yytext string, _ int) {
a := yyval[yyp-1]
raw := mk_str_from_list(a, false)
raw.key = RAW
yy = mk_element(LISTITEM)
yy.children = raw
yyval[yyp-1] = a
},
/* 30 ListItemTight */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 31 ListItemTight */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 32 ListItemTight */
func(yytext string, _ int) {
a := yyval[yyp-1]
raw := mk_str_from_list(a, false)
raw.key = RAW
yy = mk_element(LISTITEM)
yy.children = raw
yyval[yyp-1] = a
},
/* 33 ListBlock */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 34 ListBlock */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 35 ListBlock */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_str_from_list(a, false)
yyval[yyp-1] = a
},
/* 36 ListContinuationBlock */
func(yytext string, _ int) {
a := yyval[yyp-1]
if len(yytext) == 0 {
a = cons(mk_str("\001"), a) // block separator
} else {
a = cons(mk_str(yytext), a)
}
yyval[yyp-1] = a
},
/* 37 ListContinuationBlock */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 38 ListContinuationBlock */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_str_from_list(a, false)
yyval[yyp-1] = a
},
/* 39 OrderedList */
func(yytext string, _ int) {
yy.key = ORDEREDLIST
},
/* 40 HtmlBlock */
func(yytext string, _ int) {
if p.extension.FilterHTML {
yy = mk_list(LIST, nil)
} else {
yy = mk_str(yytext)
yy.key = HTMLBLOCK
}
},
/* 41 StyleBlock */
func(yytext string, _ int) {
if p.extension.FilterStyles {
yy = mk_list(LIST, nil)
} else {
yy = mk_str(yytext)
yy.key = HTMLBLOCK
}
},
/* 42 Inlines */
func(yytext string, _ int) {
c := yyval[yyp-1]
a := yyval[yyp-2]
a = cons(yy, a)
yyval[yyp-1] = c
yyval[yyp-2] = a
},
/* 43 Inlines */
func(yytext string, _ int) {
c := yyval[yyp-1]
a := yyval[yyp-2]
a = cons(c, a)
yyval[yyp-1] = c
yyval[yyp-2] = a
},
/* 44 Inlines */
func(yytext string, _ int) {
c := yyval[yyp-1]
a := yyval[yyp-2]
yy = mk_list(LIST, a)
yyval[yyp-1] = c
yyval[yyp-2] = a
},
/* 45 Space */
func(yytext string, _ int) {
yy = mk_str(" ")
yy.key = SPACE
},
/* 46 Str */
func(yytext string, _ int) {
yy = mk_str(yytext)
},
/* 47 EscapedChar */
func(yytext string, _ int) {
yy = mk_str(yytext)
},
/* 48 Entity */
func(yytext string, _ int) {
yy = mk_str(yytext); yy.key = HTML
},
/* 49 NormalEndline */
func(yytext string, _ int) {
yy = mk_str("\n")
yy.key = SPACE
},
/* 50 TerminalEndline */
func(yytext string, _ int) {
yy = nil
},
/* 51 LineBreak */
func(yytext string, _ int) {
yy = mk_element(LINEBREAK)
},
/* 52 Symbol */
func(yytext string, _ int) {
yy = mk_str(yytext)
},
/* 53 UlOrStarLine */
func(yytext string, _ int) {
yy = mk_str(yytext)
},
/* 54 OneStarClose */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = a
yyval[yyp-1] = a
},
/* 55 EmphStar */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 56 EmphStar */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 57 EmphStar */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(EMPH, a)
yyval[yyp-1] = a
},
/* 58 OneUlClose */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = a
yyval[yyp-1] = a
},
/* 59 EmphUl */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 60 EmphUl */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 61 EmphUl */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(EMPH, a)
yyval[yyp-1] = a
},
/* 62 TwoStarClose */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = a
yyval[yyp-1] = a
},
/* 63 StrongStar */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 64 StrongStar */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 65 StrongStar */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(STRONG, a)
yyval[yyp-1] = a
},
/* 66 TwoUlClose */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = a
yyval[yyp-1] = a
},
/* 67 StrongUl */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 68 StrongUl */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 69 StrongUl */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(STRONG, a)
yyval[yyp-1] = a
},
/* 70 Image */
func(yytext string, _ int) {
if yy.key == LINK {
yy.key = IMAGE
} else {
result := yy
yy.children = cons(mk_str("!"), result.children)
}
},
/* 71 ReferenceLinkDouble */
func(yytext string, _ int) {
a := yyval[yyp-1]
b := yyval[yyp-2]
if match, found := p.findReference(b.children); found {
yy = mk_link(a.children, match.url, match.title);
a = nil
b = nil
} else {
result := mk_element(LIST)
result.children = cons(mk_str("["), cons(a, cons(mk_str("]"), cons(mk_str(yytext),
cons(mk_str("["), cons(b, mk_str("]")))))))
yy = result
}
yyval[yyp-1] = a
yyval[yyp-2] = b
},
/* 72 ReferenceLinkSingle */
func(yytext string, _ int) {
a := yyval[yyp-1]
if match, found := p.findReference(a.children); found {
yy = mk_link(a.children, match.url, match.title)
a = nil
} else {
result := mk_element(LIST)
result.children = cons(mk_str("["), cons(a, cons(mk_str("]"), mk_str(yytext))));
yy = result
}
yyval[yyp-1] = a
},
/* 73 ExplicitLink */
func(yytext string, _ int) {
s := yyval[yyp-1]
l := yyval[yyp-2]
t := yyval[yyp-3]
yy = mk_link(l.children, s.contents.str, t.contents.str)
s = nil
t = nil
l = nil
yyval[yyp-1] = s
yyval[yyp-2] = l
yyval[yyp-3] = t
},
/* 74 Source */
func(yytext string, _ int) {
yy = mk_str(yytext)
},
/* 75 Title */
func(yytext string, _ int) {
yy = mk_str(yytext)
},
/* 76 AutoLinkUrl */
func(yytext string, _ int) {
yy = mk_link(mk_str(yytext), yytext, "")
},
/* 77 AutoLinkEmail */
func(yytext string, _ int) {
yy = mk_link(mk_str(yytext), "mailto:"+yytext, "")
},
/* 78 Reference */
func(yytext string, _ int) {
s := yyval[yyp-1]
l := yyval[yyp-2]
t := yyval[yyp-3]
yy = mk_link(l.children, s.contents.str, t.contents.str)
s = nil
t = nil
l = nil
yy.key = REFERENCE
yyval[yyp-1] = s
yyval[yyp-2] = l
yyval[yyp-3] = t
},
/* 79 Label */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 80 Label */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(LIST, a)
yyval[yyp-1] = a
},
/* 81 RefSrc */
func(yytext string, _ int) {
yy = mk_str(yytext)
yy.key = HTML
},
/* 82 RefTitle */
func(yytext string, _ int) {
yy = mk_str(yytext)
},
/* 83 References */
func(yytext string, _ int) {
a := yyval[yyp-1]
b := yyval[yyp-2]
a = cons(b, a)
yyval[yyp-1] = a
yyval[yyp-2] = b
},
/* 84 References */
func(yytext string, _ int) {
a := yyval[yyp-1]
b := yyval[yyp-2]
p.references = reverse(a)
yyval[yyp-1] = a
yyval[yyp-2] = b
},
/* 85 Code */
func(yytext string, _ int) {
yy = mk_str(yytext); yy.key = CODE
},
/* 86 RawHtml */
func(yytext string, _ int) {
if p.extension.FilterHTML {
yy = mk_list(LIST, nil)
} else {
yy = mk_str(yytext)
yy.key = HTML
}
},
/* 87 StartList */
func(yytext string, _ int) {
yy = nil
},
/* 88 Line */
func(yytext string, _ int) {
yy = mk_str(yytext)
},
/* 89 Apostrophe */
func(yytext string, _ int) {
yy = mk_element(APOSTROPHE)
},
/* 90 Ellipsis */
func(yytext string, _ int) {
yy = mk_element(ELLIPSIS)
},
/* 91 EnDash */
func(yytext string, _ int) {
yy = mk_element(ENDASH)
},
/* 92 EmDash */
func(yytext string, _ int) {
yy = mk_element(EMDASH)
},
/* 93 SingleQuoted */
func(yytext string, _ int) {
a := yyval[yyp-1]
b := yyval[yyp-2]
a = cons(b, a)
yyval[yyp-1] = a
yyval[yyp-2] = b
},
/* 94 SingleQuoted */
func(yytext string, _ int) {
a := yyval[yyp-1]
b := yyval[yyp-2]
yy = mk_list(SINGLEQUOTED, a)
yyval[yyp-1] = a
yyval[yyp-2] = b
},
/* 95 DoubleQuoted */
func(yytext string, _ int) {
a := yyval[yyp-1]
b := yyval[yyp-2]
a = cons(b, a)
yyval[yyp-1] = a
yyval[yyp-2] = b
},
/* 96 DoubleQuoted */
func(yytext string, _ int) {
a := yyval[yyp-1]
b := yyval[yyp-2]
yy = mk_list(DOUBLEQUOTED, a)
yyval[yyp-1] = a
yyval[yyp-2] = b
},
/* 97 NoteReference */
func(yytext string, _ int) {
ref := yyval[yyp-1]
if match, ok := p.find_note(ref.contents.str); ok {
yy = mk_element(NOTE)
yy.children = match.children
yy.contents.str = ""
} else {
yy = mk_str("[^"+ref.contents.str+"]")
}
yyval[yyp-1] = ref
},
/* 98 RawNoteReference */
func(yytext string, _ int) {
yy = mk_str(yytext)
},
/* 99 Note */
func(yytext string, _ int) {
ref := yyval[yyp-1]
a := yyval[yyp-2]
a = cons(yy, a)
yyval[yyp-1] = ref
yyval[yyp-2] = a
},
/* 100 Note */
func(yytext string, _ int) {
ref := yyval[yyp-1]
a := yyval[yyp-2]
a = cons(yy, a)
yyval[yyp-1] = ref
yyval[yyp-2] = a
},
/* 101 Note */
func(yytext string, _ int) {
ref := yyval[yyp-1]
a := yyval[yyp-2]
yy = mk_list(NOTE, a)
yy.contents.str = ref.contents.str
yyval[yyp-1] = ref
yyval[yyp-2] = a
},
/* 102 InlineNote */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 103 InlineNote */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(NOTE, a)
yy.contents.str = ""
yyval[yyp-1] = a
},
/* 104 Notes */
func(yytext string, _ int) {
a := yyval[yyp-1]
b := yyval[yyp-2]
a = cons(b, a)
yyval[yyp-1] = a
yyval[yyp-2] = b
},
/* 105 Notes */
func(yytext string, _ int) {
a := yyval[yyp-1]
b := yyval[yyp-2]
p.notes = reverse(a)
yyval[yyp-1] = a
yyval[yyp-2] = b
},
/* 106 RawNoteBlock */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 107 RawNoteBlock */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(mk_str(yytext), a)
yyval[yyp-1] = a
},
/* 108 RawNoteBlock */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_str_from_list(a, true)
yy.key = RAW
yyval[yyp-1] = a
},
/* 109 DefinitionList */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 110 DefinitionList */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(DEFINITIONLIST, a)
yyval[yyp-1] = a
},
/* 111 Definition */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 112 Definition */
func(yytext string, _ int) {
a := yyval[yyp-1]
for e := yy.children; e != nil; e = e.next {
e.key = DEFDATA
}
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 113 Definition */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(LIST, a)
yyval[yyp-1] = a
},
/* 114 DListTitle */
func(yytext string, _ int) {
a := yyval[yyp-1]
a = cons(yy, a)
yyval[yyp-1] = a
},
/* 115 DListTitle */
func(yytext string, _ int) {
a := yyval[yyp-1]
yy = mk_list(LIST, a)
yy.key = DEFTITLE
yyval[yyp-1] = a
},
/* 116 yyPush */
func(_ string, count int) {
yyp += count
if yyp >= len(yyval) {
s := make([]*element, cap(yyval)+200)
copy(s, yyval)
yyval = s
}
},
/* 117 yyPop */
func(_ string, count int) {
yyp -= count
},
/* 118 yySet */
func(_ string, count int) {
yyval[yyp+count] = yy
},
}
const (
yyPush = 116+iota
yyPop
yySet
)
var thunkPosition, begin, end int
thunks := make([]struct {action uint8; begin, end int}, 32)
doarg := func(action uint8, arg int) {
if thunkPosition == len(thunks) {
newThunks := make([]struct {action uint8; begin, end int}, 2 * len(thunks))
copy(newThunks, thunks)
thunks = newThunks
}
thunks[thunkPosition].action = action
if arg != 0 {
thunks[thunkPosition].begin = arg // use begin to store an argument
} else {
thunks[thunkPosition].begin = begin
}
thunks[thunkPosition].end = end
thunkPosition++
}
do := func(action uint8) {
doarg(action, 0)
}
p.ResetBuffer = func(s string) (old string) {
if p.Max < len(p.Buffer) {
old = p.Buffer[p.Max:]
}
p.Buffer = s
thunkPosition = 0
position = 0
p.Min = 0
p.Max = 0
return
}
commit := func(thunkPosition0 int) bool {
if thunkPosition0 == 0 {
for i := 0; i < thunkPosition; i++ {
b := thunks[i].begin
e := thunks[i].end
s := ""
if b>=0 && e<=len(p.Buffer) && b<=e {
s = p.Buffer[b:e]
}
magic := b
actions[thunks[i].action](s, magic)
}
p.Min = position
thunkPosition = 0
return true
}
return false
}
matchDot := func() bool {
if position < len(p.Buffer) {
position++
return true
} else if position >= p.Max {
p.Max = position
}
return false
}
peekDot := func() bool {
return position < len(p.Buffer)
}
_ = peekDot
matchChar := func(c byte) bool {
if (position < len(p.Buffer)) && (p.Buffer[position] == c) {
position++
return true
} else if position >= p.Max {
p.Max = position
}
return false
}
peekChar := func(c byte) bool {
return position < len(p.Buffer) && p.Buffer[position] == c
}
_ = peekChar
matchString := func(s string) bool {
length := len(s)
next := position + length
if (next <= len(p.Buffer)) && (p.Buffer[position:next] == s) {
position = next
return true
} else if position >= p.Max {
p.Max = position
}
return false
}
classes := [...][32]uint8{
{0, 0, 0, 0, 0, 0, 255, 3, 126, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 255, 3, 254, 255, 255, 7, 254, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 10, 111, 0, 80, 0, 0, 0, 184, 1, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 254, 255, 255, 7, 254, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 6, 0, 0, 3, 82, 0, 252, 0, 0, 0, 32, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 255, 3, 254, 255, 255, 7, 254, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 40, 255, 3, 254, 255, 255, 135, 254, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}
matchClass := func(class uint) bool {
if (position < len(p.Buffer)) &&
((classes[class][p.Buffer[position]>>3] & (1 << (p.Buffer[position] & 7))) != 0) {
position++
return true
} else if position >= p.Max {
p.Max = position
}
return false
}
p.rules = [...]func() bool{
/* 0 Doc <- (StartList (Block { a = cons(yy, a) })* { p.tree = reverse(a) } commit) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleStartList]() {
goto l0
}
doarg(yySet, -1)
l1:
{
position2, thunkPosition2 := position, thunkPosition
if !p.rules[ruleBlock]() {
goto l2
}
do(0)
goto l1
l2:
position, thunkPosition = position2, thunkPosition2
}
do(1)
if !(commit(thunkPosition0)) {
goto l0
}
doarg(yyPop, 1)
return true
l0:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 1 Block <- (BlankLine* (BlockQuote / Verbatim / Note / Reference / HorizontalRule / Heading / DefinitionList / OrderedList / BulletList / HtmlBlock / StyleBlock / Para / Plain)) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
l4:
{
position5, thunkPosition5 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l5
}
goto l4
l5:
position, thunkPosition = position5, thunkPosition5
}
{
position6, thunkPosition6 := position, thunkPosition
if !p.rules[ruleBlockQuote]() {
goto l7
}
goto l6
l7:
position, thunkPosition = position6, thunkPosition6
if !p.rules[ruleVerbatim]() {
goto l8
}
goto l6
l8:
position, thunkPosition = position6, thunkPosition6
if !p.rules[ruleNote]() {
goto l9
}
goto l6
l9:
position, thunkPosition = position6, thunkPosition6
if !p.rules[ruleReference]() {
goto l10
}
goto l6
l10:
position, thunkPosition = position6, thunkPosition6
if !p.rules[ruleHorizontalRule]() {
goto l11
}
goto l6
l11:
position, thunkPosition = position6, thunkPosition6
if !p.rules[ruleHeading]() {
goto l12
}
goto l6
l12:
position, thunkPosition = position6, thunkPosition6
if !p.rules[ruleDefinitionList]() {
goto l13
}
goto l6
l13:
position, thunkPosition = position6, thunkPosition6
if !p.rules[ruleOrderedList]() {
goto l14
}
goto l6
l14:
position, thunkPosition = position6, thunkPosition6
if !p.rules[ruleBulletList]() {
goto l15
}
goto l6
l15:
position, thunkPosition = position6, thunkPosition6
if !p.rules[ruleHtmlBlock]() {
goto l16
}
goto l6
l16:
position, thunkPosition = position6, thunkPosition6
if !p.rules[ruleStyleBlock]() {
goto l17
}
goto l6
l17:
position, thunkPosition = position6, thunkPosition6
if !p.rules[rulePara]() {
goto l18
}
goto l6
l18:
position, thunkPosition = position6, thunkPosition6
if !p.rules[rulePlain]() {
goto l3
}
}
l6:
return true
l3:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 2 Para <- (NonindentSpace Inlines BlankLine+ { yy = a; yy.key = PARA }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleNonindentSpace]() {
goto l19
}
if !p.rules[ruleInlines]() {
goto l19
}
doarg(yySet, -1)
if !p.rules[ruleBlankLine]() {
goto l19
}
l20:
{
position21, thunkPosition21 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l21
}
goto l20
l21:
position, thunkPosition = position21, thunkPosition21
}
do(2)
doarg(yyPop, 1)
return true
l19:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 3 Plain <- (Inlines { yy = a; yy.key = PLAIN }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleInlines]() {
goto l22
}
doarg(yySet, -1)
do(3)
doarg(yyPop, 1)
return true
l22:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 4 AtxInline <- (!Newline !(Sp? '#'* Sp Newline) Inline) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position24, thunkPosition24 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l24
}
goto l23
l24:
position, thunkPosition = position24, thunkPosition24
}
{
position25, thunkPosition25 := position, thunkPosition
{
position26, thunkPosition26 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l26
}
goto l27
l26:
position, thunkPosition = position26, thunkPosition26
}
l27:
l28:
{
position29, thunkPosition29 := position, thunkPosition
if !matchChar('#') {
goto l29
}
goto l28
l29:
position, thunkPosition = position29, thunkPosition29
}
if !p.rules[ruleSp]() {
goto l25
}
if !p.rules[ruleNewline]() {
goto l25
}
goto l23
l25:
position, thunkPosition = position25, thunkPosition25
}
if !p.rules[ruleInline]() {
goto l23
}
return true
l23:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 5 AtxStart <- (&'#' < ('######' / '#####' / '####' / '###' / '##' / '#') > { yy = mk_element(H1 + (len(yytext) - 1)) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !peekChar('#') {
goto l30
}
begin = position
{
position31, thunkPosition31 := position, thunkPosition
if !matchString("######") {
goto l32
}
goto l31
l32:
position, thunkPosition = position31, thunkPosition31
if !matchString("#####") {
goto l33
}
goto l31
l33:
position, thunkPosition = position31, thunkPosition31
if !matchString("####") {
goto l34
}
goto l31
l34:
position, thunkPosition = position31, thunkPosition31
if !matchString("###") {
goto l35
}
goto l31
l35:
position, thunkPosition = position31, thunkPosition31
if !matchString("##") {
goto l36
}
goto l31
l36:
position, thunkPosition = position31, thunkPosition31
if !matchChar('#') {
goto l30
}
}
l31:
end = position
do(4)
return true
l30:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 6 AtxHeading <- (AtxStart Sp? StartList (AtxInline { a = cons(yy, a) })+ (Sp? '#'* Sp)? Newline { yy = mk_list(s.key, a)
s = nil }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 2)
if !p.rules[ruleAtxStart]() {
goto l37
}
doarg(yySet, -1)
{
position38, thunkPosition38 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l38
}
goto l39
l38:
position, thunkPosition = position38, thunkPosition38
}
l39:
if !p.rules[ruleStartList]() {
goto l37
}
doarg(yySet, -2)
if !p.rules[ruleAtxInline]() {
goto l37
}
do(5)
l40:
{
position41, thunkPosition41 := position, thunkPosition
if !p.rules[ruleAtxInline]() {
goto l41
}
do(5)
goto l40
l41:
position, thunkPosition = position41, thunkPosition41
}
{
position42, thunkPosition42 := position, thunkPosition
{
position44, thunkPosition44 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l44
}
goto l45
l44:
position, thunkPosition = position44, thunkPosition44
}
l45:
l46:
{
position47, thunkPosition47 := position, thunkPosition
if !matchChar('#') {
goto l47
}
goto l46
l47:
position, thunkPosition = position47, thunkPosition47
}
if !p.rules[ruleSp]() {
goto l42
}
goto l43
l42:
position, thunkPosition = position42, thunkPosition42
}
l43:
if !p.rules[ruleNewline]() {
goto l37
}
do(6)
doarg(yyPop, 2)
return true
l37:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 7 SetextHeading <- (SetextHeading1 / SetextHeading2) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position49, thunkPosition49 := position, thunkPosition
if !p.rules[ruleSetextHeading1]() {
goto l50
}
goto l49
l50:
position, thunkPosition = position49, thunkPosition49
if !p.rules[ruleSetextHeading2]() {
goto l48
}
}
l49:
return true
l48:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 8 SetextBottom1 <- ('===' '='* Newline) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchString("===") {
goto l51
}
l52:
{
position53, thunkPosition53 := position, thunkPosition
if !matchChar('=') {
goto l53
}
goto l52
l53:
position, thunkPosition = position53, thunkPosition53
}
if !p.rules[ruleNewline]() {
goto l51
}
return true
l51:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 9 SetextBottom2 <- ('---' '-'* Newline) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchString("---") {
goto l54
}
l55:
{
position56, thunkPosition56 := position, thunkPosition
if !matchChar('-') {
goto l56
}
goto l55
l56:
position, thunkPosition = position56, thunkPosition56
}
if !p.rules[ruleNewline]() {
goto l54
}
return true
l54:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 10 SetextHeading1 <- (&(RawLine SetextBottom1) StartList (!Endline Inline { a = cons(yy, a) })+ Newline SetextBottom1 { yy = mk_list(H1, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
{
position58, thunkPosition58 := position, thunkPosition
if !p.rules[ruleRawLine]() {
goto l57
}
if !p.rules[ruleSetextBottom1]() {
goto l57
}
position, thunkPosition = position58, thunkPosition58
}
if !p.rules[ruleStartList]() {
goto l57
}
doarg(yySet, -1)
{
position61, thunkPosition61 := position, thunkPosition
if !p.rules[ruleEndline]() {
goto l61
}
goto l57
l61:
position, thunkPosition = position61, thunkPosition61
}
if !p.rules[ruleInline]() {
goto l57
}
do(7)
l59:
{
position60, thunkPosition60 := position, thunkPosition
{
position62, thunkPosition62 := position, thunkPosition
if !p.rules[ruleEndline]() {
goto l62
}
goto l60
l62:
position, thunkPosition = position62, thunkPosition62
}
if !p.rules[ruleInline]() {
goto l60
}
do(7)
goto l59
l60:
position, thunkPosition = position60, thunkPosition60
}
if !p.rules[ruleNewline]() {
goto l57
}
if !p.rules[ruleSetextBottom1]() {
goto l57
}
do(8)
doarg(yyPop, 1)
return true
l57:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 11 SetextHeading2 <- (&(RawLine SetextBottom2) StartList (!Endline Inline { a = cons(yy, a) })+ Newline SetextBottom2 { yy = mk_list(H2, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
{
position64, thunkPosition64 := position, thunkPosition
if !p.rules[ruleRawLine]() {
goto l63
}
if !p.rules[ruleSetextBottom2]() {
goto l63
}
position, thunkPosition = position64, thunkPosition64
}
if !p.rules[ruleStartList]() {
goto l63
}
doarg(yySet, -1)
{
position67, thunkPosition67 := position, thunkPosition
if !p.rules[ruleEndline]() {
goto l67
}
goto l63
l67:
position, thunkPosition = position67, thunkPosition67
}
if !p.rules[ruleInline]() {
goto l63
}
do(9)
l65:
{
position66, thunkPosition66 := position, thunkPosition
{
position68, thunkPosition68 := position, thunkPosition
if !p.rules[ruleEndline]() {
goto l68
}
goto l66
l68:
position, thunkPosition = position68, thunkPosition68
}
if !p.rules[ruleInline]() {
goto l66
}
do(9)
goto l65
l66:
position, thunkPosition = position66, thunkPosition66
}
if !p.rules[ruleNewline]() {
goto l63
}
if !p.rules[ruleSetextBottom2]() {
goto l63
}
do(10)
doarg(yyPop, 1)
return true
l63:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 12 Heading <- (AtxHeading / SetextHeading) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position70, thunkPosition70 := position, thunkPosition
if !p.rules[ruleAtxHeading]() {
goto l71
}
goto l70
l71:
position, thunkPosition = position70, thunkPosition70
if !p.rules[ruleSetextHeading]() {
goto l69
}
}
l70:
return true
l69:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 13 BlockQuote <- (BlockQuoteRaw { yy = mk_element(BLOCKQUOTE)
yy.children = a
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleBlockQuoteRaw]() {
goto l72
}
doarg(yySet, -1)
do(11)
doarg(yyPop, 1)
return true
l72:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 14 BlockQuoteRaw <- (StartList ('>' ' '? Line { a = cons(yy, a) } (!'>' !BlankLine Line { a = cons(yy, a) })* (BlankLine { a = cons(mk_str("\n"), a) })*)+ { yy = mk_str_from_list(a, true)
yy.key = RAW
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleStartList]() {
goto l73
}
doarg(yySet, -1)
if !matchChar('>') {
goto l73
}
{
position76, thunkPosition76 := position, thunkPosition
if !matchChar(' ') {
goto l76
}
goto l77
l76:
position, thunkPosition = position76, thunkPosition76
}
l77:
if !p.rules[ruleLine]() {
goto l73
}
do(12)
l78:
{
position79, thunkPosition79 := position, thunkPosition
if peekChar('>') {
goto l79
}
{
position80, thunkPosition80 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l80
}
goto l79
l80:
position, thunkPosition = position80, thunkPosition80
}
if !p.rules[ruleLine]() {
goto l79
}
do(13)
goto l78
l79:
position, thunkPosition = position79, thunkPosition79
}
l81:
{
position82, thunkPosition82 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l82
}
do(14)
goto l81
l82:
position, thunkPosition = position82, thunkPosition82
}
l74:
{
position75, thunkPosition75 := position, thunkPosition
if !matchChar('>') {
goto l75
}
{
position83, thunkPosition83 := position, thunkPosition
if !matchChar(' ') {
goto l83
}
goto l84
l83:
position, thunkPosition = position83, thunkPosition83
}
l84:
if !p.rules[ruleLine]() {
goto l75
}
do(12)
l85:
{
position86, thunkPosition86 := position, thunkPosition
if peekChar('>') {
goto l86
}
{
position87, thunkPosition87 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l87
}
goto l86
l87:
position, thunkPosition = position87, thunkPosition87
}
if !p.rules[ruleLine]() {
goto l86
}
do(13)
goto l85
l86:
position, thunkPosition = position86, thunkPosition86
}
l88:
{
position89, thunkPosition89 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l89
}
do(14)
goto l88
l89:
position, thunkPosition = position89, thunkPosition89
}
goto l74
l75:
position, thunkPosition = position75, thunkPosition75
}
do(15)
doarg(yyPop, 1)
return true
l73:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 15 NonblankIndentedLine <- (!BlankLine IndentedLine) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position91, thunkPosition91 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l91
}
goto l90
l91:
position, thunkPosition = position91, thunkPosition91
}
if !p.rules[ruleIndentedLine]() {
goto l90
}
return true
l90:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 16 VerbatimChunk <- (StartList (BlankLine { a = cons(mk_str("\n"), a) })* (NonblankIndentedLine { a = cons(yy, a) })+ { yy = mk_str_from_list(a, false) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleStartList]() {
goto l92
}
doarg(yySet, -1)
l93:
{
position94, thunkPosition94 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l94
}
do(16)
goto l93
l94:
position, thunkPosition = position94, thunkPosition94
}
if !p.rules[ruleNonblankIndentedLine]() {
goto l92
}
do(17)
l95:
{
position96, thunkPosition96 := position, thunkPosition
if !p.rules[ruleNonblankIndentedLine]() {
goto l96
}
do(17)
goto l95
l96:
position, thunkPosition = position96, thunkPosition96
}
do(18)
doarg(yyPop, 1)
return true
l92:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 17 Verbatim <- (StartList (VerbatimChunk { a = cons(yy, a) })+ { yy = mk_str_from_list(a, false)
yy.key = VERBATIM }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleStartList]() {
goto l97
}
doarg(yySet, -1)
if !p.rules[ruleVerbatimChunk]() {
goto l97
}
do(19)
l98:
{
position99, thunkPosition99 := position, thunkPosition
if !p.rules[ruleVerbatimChunk]() {
goto l99
}
do(19)
goto l98
l99:
position, thunkPosition = position99, thunkPosition99
}
do(20)
doarg(yyPop, 1)
return true
l97:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 18 HorizontalRule <- (NonindentSpace ((&[_] ('_' Sp '_' Sp '_' (Sp '_')*)) | (&[\-] ('-' Sp '-' Sp '-' (Sp '-')*)) | (&[*] ('*' Sp '*' Sp '*' (Sp '*')*))) Sp Newline BlankLine+ { yy = mk_element(HRULE) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleNonindentSpace]() {
goto l100
}
{
if position == len(p.Buffer) {
goto l100
}
switch p.Buffer[position] {
case '_':
if !matchChar('_') {
goto l100
}
if !p.rules[ruleSp]() {
goto l100
}
if !matchChar('_') {
goto l100
}
if !p.rules[ruleSp]() {
goto l100
}
if !matchChar('_') {
goto l100
}
l102:
{
position103, thunkPosition103 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l103
}
if !matchChar('_') {
goto l103
}
goto l102
l103:
position, thunkPosition = position103, thunkPosition103
}
case '-':
if !matchChar('-') {
goto l100
}
if !p.rules[ruleSp]() {
goto l100
}
if !matchChar('-') {
goto l100
}
if !p.rules[ruleSp]() {
goto l100
}
if !matchChar('-') {
goto l100
}
l104:
{
position105, thunkPosition105 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l105
}
if !matchChar('-') {
goto l105
}
goto l104
l105:
position, thunkPosition = position105, thunkPosition105
}
default:
if !matchChar('*') {
goto l100
}
if !p.rules[ruleSp]() {
goto l100
}
if !matchChar('*') {
goto l100
}
if !p.rules[ruleSp]() {
goto l100
}
if !matchChar('*') {
goto l100
}
l106:
{
position107, thunkPosition107 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l107
}
if !matchChar('*') {
goto l107
}
goto l106
l107:
position, thunkPosition = position107, thunkPosition107
}
}
}
if !p.rules[ruleSp]() {
goto l100
}
if !p.rules[ruleNewline]() {
goto l100
}
if !p.rules[ruleBlankLine]() {
goto l100
}
l108:
{
position109, thunkPosition109 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l109
}
goto l108
l109:
position, thunkPosition = position109, thunkPosition109
}
do(21)
return true
l100:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 19 Bullet <- (!HorizontalRule NonindentSpace ((&[\-] '-') | (&[*] '*') | (&[+] '+')) Spacechar+) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position111, thunkPosition111 := position, thunkPosition
if !p.rules[ruleHorizontalRule]() {
goto l111
}
goto l110
l111:
position, thunkPosition = position111, thunkPosition111
}
if !p.rules[ruleNonindentSpace]() {
goto l110
}
{
if position == len(p.Buffer) {
goto l110
}
switch p.Buffer[position] {
case '-':
if !matchChar('-') {
goto l110
}
case '*':
if !matchChar('*') {
goto l110
}
default:
if !matchChar('+') {
goto l110
}
}
}
if !p.rules[ruleSpacechar]() {
goto l110
}
l113:
{
position114, thunkPosition114 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l114
}
goto l113
l114:
position, thunkPosition = position114, thunkPosition114
}
return true
l110:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 20 BulletList <- (&Bullet (ListTight / ListLoose) { yy.key = BULLETLIST }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position116, thunkPosition116 := position, thunkPosition
if !p.rules[ruleBullet]() {
goto l115
}
position, thunkPosition = position116, thunkPosition116
}
{
position117, thunkPosition117 := position, thunkPosition
if !p.rules[ruleListTight]() {
goto l118
}
goto l117
l118:
position, thunkPosition = position117, thunkPosition117
if !p.rules[ruleListLoose]() {
goto l115
}
}
l117:
do(22)
return true
l115:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 21 ListTight <- (StartList (ListItemTight { a = cons(yy, a) })+ BlankLine* !(Bullet / Enumerator / DefMarker) { yy = mk_list(LIST, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleStartList]() {
goto l119
}
doarg(yySet, -1)
if !p.rules[ruleListItemTight]() {
goto l119
}
do(23)
l120:
{
position121, thunkPosition121 := position, thunkPosition
if !p.rules[ruleListItemTight]() {
goto l121
}
do(23)
goto l120
l121:
position, thunkPosition = position121, thunkPosition121
}
l122:
{
position123, thunkPosition123 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l123
}
goto l122
l123:
position, thunkPosition = position123, thunkPosition123
}
{
position124, thunkPosition124 := position, thunkPosition
{
position125, thunkPosition125 := position, thunkPosition
if !p.rules[ruleBullet]() {
goto l126
}
goto l125
l126:
position, thunkPosition = position125, thunkPosition125
if !p.rules[ruleEnumerator]() {
goto l127
}
goto l125
l127:
position, thunkPosition = position125, thunkPosition125
if !p.rules[ruleDefMarker]() {
goto l124
}
}
l125:
goto l119
l124:
position, thunkPosition = position124, thunkPosition124
}
do(24)
doarg(yyPop, 1)
return true
l119:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 22 ListLoose <- (StartList (ListItem BlankLine* {
li := b.children
li.contents.str += "\n\n"
a = cons(b, a)
})+ { yy = mk_list(LIST, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 2)
if !p.rules[ruleStartList]() {
goto l128
}
doarg(yySet, -1)
if !p.rules[ruleListItem]() {
goto l128
}
doarg(yySet, -2)
l131:
{
position132, thunkPosition132 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l132
}
goto l131
l132:
position, thunkPosition = position132, thunkPosition132
}
do(25)
l129:
{
position130, thunkPosition130 := position, thunkPosition
if !p.rules[ruleListItem]() {
goto l130
}
doarg(yySet, -2)
l133:
{
position134, thunkPosition134 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l134
}
goto l133
l134:
position, thunkPosition = position134, thunkPosition134
}
do(25)
goto l129
l130:
position, thunkPosition = position130, thunkPosition130
}
do(26)
doarg(yyPop, 2)
return true
l128:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 23 ListItem <- ((Bullet / Enumerator / DefMarker) StartList ListBlock { a = cons(yy, a) } (ListContinuationBlock { a = cons(yy, a) })* {
raw := mk_str_from_list(a, false)
raw.key = RAW
yy = mk_element(LISTITEM)
yy.children = raw
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
{
position136, thunkPosition136 := position, thunkPosition
if !p.rules[ruleBullet]() {
goto l137
}
goto l136
l137:
position, thunkPosition = position136, thunkPosition136
if !p.rules[ruleEnumerator]() {
goto l138
}
goto l136
l138:
position, thunkPosition = position136, thunkPosition136
if !p.rules[ruleDefMarker]() {
goto l135
}
}
l136:
if !p.rules[ruleStartList]() {
goto l135
}
doarg(yySet, -1)
if !p.rules[ruleListBlock]() {
goto l135
}
do(27)
l139:
{
position140, thunkPosition140 := position, thunkPosition
if !p.rules[ruleListContinuationBlock]() {
goto l140
}
do(28)
goto l139
l140:
position, thunkPosition = position140, thunkPosition140
}
do(29)
doarg(yyPop, 1)
return true
l135:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 24 ListItemTight <- ((Bullet / Enumerator / DefMarker) StartList ListBlock { a = cons(yy, a) } (!BlankLine ListContinuationBlock { a = cons(yy, a) })* !ListContinuationBlock {
raw := mk_str_from_list(a, false)
raw.key = RAW
yy = mk_element(LISTITEM)
yy.children = raw
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
{
position142, thunkPosition142 := position, thunkPosition
if !p.rules[ruleBullet]() {
goto l143
}
goto l142
l143:
position, thunkPosition = position142, thunkPosition142
if !p.rules[ruleEnumerator]() {
goto l144
}
goto l142
l144:
position, thunkPosition = position142, thunkPosition142
if !p.rules[ruleDefMarker]() {
goto l141
}
}
l142:
if !p.rules[ruleStartList]() {
goto l141
}
doarg(yySet, -1)
if !p.rules[ruleListBlock]() {
goto l141
}
do(30)
l145:
{
position146, thunkPosition146 := position, thunkPosition
{
position147, thunkPosition147 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l147
}
goto l146
l147:
position, thunkPosition = position147, thunkPosition147
}
if !p.rules[ruleListContinuationBlock]() {
goto l146
}
do(31)
goto l145
l146:
position, thunkPosition = position146, thunkPosition146
}
{
position148, thunkPosition148 := position, thunkPosition
if !p.rules[ruleListContinuationBlock]() {
goto l148
}
goto l141
l148:
position, thunkPosition = position148, thunkPosition148
}
do(32)
doarg(yyPop, 1)
return true
l141:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 25 ListBlock <- (StartList !BlankLine Line { a = cons(yy, a) } (ListBlockLine { a = cons(yy, a) })* { yy = mk_str_from_list(a, false) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleStartList]() {
goto l149
}
doarg(yySet, -1)
{
position150, thunkPosition150 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l150
}
goto l149
l150:
position, thunkPosition = position150, thunkPosition150
}
if !p.rules[ruleLine]() {
goto l149
}
do(33)
l151:
{
position152, thunkPosition152 := position, thunkPosition
if !p.rules[ruleListBlockLine]() {
goto l152
}
do(34)
goto l151
l152:
position, thunkPosition = position152, thunkPosition152
}
do(35)
doarg(yyPop, 1)
return true
l149:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 26 ListContinuationBlock <- (StartList (< BlankLine* > { if len(yytext) == 0 {
a = cons(mk_str("\001"), a) // block separator
} else {
a = cons(mk_str(yytext), a)
}
}) (Indent ListBlock { a = cons(yy, a) })+ { yy = mk_str_from_list(a, false) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleStartList]() {
goto l153
}
doarg(yySet, -1)
begin = position
l154:
{
position155, thunkPosition155 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l155
}
goto l154
l155:
position, thunkPosition = position155, thunkPosition155
}
end = position
do(36)
if !p.rules[ruleIndent]() {
goto l153
}
if !p.rules[ruleListBlock]() {
goto l153
}
do(37)
l156:
{
position157, thunkPosition157 := position, thunkPosition
if !p.rules[ruleIndent]() {
goto l157
}
if !p.rules[ruleListBlock]() {
goto l157
}
do(37)
goto l156
l157:
position, thunkPosition = position157, thunkPosition157
}
do(38)
doarg(yyPop, 1)
return true
l153:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 27 Enumerator <- (NonindentSpace [0-9]+ '.' Spacechar+) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleNonindentSpace]() {
goto l158
}
if !matchClass(7) {
goto l158
}
l159:
{
position160, thunkPosition160 := position, thunkPosition
if !matchClass(7) {
goto l160
}
goto l159
l160:
position, thunkPosition = position160, thunkPosition160
}
if !matchChar('.') {
goto l158
}
if !p.rules[ruleSpacechar]() {
goto l158
}
l161:
{
position162, thunkPosition162 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l162
}
goto l161
l162:
position, thunkPosition = position162, thunkPosition162
}
return true
l158:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 28 OrderedList <- (&Enumerator (ListTight / ListLoose) { yy.key = ORDEREDLIST }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position164, thunkPosition164 := position, thunkPosition
if !p.rules[ruleEnumerator]() {
goto l163
}
position, thunkPosition = position164, thunkPosition164
}
{
position165, thunkPosition165 := position, thunkPosition
if !p.rules[ruleListTight]() {
goto l166
}
goto l165
l166:
position, thunkPosition = position165, thunkPosition165
if !p.rules[ruleListLoose]() {
goto l163
}
}
l165:
do(39)
return true
l163:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 29 ListBlockLine <- (!BlankLine !((Indent? (Bullet / Enumerator)) / DefMarker) !HorizontalRule OptionallyIndentedLine) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position168, thunkPosition168 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l168
}
goto l167
l168:
position, thunkPosition = position168, thunkPosition168
}
{
position169, thunkPosition169 := position, thunkPosition
{
position170, thunkPosition170 := position, thunkPosition
{
position172, thunkPosition172 := position, thunkPosition
if !p.rules[ruleIndent]() {
goto l172
}
goto l173
l172:
position, thunkPosition = position172, thunkPosition172
}
l173:
{
position174, thunkPosition174 := position, thunkPosition
if !p.rules[ruleBullet]() {
goto l175
}
goto l174
l175:
position, thunkPosition = position174, thunkPosition174
if !p.rules[ruleEnumerator]() {
goto l171
}
}
l174:
goto l170
l171:
position, thunkPosition = position170, thunkPosition170
if !p.rules[ruleDefMarker]() {
goto l169
}
}
l170:
goto l167
l169:
position, thunkPosition = position169, thunkPosition169
}
{
position176, thunkPosition176 := position, thunkPosition
if !p.rules[ruleHorizontalRule]() {
goto l176
}
goto l167
l176:
position, thunkPosition = position176, thunkPosition176
}
if !p.rules[ruleOptionallyIndentedLine]() {
goto l167
}
return true
l167:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 30 HtmlBlockOpenAddress <- ('<' Spnl ('address' / 'ADDRESS') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l177
}
if !p.rules[ruleSpnl]() {
goto l177
}
{
position178, thunkPosition178 := position, thunkPosition
if !matchString("address") {
goto l179
}
goto l178
l179:
position, thunkPosition = position178, thunkPosition178
if !matchString("ADDRESS") {
goto l177
}
}
l178:
if !p.rules[ruleSpnl]() {
goto l177
}
l180:
{
position181, thunkPosition181 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l181
}
goto l180
l181:
position, thunkPosition = position181, thunkPosition181
}
if !matchChar('>') {
goto l177
}
return true
l177:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 31 HtmlBlockCloseAddress <- ('<' Spnl '/' ('address' / 'ADDRESS') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l182
}
if !p.rules[ruleSpnl]() {
goto l182
}
if !matchChar('/') {
goto l182
}
{
position183, thunkPosition183 := position, thunkPosition
if !matchString("address") {
goto l184
}
goto l183
l184:
position, thunkPosition = position183, thunkPosition183
if !matchString("ADDRESS") {
goto l182
}
}
l183:
if !p.rules[ruleSpnl]() {
goto l182
}
if !matchChar('>') {
goto l182
}
return true
l182:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 32 HtmlBlockAddress <- (HtmlBlockOpenAddress (HtmlBlockAddress / (!HtmlBlockCloseAddress .))* HtmlBlockCloseAddress) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenAddress]() {
goto l185
}
l186:
{
position187, thunkPosition187 := position, thunkPosition
{
position188, thunkPosition188 := position, thunkPosition
if !p.rules[ruleHtmlBlockAddress]() {
goto l189
}
goto l188
l189:
position, thunkPosition = position188, thunkPosition188
{
position190, thunkPosition190 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseAddress]() {
goto l190
}
goto l187
l190:
position, thunkPosition = position190, thunkPosition190
}
if !matchDot() {
goto l187
}
}
l188:
goto l186
l187:
position, thunkPosition = position187, thunkPosition187
}
if !p.rules[ruleHtmlBlockCloseAddress]() {
goto l185
}
return true
l185:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 33 HtmlBlockOpenBlockquote <- ('<' Spnl ('blockquote' / 'BLOCKQUOTE') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l191
}
if !p.rules[ruleSpnl]() {
goto l191
}
{
position192, thunkPosition192 := position, thunkPosition
if !matchString("blockquote") {
goto l193
}
goto l192
l193:
position, thunkPosition = position192, thunkPosition192
if !matchString("BLOCKQUOTE") {
goto l191
}
}
l192:
if !p.rules[ruleSpnl]() {
goto l191
}
l194:
{
position195, thunkPosition195 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l195
}
goto l194
l195:
position, thunkPosition = position195, thunkPosition195
}
if !matchChar('>') {
goto l191
}
return true
l191:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 34 HtmlBlockCloseBlockquote <- ('<' Spnl '/' ('blockquote' / 'BLOCKQUOTE') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l196
}
if !p.rules[ruleSpnl]() {
goto l196
}
if !matchChar('/') {
goto l196
}
{
position197, thunkPosition197 := position, thunkPosition
if !matchString("blockquote") {
goto l198
}
goto l197
l198:
position, thunkPosition = position197, thunkPosition197
if !matchString("BLOCKQUOTE") {
goto l196
}
}
l197:
if !p.rules[ruleSpnl]() {
goto l196
}
if !matchChar('>') {
goto l196
}
return true
l196:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 35 HtmlBlockBlockquote <- (HtmlBlockOpenBlockquote (HtmlBlockBlockquote / (!HtmlBlockCloseBlockquote .))* HtmlBlockCloseBlockquote) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenBlockquote]() {
goto l199
}
l200:
{
position201, thunkPosition201 := position, thunkPosition
{
position202, thunkPosition202 := position, thunkPosition
if !p.rules[ruleHtmlBlockBlockquote]() {
goto l203
}
goto l202
l203:
position, thunkPosition = position202, thunkPosition202
{
position204, thunkPosition204 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseBlockquote]() {
goto l204
}
goto l201
l204:
position, thunkPosition = position204, thunkPosition204
}
if !matchDot() {
goto l201
}
}
l202:
goto l200
l201:
position, thunkPosition = position201, thunkPosition201
}
if !p.rules[ruleHtmlBlockCloseBlockquote]() {
goto l199
}
return true
l199:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 36 HtmlBlockOpenCenter <- ('<' Spnl ('center' / 'CENTER') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l205
}
if !p.rules[ruleSpnl]() {
goto l205
}
{
position206, thunkPosition206 := position, thunkPosition
if !matchString("center") {
goto l207
}
goto l206
l207:
position, thunkPosition = position206, thunkPosition206
if !matchString("CENTER") {
goto l205
}
}
l206:
if !p.rules[ruleSpnl]() {
goto l205
}
l208:
{
position209, thunkPosition209 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l209
}
goto l208
l209:
position, thunkPosition = position209, thunkPosition209
}
if !matchChar('>') {
goto l205
}
return true
l205:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 37 HtmlBlockCloseCenter <- ('<' Spnl '/' ('center' / 'CENTER') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l210
}
if !p.rules[ruleSpnl]() {
goto l210
}
if !matchChar('/') {
goto l210
}
{
position211, thunkPosition211 := position, thunkPosition
if !matchString("center") {
goto l212
}
goto l211
l212:
position, thunkPosition = position211, thunkPosition211
if !matchString("CENTER") {
goto l210
}
}
l211:
if !p.rules[ruleSpnl]() {
goto l210
}
if !matchChar('>') {
goto l210
}
return true
l210:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 38 HtmlBlockCenter <- (HtmlBlockOpenCenter (HtmlBlockCenter / (!HtmlBlockCloseCenter .))* HtmlBlockCloseCenter) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenCenter]() {
goto l213
}
l214:
{
position215, thunkPosition215 := position, thunkPosition
{
position216, thunkPosition216 := position, thunkPosition
if !p.rules[ruleHtmlBlockCenter]() {
goto l217
}
goto l216
l217:
position, thunkPosition = position216, thunkPosition216
{
position218, thunkPosition218 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseCenter]() {
goto l218
}
goto l215
l218:
position, thunkPosition = position218, thunkPosition218
}
if !matchDot() {
goto l215
}
}
l216:
goto l214
l215:
position, thunkPosition = position215, thunkPosition215
}
if !p.rules[ruleHtmlBlockCloseCenter]() {
goto l213
}
return true
l213:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 39 HtmlBlockOpenDir <- ('<' Spnl ('dir' / 'DIR') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l219
}
if !p.rules[ruleSpnl]() {
goto l219
}
{
position220, thunkPosition220 := position, thunkPosition
if !matchString("dir") {
goto l221
}
goto l220
l221:
position, thunkPosition = position220, thunkPosition220
if !matchString("DIR") {
goto l219
}
}
l220:
if !p.rules[ruleSpnl]() {
goto l219
}
l222:
{
position223, thunkPosition223 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l223
}
goto l222
l223:
position, thunkPosition = position223, thunkPosition223
}
if !matchChar('>') {
goto l219
}
return true
l219:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 40 HtmlBlockCloseDir <- ('<' Spnl '/' ('dir' / 'DIR') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l224
}
if !p.rules[ruleSpnl]() {
goto l224
}
if !matchChar('/') {
goto l224
}
{
position225, thunkPosition225 := position, thunkPosition
if !matchString("dir") {
goto l226
}
goto l225
l226:
position, thunkPosition = position225, thunkPosition225
if !matchString("DIR") {
goto l224
}
}
l225:
if !p.rules[ruleSpnl]() {
goto l224
}
if !matchChar('>') {
goto l224
}
return true
l224:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 41 HtmlBlockDir <- (HtmlBlockOpenDir (HtmlBlockDir / (!HtmlBlockCloseDir .))* HtmlBlockCloseDir) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenDir]() {
goto l227
}
l228:
{
position229, thunkPosition229 := position, thunkPosition
{
position230, thunkPosition230 := position, thunkPosition
if !p.rules[ruleHtmlBlockDir]() {
goto l231
}
goto l230
l231:
position, thunkPosition = position230, thunkPosition230
{
position232, thunkPosition232 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseDir]() {
goto l232
}
goto l229
l232:
position, thunkPosition = position232, thunkPosition232
}
if !matchDot() {
goto l229
}
}
l230:
goto l228
l229:
position, thunkPosition = position229, thunkPosition229
}
if !p.rules[ruleHtmlBlockCloseDir]() {
goto l227
}
return true
l227:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 42 HtmlBlockOpenDiv <- ('<' Spnl ('div' / 'DIV') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l233
}
if !p.rules[ruleSpnl]() {
goto l233
}
{
position234, thunkPosition234 := position, thunkPosition
if !matchString("div") {
goto l235
}
goto l234
l235:
position, thunkPosition = position234, thunkPosition234
if !matchString("DIV") {
goto l233
}
}
l234:
if !p.rules[ruleSpnl]() {
goto l233
}
l236:
{
position237, thunkPosition237 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l237
}
goto l236
l237:
position, thunkPosition = position237, thunkPosition237
}
if !matchChar('>') {
goto l233
}
return true
l233:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 43 HtmlBlockCloseDiv <- ('<' Spnl '/' ('div' / 'DIV') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l238
}
if !p.rules[ruleSpnl]() {
goto l238
}
if !matchChar('/') {
goto l238
}
{
position239, thunkPosition239 := position, thunkPosition
if !matchString("div") {
goto l240
}
goto l239
l240:
position, thunkPosition = position239, thunkPosition239
if !matchString("DIV") {
goto l238
}
}
l239:
if !p.rules[ruleSpnl]() {
goto l238
}
if !matchChar('>') {
goto l238
}
return true
l238:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 44 HtmlBlockDiv <- (HtmlBlockOpenDiv (HtmlBlockDiv / (!HtmlBlockCloseDiv .))* HtmlBlockCloseDiv) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenDiv]() {
goto l241
}
l242:
{
position243, thunkPosition243 := position, thunkPosition
{
position244, thunkPosition244 := position, thunkPosition
if !p.rules[ruleHtmlBlockDiv]() {
goto l245
}
goto l244
l245:
position, thunkPosition = position244, thunkPosition244
{
position246, thunkPosition246 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseDiv]() {
goto l246
}
goto l243
l246:
position, thunkPosition = position246, thunkPosition246
}
if !matchDot() {
goto l243
}
}
l244:
goto l242
l243:
position, thunkPosition = position243, thunkPosition243
}
if !p.rules[ruleHtmlBlockCloseDiv]() {
goto l241
}
return true
l241:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 45 HtmlBlockOpenDl <- ('<' Spnl ('dl' / 'DL') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l247
}
if !p.rules[ruleSpnl]() {
goto l247
}
{
position248, thunkPosition248 := position, thunkPosition
if !matchString("dl") {
goto l249
}
goto l248
l249:
position, thunkPosition = position248, thunkPosition248
if !matchString("DL") {
goto l247
}
}
l248:
if !p.rules[ruleSpnl]() {
goto l247
}
l250:
{
position251, thunkPosition251 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l251
}
goto l250
l251:
position, thunkPosition = position251, thunkPosition251
}
if !matchChar('>') {
goto l247
}
return true
l247:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 46 HtmlBlockCloseDl <- ('<' Spnl '/' ('dl' / 'DL') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l252
}
if !p.rules[ruleSpnl]() {
goto l252
}
if !matchChar('/') {
goto l252
}
{
position253, thunkPosition253 := position, thunkPosition
if !matchString("dl") {
goto l254
}
goto l253
l254:
position, thunkPosition = position253, thunkPosition253
if !matchString("DL") {
goto l252
}
}
l253:
if !p.rules[ruleSpnl]() {
goto l252
}
if !matchChar('>') {
goto l252
}
return true
l252:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 47 HtmlBlockDl <- (HtmlBlockOpenDl (HtmlBlockDl / (!HtmlBlockCloseDl .))* HtmlBlockCloseDl) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenDl]() {
goto l255
}
l256:
{
position257, thunkPosition257 := position, thunkPosition
{
position258, thunkPosition258 := position, thunkPosition
if !p.rules[ruleHtmlBlockDl]() {
goto l259
}
goto l258
l259:
position, thunkPosition = position258, thunkPosition258
{
position260, thunkPosition260 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseDl]() {
goto l260
}
goto l257
l260:
position, thunkPosition = position260, thunkPosition260
}
if !matchDot() {
goto l257
}
}
l258:
goto l256
l257:
position, thunkPosition = position257, thunkPosition257
}
if !p.rules[ruleHtmlBlockCloseDl]() {
goto l255
}
return true
l255:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 48 HtmlBlockOpenFieldset <- ('<' Spnl ('fieldset' / 'FIELDSET') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l261
}
if !p.rules[ruleSpnl]() {
goto l261
}
{
position262, thunkPosition262 := position, thunkPosition
if !matchString("fieldset") {
goto l263
}
goto l262
l263:
position, thunkPosition = position262, thunkPosition262
if !matchString("FIELDSET") {
goto l261
}
}
l262:
if !p.rules[ruleSpnl]() {
goto l261
}
l264:
{
position265, thunkPosition265 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l265
}
goto l264
l265:
position, thunkPosition = position265, thunkPosition265
}
if !matchChar('>') {
goto l261
}
return true
l261:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 49 HtmlBlockCloseFieldset <- ('<' Spnl '/' ('fieldset' / 'FIELDSET') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l266
}
if !p.rules[ruleSpnl]() {
goto l266
}
if !matchChar('/') {
goto l266
}
{
position267, thunkPosition267 := position, thunkPosition
if !matchString("fieldset") {
goto l268
}
goto l267
l268:
position, thunkPosition = position267, thunkPosition267
if !matchString("FIELDSET") {
goto l266
}
}
l267:
if !p.rules[ruleSpnl]() {
goto l266
}
if !matchChar('>') {
goto l266
}
return true
l266:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 50 HtmlBlockFieldset <- (HtmlBlockOpenFieldset (HtmlBlockFieldset / (!HtmlBlockCloseFieldset .))* HtmlBlockCloseFieldset) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenFieldset]() {
goto l269
}
l270:
{
position271, thunkPosition271 := position, thunkPosition
{
position272, thunkPosition272 := position, thunkPosition
if !p.rules[ruleHtmlBlockFieldset]() {
goto l273
}
goto l272
l273:
position, thunkPosition = position272, thunkPosition272
{
position274, thunkPosition274 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseFieldset]() {
goto l274
}
goto l271
l274:
position, thunkPosition = position274, thunkPosition274
}
if !matchDot() {
goto l271
}
}
l272:
goto l270
l271:
position, thunkPosition = position271, thunkPosition271
}
if !p.rules[ruleHtmlBlockCloseFieldset]() {
goto l269
}
return true
l269:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 51 HtmlBlockOpenForm <- ('<' Spnl ('form' / 'FORM') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l275
}
if !p.rules[ruleSpnl]() {
goto l275
}
{
position276, thunkPosition276 := position, thunkPosition
if !matchString("form") {
goto l277
}
goto l276
l277:
position, thunkPosition = position276, thunkPosition276
if !matchString("FORM") {
goto l275
}
}
l276:
if !p.rules[ruleSpnl]() {
goto l275
}
l278:
{
position279, thunkPosition279 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l279
}
goto l278
l279:
position, thunkPosition = position279, thunkPosition279
}
if !matchChar('>') {
goto l275
}
return true
l275:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 52 HtmlBlockCloseForm <- ('<' Spnl '/' ('form' / 'FORM') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l280
}
if !p.rules[ruleSpnl]() {
goto l280
}
if !matchChar('/') {
goto l280
}
{
position281, thunkPosition281 := position, thunkPosition
if !matchString("form") {
goto l282
}
goto l281
l282:
position, thunkPosition = position281, thunkPosition281
if !matchString("FORM") {
goto l280
}
}
l281:
if !p.rules[ruleSpnl]() {
goto l280
}
if !matchChar('>') {
goto l280
}
return true
l280:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 53 HtmlBlockForm <- (HtmlBlockOpenForm (HtmlBlockForm / (!HtmlBlockCloseForm .))* HtmlBlockCloseForm) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenForm]() {
goto l283
}
l284:
{
position285, thunkPosition285 := position, thunkPosition
{
position286, thunkPosition286 := position, thunkPosition
if !p.rules[ruleHtmlBlockForm]() {
goto l287
}
goto l286
l287:
position, thunkPosition = position286, thunkPosition286
{
position288, thunkPosition288 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseForm]() {
goto l288
}
goto l285
l288:
position, thunkPosition = position288, thunkPosition288
}
if !matchDot() {
goto l285
}
}
l286:
goto l284
l285:
position, thunkPosition = position285, thunkPosition285
}
if !p.rules[ruleHtmlBlockCloseForm]() {
goto l283
}
return true
l283:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 54 HtmlBlockOpenH1 <- ('<' Spnl ('h1' / 'H1') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l289
}
if !p.rules[ruleSpnl]() {
goto l289
}
{
position290, thunkPosition290 := position, thunkPosition
if !matchString("h1") {
goto l291
}
goto l290
l291:
position, thunkPosition = position290, thunkPosition290
if !matchString("H1") {
goto l289
}
}
l290:
if !p.rules[ruleSpnl]() {
goto l289
}
l292:
{
position293, thunkPosition293 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l293
}
goto l292
l293:
position, thunkPosition = position293, thunkPosition293
}
if !matchChar('>') {
goto l289
}
return true
l289:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 55 HtmlBlockCloseH1 <- ('<' Spnl '/' ('h1' / 'H1') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l294
}
if !p.rules[ruleSpnl]() {
goto l294
}
if !matchChar('/') {
goto l294
}
{
position295, thunkPosition295 := position, thunkPosition
if !matchString("h1") {
goto l296
}
goto l295
l296:
position, thunkPosition = position295, thunkPosition295
if !matchString("H1") {
goto l294
}
}
l295:
if !p.rules[ruleSpnl]() {
goto l294
}
if !matchChar('>') {
goto l294
}
return true
l294:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 56 HtmlBlockH1 <- (HtmlBlockOpenH1 (HtmlBlockH1 / (!HtmlBlockCloseH1 .))* HtmlBlockCloseH1) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenH1]() {
goto l297
}
l298:
{
position299, thunkPosition299 := position, thunkPosition
{
position300, thunkPosition300 := position, thunkPosition
if !p.rules[ruleHtmlBlockH1]() {
goto l301
}
goto l300
l301:
position, thunkPosition = position300, thunkPosition300
{
position302, thunkPosition302 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseH1]() {
goto l302
}
goto l299
l302:
position, thunkPosition = position302, thunkPosition302
}
if !matchDot() {
goto l299
}
}
l300:
goto l298
l299:
position, thunkPosition = position299, thunkPosition299
}
if !p.rules[ruleHtmlBlockCloseH1]() {
goto l297
}
return true
l297:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 57 HtmlBlockOpenH2 <- ('<' Spnl ('h2' / 'H2') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l303
}
if !p.rules[ruleSpnl]() {
goto l303
}
{
position304, thunkPosition304 := position, thunkPosition
if !matchString("h2") {
goto l305
}
goto l304
l305:
position, thunkPosition = position304, thunkPosition304
if !matchString("H2") {
goto l303
}
}
l304:
if !p.rules[ruleSpnl]() {
goto l303
}
l306:
{
position307, thunkPosition307 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l307
}
goto l306
l307:
position, thunkPosition = position307, thunkPosition307
}
if !matchChar('>') {
goto l303
}
return true
l303:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 58 HtmlBlockCloseH2 <- ('<' Spnl '/' ('h2' / 'H2') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l308
}
if !p.rules[ruleSpnl]() {
goto l308
}
if !matchChar('/') {
goto l308
}
{
position309, thunkPosition309 := position, thunkPosition
if !matchString("h2") {
goto l310
}
goto l309
l310:
position, thunkPosition = position309, thunkPosition309
if !matchString("H2") {
goto l308
}
}
l309:
if !p.rules[ruleSpnl]() {
goto l308
}
if !matchChar('>') {
goto l308
}
return true
l308:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 59 HtmlBlockH2 <- (HtmlBlockOpenH2 (HtmlBlockH2 / (!HtmlBlockCloseH2 .))* HtmlBlockCloseH2) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenH2]() {
goto l311
}
l312:
{
position313, thunkPosition313 := position, thunkPosition
{
position314, thunkPosition314 := position, thunkPosition
if !p.rules[ruleHtmlBlockH2]() {
goto l315
}
goto l314
l315:
position, thunkPosition = position314, thunkPosition314
{
position316, thunkPosition316 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseH2]() {
goto l316
}
goto l313
l316:
position, thunkPosition = position316, thunkPosition316
}
if !matchDot() {
goto l313
}
}
l314:
goto l312
l313:
position, thunkPosition = position313, thunkPosition313
}
if !p.rules[ruleHtmlBlockCloseH2]() {
goto l311
}
return true
l311:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 60 HtmlBlockOpenH3 <- ('<' Spnl ('h3' / 'H3') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l317
}
if !p.rules[ruleSpnl]() {
goto l317
}
{
position318, thunkPosition318 := position, thunkPosition
if !matchString("h3") {
goto l319
}
goto l318
l319:
position, thunkPosition = position318, thunkPosition318
if !matchString("H3") {
goto l317
}
}
l318:
if !p.rules[ruleSpnl]() {
goto l317
}
l320:
{
position321, thunkPosition321 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l321
}
goto l320
l321:
position, thunkPosition = position321, thunkPosition321
}
if !matchChar('>') {
goto l317
}
return true
l317:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 61 HtmlBlockCloseH3 <- ('<' Spnl '/' ('h3' / 'H3') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l322
}
if !p.rules[ruleSpnl]() {
goto l322
}
if !matchChar('/') {
goto l322
}
{
position323, thunkPosition323 := position, thunkPosition
if !matchString("h3") {
goto l324
}
goto l323
l324:
position, thunkPosition = position323, thunkPosition323
if !matchString("H3") {
goto l322
}
}
l323:
if !p.rules[ruleSpnl]() {
goto l322
}
if !matchChar('>') {
goto l322
}
return true
l322:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 62 HtmlBlockH3 <- (HtmlBlockOpenH3 (HtmlBlockH3 / (!HtmlBlockCloseH3 .))* HtmlBlockCloseH3) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenH3]() {
goto l325
}
l326:
{
position327, thunkPosition327 := position, thunkPosition
{
position328, thunkPosition328 := position, thunkPosition
if !p.rules[ruleHtmlBlockH3]() {
goto l329
}
goto l328
l329:
position, thunkPosition = position328, thunkPosition328
{
position330, thunkPosition330 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseH3]() {
goto l330
}
goto l327
l330:
position, thunkPosition = position330, thunkPosition330
}
if !matchDot() {
goto l327
}
}
l328:
goto l326
l327:
position, thunkPosition = position327, thunkPosition327
}
if !p.rules[ruleHtmlBlockCloseH3]() {
goto l325
}
return true
l325:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 63 HtmlBlockOpenH4 <- ('<' Spnl ('h4' / 'H4') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l331
}
if !p.rules[ruleSpnl]() {
goto l331
}
{
position332, thunkPosition332 := position, thunkPosition
if !matchString("h4") {
goto l333
}
goto l332
l333:
position, thunkPosition = position332, thunkPosition332
if !matchString("H4") {
goto l331
}
}
l332:
if !p.rules[ruleSpnl]() {
goto l331
}
l334:
{
position335, thunkPosition335 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l335
}
goto l334
l335:
position, thunkPosition = position335, thunkPosition335
}
if !matchChar('>') {
goto l331
}
return true
l331:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 64 HtmlBlockCloseH4 <- ('<' Spnl '/' ('h4' / 'H4') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l336
}
if !p.rules[ruleSpnl]() {
goto l336
}
if !matchChar('/') {
goto l336
}
{
position337, thunkPosition337 := position, thunkPosition
if !matchString("h4") {
goto l338
}
goto l337
l338:
position, thunkPosition = position337, thunkPosition337
if !matchString("H4") {
goto l336
}
}
l337:
if !p.rules[ruleSpnl]() {
goto l336
}
if !matchChar('>') {
goto l336
}
return true
l336:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 65 HtmlBlockH4 <- (HtmlBlockOpenH4 (HtmlBlockH4 / (!HtmlBlockCloseH4 .))* HtmlBlockCloseH4) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenH4]() {
goto l339
}
l340:
{
position341, thunkPosition341 := position, thunkPosition
{
position342, thunkPosition342 := position, thunkPosition
if !p.rules[ruleHtmlBlockH4]() {
goto l343
}
goto l342
l343:
position, thunkPosition = position342, thunkPosition342
{
position344, thunkPosition344 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseH4]() {
goto l344
}
goto l341
l344:
position, thunkPosition = position344, thunkPosition344
}
if !matchDot() {
goto l341
}
}
l342:
goto l340
l341:
position, thunkPosition = position341, thunkPosition341
}
if !p.rules[ruleHtmlBlockCloseH4]() {
goto l339
}
return true
l339:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 66 HtmlBlockOpenH5 <- ('<' Spnl ('h5' / 'H5') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l345
}
if !p.rules[ruleSpnl]() {
goto l345
}
{
position346, thunkPosition346 := position, thunkPosition
if !matchString("h5") {
goto l347
}
goto l346
l347:
position, thunkPosition = position346, thunkPosition346
if !matchString("H5") {
goto l345
}
}
l346:
if !p.rules[ruleSpnl]() {
goto l345
}
l348:
{
position349, thunkPosition349 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l349
}
goto l348
l349:
position, thunkPosition = position349, thunkPosition349
}
if !matchChar('>') {
goto l345
}
return true
l345:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 67 HtmlBlockCloseH5 <- ('<' Spnl '/' ('h5' / 'H5') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l350
}
if !p.rules[ruleSpnl]() {
goto l350
}
if !matchChar('/') {
goto l350
}
{
position351, thunkPosition351 := position, thunkPosition
if !matchString("h5") {
goto l352
}
goto l351
l352:
position, thunkPosition = position351, thunkPosition351
if !matchString("H5") {
goto l350
}
}
l351:
if !p.rules[ruleSpnl]() {
goto l350
}
if !matchChar('>') {
goto l350
}
return true
l350:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 68 HtmlBlockH5 <- (HtmlBlockOpenH5 (HtmlBlockH5 / (!HtmlBlockCloseH5 .))* HtmlBlockCloseH5) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenH5]() {
goto l353
}
l354:
{
position355, thunkPosition355 := position, thunkPosition
{
position356, thunkPosition356 := position, thunkPosition
if !p.rules[ruleHtmlBlockH5]() {
goto l357
}
goto l356
l357:
position, thunkPosition = position356, thunkPosition356
{
position358, thunkPosition358 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseH5]() {
goto l358
}
goto l355
l358:
position, thunkPosition = position358, thunkPosition358
}
if !matchDot() {
goto l355
}
}
l356:
goto l354
l355:
position, thunkPosition = position355, thunkPosition355
}
if !p.rules[ruleHtmlBlockCloseH5]() {
goto l353
}
return true
l353:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 69 HtmlBlockOpenH6 <- ('<' Spnl ('h6' / 'H6') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l359
}
if !p.rules[ruleSpnl]() {
goto l359
}
{
position360, thunkPosition360 := position, thunkPosition
if !matchString("h6") {
goto l361
}
goto l360
l361:
position, thunkPosition = position360, thunkPosition360
if !matchString("H6") {
goto l359
}
}
l360:
if !p.rules[ruleSpnl]() {
goto l359
}
l362:
{
position363, thunkPosition363 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l363
}
goto l362
l363:
position, thunkPosition = position363, thunkPosition363
}
if !matchChar('>') {
goto l359
}
return true
l359:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 70 HtmlBlockCloseH6 <- ('<' Spnl '/' ('h6' / 'H6') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l364
}
if !p.rules[ruleSpnl]() {
goto l364
}
if !matchChar('/') {
goto l364
}
{
position365, thunkPosition365 := position, thunkPosition
if !matchString("h6") {
goto l366
}
goto l365
l366:
position, thunkPosition = position365, thunkPosition365
if !matchString("H6") {
goto l364
}
}
l365:
if !p.rules[ruleSpnl]() {
goto l364
}
if !matchChar('>') {
goto l364
}
return true
l364:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 71 HtmlBlockH6 <- (HtmlBlockOpenH6 (HtmlBlockH6 / (!HtmlBlockCloseH6 .))* HtmlBlockCloseH6) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenH6]() {
goto l367
}
l368:
{
position369, thunkPosition369 := position, thunkPosition
{
position370, thunkPosition370 := position, thunkPosition
if !p.rules[ruleHtmlBlockH6]() {
goto l371
}
goto l370
l371:
position, thunkPosition = position370, thunkPosition370
{
position372, thunkPosition372 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseH6]() {
goto l372
}
goto l369
l372:
position, thunkPosition = position372, thunkPosition372
}
if !matchDot() {
goto l369
}
}
l370:
goto l368
l369:
position, thunkPosition = position369, thunkPosition369
}
if !p.rules[ruleHtmlBlockCloseH6]() {
goto l367
}
return true
l367:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 72 HtmlBlockOpenMenu <- ('<' Spnl ('menu' / 'MENU') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l373
}
if !p.rules[ruleSpnl]() {
goto l373
}
{
position374, thunkPosition374 := position, thunkPosition
if !matchString("menu") {
goto l375
}
goto l374
l375:
position, thunkPosition = position374, thunkPosition374
if !matchString("MENU") {
goto l373
}
}
l374:
if !p.rules[ruleSpnl]() {
goto l373
}
l376:
{
position377, thunkPosition377 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l377
}
goto l376
l377:
position, thunkPosition = position377, thunkPosition377
}
if !matchChar('>') {
goto l373
}
return true
l373:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 73 HtmlBlockCloseMenu <- ('<' Spnl '/' ('menu' / 'MENU') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l378
}
if !p.rules[ruleSpnl]() {
goto l378
}
if !matchChar('/') {
goto l378
}
{
position379, thunkPosition379 := position, thunkPosition
if !matchString("menu") {
goto l380
}
goto l379
l380:
position, thunkPosition = position379, thunkPosition379
if !matchString("MENU") {
goto l378
}
}
l379:
if !p.rules[ruleSpnl]() {
goto l378
}
if !matchChar('>') {
goto l378
}
return true
l378:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 74 HtmlBlockMenu <- (HtmlBlockOpenMenu (HtmlBlockMenu / (!HtmlBlockCloseMenu .))* HtmlBlockCloseMenu) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenMenu]() {
goto l381
}
l382:
{
position383, thunkPosition383 := position, thunkPosition
{
position384, thunkPosition384 := position, thunkPosition
if !p.rules[ruleHtmlBlockMenu]() {
goto l385
}
goto l384
l385:
position, thunkPosition = position384, thunkPosition384
{
position386, thunkPosition386 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseMenu]() {
goto l386
}
goto l383
l386:
position, thunkPosition = position386, thunkPosition386
}
if !matchDot() {
goto l383
}
}
l384:
goto l382
l383:
position, thunkPosition = position383, thunkPosition383
}
if !p.rules[ruleHtmlBlockCloseMenu]() {
goto l381
}
return true
l381:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 75 HtmlBlockOpenNoframes <- ('<' Spnl ('noframes' / 'NOFRAMES') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l387
}
if !p.rules[ruleSpnl]() {
goto l387
}
{
position388, thunkPosition388 := position, thunkPosition
if !matchString("noframes") {
goto l389
}
goto l388
l389:
position, thunkPosition = position388, thunkPosition388
if !matchString("NOFRAMES") {
goto l387
}
}
l388:
if !p.rules[ruleSpnl]() {
goto l387
}
l390:
{
position391, thunkPosition391 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l391
}
goto l390
l391:
position, thunkPosition = position391, thunkPosition391
}
if !matchChar('>') {
goto l387
}
return true
l387:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 76 HtmlBlockCloseNoframes <- ('<' Spnl '/' ('noframes' / 'NOFRAMES') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l392
}
if !p.rules[ruleSpnl]() {
goto l392
}
if !matchChar('/') {
goto l392
}
{
position393, thunkPosition393 := position, thunkPosition
if !matchString("noframes") {
goto l394
}
goto l393
l394:
position, thunkPosition = position393, thunkPosition393
if !matchString("NOFRAMES") {
goto l392
}
}
l393:
if !p.rules[ruleSpnl]() {
goto l392
}
if !matchChar('>') {
goto l392
}
return true
l392:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 77 HtmlBlockNoframes <- (HtmlBlockOpenNoframes (HtmlBlockNoframes / (!HtmlBlockCloseNoframes .))* HtmlBlockCloseNoframes) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenNoframes]() {
goto l395
}
l396:
{
position397, thunkPosition397 := position, thunkPosition
{
position398, thunkPosition398 := position, thunkPosition
if !p.rules[ruleHtmlBlockNoframes]() {
goto l399
}
goto l398
l399:
position, thunkPosition = position398, thunkPosition398
{
position400, thunkPosition400 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseNoframes]() {
goto l400
}
goto l397
l400:
position, thunkPosition = position400, thunkPosition400
}
if !matchDot() {
goto l397
}
}
l398:
goto l396
l397:
position, thunkPosition = position397, thunkPosition397
}
if !p.rules[ruleHtmlBlockCloseNoframes]() {
goto l395
}
return true
l395:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 78 HtmlBlockOpenNoscript <- ('<' Spnl ('noscript' / 'NOSCRIPT') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l401
}
if !p.rules[ruleSpnl]() {
goto l401
}
{
position402, thunkPosition402 := position, thunkPosition
if !matchString("noscript") {
goto l403
}
goto l402
l403:
position, thunkPosition = position402, thunkPosition402
if !matchString("NOSCRIPT") {
goto l401
}
}
l402:
if !p.rules[ruleSpnl]() {
goto l401
}
l404:
{
position405, thunkPosition405 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l405
}
goto l404
l405:
position, thunkPosition = position405, thunkPosition405
}
if !matchChar('>') {
goto l401
}
return true
l401:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 79 HtmlBlockCloseNoscript <- ('<' Spnl '/' ('noscript' / 'NOSCRIPT') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l406
}
if !p.rules[ruleSpnl]() {
goto l406
}
if !matchChar('/') {
goto l406
}
{
position407, thunkPosition407 := position, thunkPosition
if !matchString("noscript") {
goto l408
}
goto l407
l408:
position, thunkPosition = position407, thunkPosition407
if !matchString("NOSCRIPT") {
goto l406
}
}
l407:
if !p.rules[ruleSpnl]() {
goto l406
}
if !matchChar('>') {
goto l406
}
return true
l406:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 80 HtmlBlockNoscript <- (HtmlBlockOpenNoscript (HtmlBlockNoscript / (!HtmlBlockCloseNoscript .))* HtmlBlockCloseNoscript) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenNoscript]() {
goto l409
}
l410:
{
position411, thunkPosition411 := position, thunkPosition
{
position412, thunkPosition412 := position, thunkPosition
if !p.rules[ruleHtmlBlockNoscript]() {
goto l413
}
goto l412
l413:
position, thunkPosition = position412, thunkPosition412
{
position414, thunkPosition414 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseNoscript]() {
goto l414
}
goto l411
l414:
position, thunkPosition = position414, thunkPosition414
}
if !matchDot() {
goto l411
}
}
l412:
goto l410
l411:
position, thunkPosition = position411, thunkPosition411
}
if !p.rules[ruleHtmlBlockCloseNoscript]() {
goto l409
}
return true
l409:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 81 HtmlBlockOpenOl <- ('<' Spnl ('ol' / 'OL') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l415
}
if !p.rules[ruleSpnl]() {
goto l415
}
{
position416, thunkPosition416 := position, thunkPosition
if !matchString("ol") {
goto l417
}
goto l416
l417:
position, thunkPosition = position416, thunkPosition416
if !matchString("OL") {
goto l415
}
}
l416:
if !p.rules[ruleSpnl]() {
goto l415
}
l418:
{
position419, thunkPosition419 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l419
}
goto l418
l419:
position, thunkPosition = position419, thunkPosition419
}
if !matchChar('>') {
goto l415
}
return true
l415:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 82 HtmlBlockCloseOl <- ('<' Spnl '/' ('ol' / 'OL') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l420
}
if !p.rules[ruleSpnl]() {
goto l420
}
if !matchChar('/') {
goto l420
}
{
position421, thunkPosition421 := position, thunkPosition
if !matchString("ol") {
goto l422
}
goto l421
l422:
position, thunkPosition = position421, thunkPosition421
if !matchString("OL") {
goto l420
}
}
l421:
if !p.rules[ruleSpnl]() {
goto l420
}
if !matchChar('>') {
goto l420
}
return true
l420:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 83 HtmlBlockOl <- (HtmlBlockOpenOl (HtmlBlockOl / (!HtmlBlockCloseOl .))* HtmlBlockCloseOl) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenOl]() {
goto l423
}
l424:
{
position425, thunkPosition425 := position, thunkPosition
{
position426, thunkPosition426 := position, thunkPosition
if !p.rules[ruleHtmlBlockOl]() {
goto l427
}
goto l426
l427:
position, thunkPosition = position426, thunkPosition426
{
position428, thunkPosition428 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseOl]() {
goto l428
}
goto l425
l428:
position, thunkPosition = position428, thunkPosition428
}
if !matchDot() {
goto l425
}
}
l426:
goto l424
l425:
position, thunkPosition = position425, thunkPosition425
}
if !p.rules[ruleHtmlBlockCloseOl]() {
goto l423
}
return true
l423:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 84 HtmlBlockOpenP <- ('<' Spnl ('p' / 'P') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l429
}
if !p.rules[ruleSpnl]() {
goto l429
}
{
position430, thunkPosition430 := position, thunkPosition
if !matchChar('p') {
goto l431
}
goto l430
l431:
position, thunkPosition = position430, thunkPosition430
if !matchChar('P') {
goto l429
}
}
l430:
if !p.rules[ruleSpnl]() {
goto l429
}
l432:
{
position433, thunkPosition433 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l433
}
goto l432
l433:
position, thunkPosition = position433, thunkPosition433
}
if !matchChar('>') {
goto l429
}
return true
l429:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 85 HtmlBlockCloseP <- ('<' Spnl '/' ('p' / 'P') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l434
}
if !p.rules[ruleSpnl]() {
goto l434
}
if !matchChar('/') {
goto l434
}
{
position435, thunkPosition435 := position, thunkPosition
if !matchChar('p') {
goto l436
}
goto l435
l436:
position, thunkPosition = position435, thunkPosition435
if !matchChar('P') {
goto l434
}
}
l435:
if !p.rules[ruleSpnl]() {
goto l434
}
if !matchChar('>') {
goto l434
}
return true
l434:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 86 HtmlBlockP <- (HtmlBlockOpenP (HtmlBlockP / (!HtmlBlockCloseP .))* HtmlBlockCloseP) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenP]() {
goto l437
}
l438:
{
position439, thunkPosition439 := position, thunkPosition
{
position440, thunkPosition440 := position, thunkPosition
if !p.rules[ruleHtmlBlockP]() {
goto l441
}
goto l440
l441:
position, thunkPosition = position440, thunkPosition440
{
position442, thunkPosition442 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseP]() {
goto l442
}
goto l439
l442:
position, thunkPosition = position442, thunkPosition442
}
if !matchDot() {
goto l439
}
}
l440:
goto l438
l439:
position, thunkPosition = position439, thunkPosition439
}
if !p.rules[ruleHtmlBlockCloseP]() {
goto l437
}
return true
l437:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 87 HtmlBlockOpenPre <- ('<' Spnl ('pre' / 'PRE') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l443
}
if !p.rules[ruleSpnl]() {
goto l443
}
{
position444, thunkPosition444 := position, thunkPosition
if !matchString("pre") {
goto l445
}
goto l444
l445:
position, thunkPosition = position444, thunkPosition444
if !matchString("PRE") {
goto l443
}
}
l444:
if !p.rules[ruleSpnl]() {
goto l443
}
l446:
{
position447, thunkPosition447 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l447
}
goto l446
l447:
position, thunkPosition = position447, thunkPosition447
}
if !matchChar('>') {
goto l443
}
return true
l443:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 88 HtmlBlockClosePre <- ('<' Spnl '/' ('pre' / 'PRE') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l448
}
if !p.rules[ruleSpnl]() {
goto l448
}
if !matchChar('/') {
goto l448
}
{
position449, thunkPosition449 := position, thunkPosition
if !matchString("pre") {
goto l450
}
goto l449
l450:
position, thunkPosition = position449, thunkPosition449
if !matchString("PRE") {
goto l448
}
}
l449:
if !p.rules[ruleSpnl]() {
goto l448
}
if !matchChar('>') {
goto l448
}
return true
l448:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 89 HtmlBlockPre <- (HtmlBlockOpenPre (HtmlBlockPre / (!HtmlBlockClosePre .))* HtmlBlockClosePre) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenPre]() {
goto l451
}
l452:
{
position453, thunkPosition453 := position, thunkPosition
{
position454, thunkPosition454 := position, thunkPosition
if !p.rules[ruleHtmlBlockPre]() {
goto l455
}
goto l454
l455:
position, thunkPosition = position454, thunkPosition454
{
position456, thunkPosition456 := position, thunkPosition
if !p.rules[ruleHtmlBlockClosePre]() {
goto l456
}
goto l453
l456:
position, thunkPosition = position456, thunkPosition456
}
if !matchDot() {
goto l453
}
}
l454:
goto l452
l453:
position, thunkPosition = position453, thunkPosition453
}
if !p.rules[ruleHtmlBlockClosePre]() {
goto l451
}
return true
l451:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 90 HtmlBlockOpenTable <- ('<' Spnl ('table' / 'TABLE') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l457
}
if !p.rules[ruleSpnl]() {
goto l457
}
{
position458, thunkPosition458 := position, thunkPosition
if !matchString("table") {
goto l459
}
goto l458
l459:
position, thunkPosition = position458, thunkPosition458
if !matchString("TABLE") {
goto l457
}
}
l458:
if !p.rules[ruleSpnl]() {
goto l457
}
l460:
{
position461, thunkPosition461 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l461
}
goto l460
l461:
position, thunkPosition = position461, thunkPosition461
}
if !matchChar('>') {
goto l457
}
return true
l457:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 91 HtmlBlockCloseTable <- ('<' Spnl '/' ('table' / 'TABLE') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l462
}
if !p.rules[ruleSpnl]() {
goto l462
}
if !matchChar('/') {
goto l462
}
{
position463, thunkPosition463 := position, thunkPosition
if !matchString("table") {
goto l464
}
goto l463
l464:
position, thunkPosition = position463, thunkPosition463
if !matchString("TABLE") {
goto l462
}
}
l463:
if !p.rules[ruleSpnl]() {
goto l462
}
if !matchChar('>') {
goto l462
}
return true
l462:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 92 HtmlBlockTable <- (HtmlBlockOpenTable (HtmlBlockTable / (!HtmlBlockCloseTable .))* HtmlBlockCloseTable) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenTable]() {
goto l465
}
l466:
{
position467, thunkPosition467 := position, thunkPosition
{
position468, thunkPosition468 := position, thunkPosition
if !p.rules[ruleHtmlBlockTable]() {
goto l469
}
goto l468
l469:
position, thunkPosition = position468, thunkPosition468
{
position470, thunkPosition470 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseTable]() {
goto l470
}
goto l467
l470:
position, thunkPosition = position470, thunkPosition470
}
if !matchDot() {
goto l467
}
}
l468:
goto l466
l467:
position, thunkPosition = position467, thunkPosition467
}
if !p.rules[ruleHtmlBlockCloseTable]() {
goto l465
}
return true
l465:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 93 HtmlBlockOpenUl <- ('<' Spnl ('ul' / 'UL') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l471
}
if !p.rules[ruleSpnl]() {
goto l471
}
{
position472, thunkPosition472 := position, thunkPosition
if !matchString("ul") {
goto l473
}
goto l472
l473:
position, thunkPosition = position472, thunkPosition472
if !matchString("UL") {
goto l471
}
}
l472:
if !p.rules[ruleSpnl]() {
goto l471
}
l474:
{
position475, thunkPosition475 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l475
}
goto l474
l475:
position, thunkPosition = position475, thunkPosition475
}
if !matchChar('>') {
goto l471
}
return true
l471:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 94 HtmlBlockCloseUl <- ('<' Spnl '/' ('ul' / 'UL') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l476
}
if !p.rules[ruleSpnl]() {
goto l476
}
if !matchChar('/') {
goto l476
}
{
position477, thunkPosition477 := position, thunkPosition
if !matchString("ul") {
goto l478
}
goto l477
l478:
position, thunkPosition = position477, thunkPosition477
if !matchString("UL") {
goto l476
}
}
l477:
if !p.rules[ruleSpnl]() {
goto l476
}
if !matchChar('>') {
goto l476
}
return true
l476:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 95 HtmlBlockUl <- (HtmlBlockOpenUl (HtmlBlockUl / (!HtmlBlockCloseUl .))* HtmlBlockCloseUl) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenUl]() {
goto l479
}
l480:
{
position481, thunkPosition481 := position, thunkPosition
{
position482, thunkPosition482 := position, thunkPosition
if !p.rules[ruleHtmlBlockUl]() {
goto l483
}
goto l482
l483:
position, thunkPosition = position482, thunkPosition482
{
position484, thunkPosition484 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseUl]() {
goto l484
}
goto l481
l484:
position, thunkPosition = position484, thunkPosition484
}
if !matchDot() {
goto l481
}
}
l482:
goto l480
l481:
position, thunkPosition = position481, thunkPosition481
}
if !p.rules[ruleHtmlBlockCloseUl]() {
goto l479
}
return true
l479:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 96 HtmlBlockOpenDd <- ('<' Spnl ('dd' / 'DD') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l485
}
if !p.rules[ruleSpnl]() {
goto l485
}
{
position486, thunkPosition486 := position, thunkPosition
if !matchString("dd") {
goto l487
}
goto l486
l487:
position, thunkPosition = position486, thunkPosition486
if !matchString("DD") {
goto l485
}
}
l486:
if !p.rules[ruleSpnl]() {
goto l485
}
l488:
{
position489, thunkPosition489 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l489
}
goto l488
l489:
position, thunkPosition = position489, thunkPosition489
}
if !matchChar('>') {
goto l485
}
return true
l485:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 97 HtmlBlockCloseDd <- ('<' Spnl '/' ('dd' / 'DD') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l490
}
if !p.rules[ruleSpnl]() {
goto l490
}
if !matchChar('/') {
goto l490
}
{
position491, thunkPosition491 := position, thunkPosition
if !matchString("dd") {
goto l492
}
goto l491
l492:
position, thunkPosition = position491, thunkPosition491
if !matchString("DD") {
goto l490
}
}
l491:
if !p.rules[ruleSpnl]() {
goto l490
}
if !matchChar('>') {
goto l490
}
return true
l490:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 98 HtmlBlockDd <- (HtmlBlockOpenDd (HtmlBlockDd / (!HtmlBlockCloseDd .))* HtmlBlockCloseDd) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenDd]() {
goto l493
}
l494:
{
position495, thunkPosition495 := position, thunkPosition
{
position496, thunkPosition496 := position, thunkPosition
if !p.rules[ruleHtmlBlockDd]() {
goto l497
}
goto l496
l497:
position, thunkPosition = position496, thunkPosition496
{
position498, thunkPosition498 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseDd]() {
goto l498
}
goto l495
l498:
position, thunkPosition = position498, thunkPosition498
}
if !matchDot() {
goto l495
}
}
l496:
goto l494
l495:
position, thunkPosition = position495, thunkPosition495
}
if !p.rules[ruleHtmlBlockCloseDd]() {
goto l493
}
return true
l493:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 99 HtmlBlockOpenDt <- ('<' Spnl ('dt' / 'DT') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l499
}
if !p.rules[ruleSpnl]() {
goto l499
}
{
position500, thunkPosition500 := position, thunkPosition
if !matchString("dt") {
goto l501
}
goto l500
l501:
position, thunkPosition = position500, thunkPosition500
if !matchString("DT") {
goto l499
}
}
l500:
if !p.rules[ruleSpnl]() {
goto l499
}
l502:
{
position503, thunkPosition503 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l503
}
goto l502
l503:
position, thunkPosition = position503, thunkPosition503
}
if !matchChar('>') {
goto l499
}
return true
l499:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 100 HtmlBlockCloseDt <- ('<' Spnl '/' ('dt' / 'DT') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l504
}
if !p.rules[ruleSpnl]() {
goto l504
}
if !matchChar('/') {
goto l504
}
{
position505, thunkPosition505 := position, thunkPosition
if !matchString("dt") {
goto l506
}
goto l505
l506:
position, thunkPosition = position505, thunkPosition505
if !matchString("DT") {
goto l504
}
}
l505:
if !p.rules[ruleSpnl]() {
goto l504
}
if !matchChar('>') {
goto l504
}
return true
l504:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 101 HtmlBlockDt <- (HtmlBlockOpenDt (HtmlBlockDt / (!HtmlBlockCloseDt .))* HtmlBlockCloseDt) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenDt]() {
goto l507
}
l508:
{
position509, thunkPosition509 := position, thunkPosition
{
position510, thunkPosition510 := position, thunkPosition
if !p.rules[ruleHtmlBlockDt]() {
goto l511
}
goto l510
l511:
position, thunkPosition = position510, thunkPosition510
{
position512, thunkPosition512 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseDt]() {
goto l512
}
goto l509
l512:
position, thunkPosition = position512, thunkPosition512
}
if !matchDot() {
goto l509
}
}
l510:
goto l508
l509:
position, thunkPosition = position509, thunkPosition509
}
if !p.rules[ruleHtmlBlockCloseDt]() {
goto l507
}
return true
l507:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 102 HtmlBlockOpenFrameset <- ('<' Spnl ('frameset' / 'FRAMESET') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l513
}
if !p.rules[ruleSpnl]() {
goto l513
}
{
position514, thunkPosition514 := position, thunkPosition
if !matchString("frameset") {
goto l515
}
goto l514
l515:
position, thunkPosition = position514, thunkPosition514
if !matchString("FRAMESET") {
goto l513
}
}
l514:
if !p.rules[ruleSpnl]() {
goto l513
}
l516:
{
position517, thunkPosition517 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l517
}
goto l516
l517:
position, thunkPosition = position517, thunkPosition517
}
if !matchChar('>') {
goto l513
}
return true
l513:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 103 HtmlBlockCloseFrameset <- ('<' Spnl '/' ('frameset' / 'FRAMESET') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l518
}
if !p.rules[ruleSpnl]() {
goto l518
}
if !matchChar('/') {
goto l518
}
{
position519, thunkPosition519 := position, thunkPosition
if !matchString("frameset") {
goto l520
}
goto l519
l520:
position, thunkPosition = position519, thunkPosition519
if !matchString("FRAMESET") {
goto l518
}
}
l519:
if !p.rules[ruleSpnl]() {
goto l518
}
if !matchChar('>') {
goto l518
}
return true
l518:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 104 HtmlBlockFrameset <- (HtmlBlockOpenFrameset (HtmlBlockFrameset / (!HtmlBlockCloseFrameset .))* HtmlBlockCloseFrameset) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenFrameset]() {
goto l521
}
l522:
{
position523, thunkPosition523 := position, thunkPosition
{
position524, thunkPosition524 := position, thunkPosition
if !p.rules[ruleHtmlBlockFrameset]() {
goto l525
}
goto l524
l525:
position, thunkPosition = position524, thunkPosition524
{
position526, thunkPosition526 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseFrameset]() {
goto l526
}
goto l523
l526:
position, thunkPosition = position526, thunkPosition526
}
if !matchDot() {
goto l523
}
}
l524:
goto l522
l523:
position, thunkPosition = position523, thunkPosition523
}
if !p.rules[ruleHtmlBlockCloseFrameset]() {
goto l521
}
return true
l521:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 105 HtmlBlockOpenLi <- ('<' Spnl ('li' / 'LI') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l527
}
if !p.rules[ruleSpnl]() {
goto l527
}
{
position528, thunkPosition528 := position, thunkPosition
if !matchString("li") {
goto l529
}
goto l528
l529:
position, thunkPosition = position528, thunkPosition528
if !matchString("LI") {
goto l527
}
}
l528:
if !p.rules[ruleSpnl]() {
goto l527
}
l530:
{
position531, thunkPosition531 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l531
}
goto l530
l531:
position, thunkPosition = position531, thunkPosition531
}
if !matchChar('>') {
goto l527
}
return true
l527:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 106 HtmlBlockCloseLi <- ('<' Spnl '/' ('li' / 'LI') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l532
}
if !p.rules[ruleSpnl]() {
goto l532
}
if !matchChar('/') {
goto l532
}
{
position533, thunkPosition533 := position, thunkPosition
if !matchString("li") {
goto l534
}
goto l533
l534:
position, thunkPosition = position533, thunkPosition533
if !matchString("LI") {
goto l532
}
}
l533:
if !p.rules[ruleSpnl]() {
goto l532
}
if !matchChar('>') {
goto l532
}
return true
l532:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 107 HtmlBlockLi <- (HtmlBlockOpenLi (HtmlBlockLi / (!HtmlBlockCloseLi .))* HtmlBlockCloseLi) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenLi]() {
goto l535
}
l536:
{
position537, thunkPosition537 := position, thunkPosition
{
position538, thunkPosition538 := position, thunkPosition
if !p.rules[ruleHtmlBlockLi]() {
goto l539
}
goto l538
l539:
position, thunkPosition = position538, thunkPosition538
{
position540, thunkPosition540 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseLi]() {
goto l540
}
goto l537
l540:
position, thunkPosition = position540, thunkPosition540
}
if !matchDot() {
goto l537
}
}
l538:
goto l536
l537:
position, thunkPosition = position537, thunkPosition537
}
if !p.rules[ruleHtmlBlockCloseLi]() {
goto l535
}
return true
l535:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 108 HtmlBlockOpenTbody <- ('<' Spnl ('tbody' / 'TBODY') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l541
}
if !p.rules[ruleSpnl]() {
goto l541
}
{
position542, thunkPosition542 := position, thunkPosition
if !matchString("tbody") {
goto l543
}
goto l542
l543:
position, thunkPosition = position542, thunkPosition542
if !matchString("TBODY") {
goto l541
}
}
l542:
if !p.rules[ruleSpnl]() {
goto l541
}
l544:
{
position545, thunkPosition545 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l545
}
goto l544
l545:
position, thunkPosition = position545, thunkPosition545
}
if !matchChar('>') {
goto l541
}
return true
l541:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 109 HtmlBlockCloseTbody <- ('<' Spnl '/' ('tbody' / 'TBODY') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l546
}
if !p.rules[ruleSpnl]() {
goto l546
}
if !matchChar('/') {
goto l546
}
{
position547, thunkPosition547 := position, thunkPosition
if !matchString("tbody") {
goto l548
}
goto l547
l548:
position, thunkPosition = position547, thunkPosition547
if !matchString("TBODY") {
goto l546
}
}
l547:
if !p.rules[ruleSpnl]() {
goto l546
}
if !matchChar('>') {
goto l546
}
return true
l546:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 110 HtmlBlockTbody <- (HtmlBlockOpenTbody (HtmlBlockTbody / (!HtmlBlockCloseTbody .))* HtmlBlockCloseTbody) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenTbody]() {
goto l549
}
l550:
{
position551, thunkPosition551 := position, thunkPosition
{
position552, thunkPosition552 := position, thunkPosition
if !p.rules[ruleHtmlBlockTbody]() {
goto l553
}
goto l552
l553:
position, thunkPosition = position552, thunkPosition552
{
position554, thunkPosition554 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseTbody]() {
goto l554
}
goto l551
l554:
position, thunkPosition = position554, thunkPosition554
}
if !matchDot() {
goto l551
}
}
l552:
goto l550
l551:
position, thunkPosition = position551, thunkPosition551
}
if !p.rules[ruleHtmlBlockCloseTbody]() {
goto l549
}
return true
l549:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 111 HtmlBlockOpenTd <- ('<' Spnl ('td' / 'TD') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l555
}
if !p.rules[ruleSpnl]() {
goto l555
}
{
position556, thunkPosition556 := position, thunkPosition
if !matchString("td") {
goto l557
}
goto l556
l557:
position, thunkPosition = position556, thunkPosition556
if !matchString("TD") {
goto l555
}
}
l556:
if !p.rules[ruleSpnl]() {
goto l555
}
l558:
{
position559, thunkPosition559 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l559
}
goto l558
l559:
position, thunkPosition = position559, thunkPosition559
}
if !matchChar('>') {
goto l555
}
return true
l555:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 112 HtmlBlockCloseTd <- ('<' Spnl '/' ('td' / 'TD') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l560
}
if !p.rules[ruleSpnl]() {
goto l560
}
if !matchChar('/') {
goto l560
}
{
position561, thunkPosition561 := position, thunkPosition
if !matchString("td") {
goto l562
}
goto l561
l562:
position, thunkPosition = position561, thunkPosition561
if !matchString("TD") {
goto l560
}
}
l561:
if !p.rules[ruleSpnl]() {
goto l560
}
if !matchChar('>') {
goto l560
}
return true
l560:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 113 HtmlBlockTd <- (HtmlBlockOpenTd (HtmlBlockTd / (!HtmlBlockCloseTd .))* HtmlBlockCloseTd) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenTd]() {
goto l563
}
l564:
{
position565, thunkPosition565 := position, thunkPosition
{
position566, thunkPosition566 := position, thunkPosition
if !p.rules[ruleHtmlBlockTd]() {
goto l567
}
goto l566
l567:
position, thunkPosition = position566, thunkPosition566
{
position568, thunkPosition568 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseTd]() {
goto l568
}
goto l565
l568:
position, thunkPosition = position568, thunkPosition568
}
if !matchDot() {
goto l565
}
}
l566:
goto l564
l565:
position, thunkPosition = position565, thunkPosition565
}
if !p.rules[ruleHtmlBlockCloseTd]() {
goto l563
}
return true
l563:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 114 HtmlBlockOpenTfoot <- ('<' Spnl ('tfoot' / 'TFOOT') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l569
}
if !p.rules[ruleSpnl]() {
goto l569
}
{
position570, thunkPosition570 := position, thunkPosition
if !matchString("tfoot") {
goto l571
}
goto l570
l571:
position, thunkPosition = position570, thunkPosition570
if !matchString("TFOOT") {
goto l569
}
}
l570:
if !p.rules[ruleSpnl]() {
goto l569
}
l572:
{
position573, thunkPosition573 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l573
}
goto l572
l573:
position, thunkPosition = position573, thunkPosition573
}
if !matchChar('>') {
goto l569
}
return true
l569:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 115 HtmlBlockCloseTfoot <- ('<' Spnl '/' ('tfoot' / 'TFOOT') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l574
}
if !p.rules[ruleSpnl]() {
goto l574
}
if !matchChar('/') {
goto l574
}
{
position575, thunkPosition575 := position, thunkPosition
if !matchString("tfoot") {
goto l576
}
goto l575
l576:
position, thunkPosition = position575, thunkPosition575
if !matchString("TFOOT") {
goto l574
}
}
l575:
if !p.rules[ruleSpnl]() {
goto l574
}
if !matchChar('>') {
goto l574
}
return true
l574:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 116 HtmlBlockTfoot <- (HtmlBlockOpenTfoot (HtmlBlockTfoot / (!HtmlBlockCloseTfoot .))* HtmlBlockCloseTfoot) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenTfoot]() {
goto l577
}
l578:
{
position579, thunkPosition579 := position, thunkPosition
{
position580, thunkPosition580 := position, thunkPosition
if !p.rules[ruleHtmlBlockTfoot]() {
goto l581
}
goto l580
l581:
position, thunkPosition = position580, thunkPosition580
{
position582, thunkPosition582 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseTfoot]() {
goto l582
}
goto l579
l582:
position, thunkPosition = position582, thunkPosition582
}
if !matchDot() {
goto l579
}
}
l580:
goto l578
l579:
position, thunkPosition = position579, thunkPosition579
}
if !p.rules[ruleHtmlBlockCloseTfoot]() {
goto l577
}
return true
l577:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 117 HtmlBlockOpenTh <- ('<' Spnl ('th' / 'TH') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l583
}
if !p.rules[ruleSpnl]() {
goto l583
}
{
position584, thunkPosition584 := position, thunkPosition
if !matchString("th") {
goto l585
}
goto l584
l585:
position, thunkPosition = position584, thunkPosition584
if !matchString("TH") {
goto l583
}
}
l584:
if !p.rules[ruleSpnl]() {
goto l583
}
l586:
{
position587, thunkPosition587 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l587
}
goto l586
l587:
position, thunkPosition = position587, thunkPosition587
}
if !matchChar('>') {
goto l583
}
return true
l583:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 118 HtmlBlockCloseTh <- ('<' Spnl '/' ('th' / 'TH') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l588
}
if !p.rules[ruleSpnl]() {
goto l588
}
if !matchChar('/') {
goto l588
}
{
position589, thunkPosition589 := position, thunkPosition
if !matchString("th") {
goto l590
}
goto l589
l590:
position, thunkPosition = position589, thunkPosition589
if !matchString("TH") {
goto l588
}
}
l589:
if !p.rules[ruleSpnl]() {
goto l588
}
if !matchChar('>') {
goto l588
}
return true
l588:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 119 HtmlBlockTh <- (HtmlBlockOpenTh (HtmlBlockTh / (!HtmlBlockCloseTh .))* HtmlBlockCloseTh) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenTh]() {
goto l591
}
l592:
{
position593, thunkPosition593 := position, thunkPosition
{
position594, thunkPosition594 := position, thunkPosition
if !p.rules[ruleHtmlBlockTh]() {
goto l595
}
goto l594
l595:
position, thunkPosition = position594, thunkPosition594
{
position596, thunkPosition596 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseTh]() {
goto l596
}
goto l593
l596:
position, thunkPosition = position596, thunkPosition596
}
if !matchDot() {
goto l593
}
}
l594:
goto l592
l593:
position, thunkPosition = position593, thunkPosition593
}
if !p.rules[ruleHtmlBlockCloseTh]() {
goto l591
}
return true
l591:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 120 HtmlBlockOpenThead <- ('<' Spnl ('thead' / 'THEAD') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l597
}
if !p.rules[ruleSpnl]() {
goto l597
}
{
position598, thunkPosition598 := position, thunkPosition
if !matchString("thead") {
goto l599
}
goto l598
l599:
position, thunkPosition = position598, thunkPosition598
if !matchString("THEAD") {
goto l597
}
}
l598:
if !p.rules[ruleSpnl]() {
goto l597
}
l600:
{
position601, thunkPosition601 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l601
}
goto l600
l601:
position, thunkPosition = position601, thunkPosition601
}
if !matchChar('>') {
goto l597
}
return true
l597:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 121 HtmlBlockCloseThead <- ('<' Spnl '/' ('thead' / 'THEAD') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l602
}
if !p.rules[ruleSpnl]() {
goto l602
}
if !matchChar('/') {
goto l602
}
{
position603, thunkPosition603 := position, thunkPosition
if !matchString("thead") {
goto l604
}
goto l603
l604:
position, thunkPosition = position603, thunkPosition603
if !matchString("THEAD") {
goto l602
}
}
l603:
if !p.rules[ruleSpnl]() {
goto l602
}
if !matchChar('>') {
goto l602
}
return true
l602:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 122 HtmlBlockThead <- (HtmlBlockOpenThead (HtmlBlockThead / (!HtmlBlockCloseThead .))* HtmlBlockCloseThead) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenThead]() {
goto l605
}
l606:
{
position607, thunkPosition607 := position, thunkPosition
{
position608, thunkPosition608 := position, thunkPosition
if !p.rules[ruleHtmlBlockThead]() {
goto l609
}
goto l608
l609:
position, thunkPosition = position608, thunkPosition608
{
position610, thunkPosition610 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseThead]() {
goto l610
}
goto l607
l610:
position, thunkPosition = position610, thunkPosition610
}
if !matchDot() {
goto l607
}
}
l608:
goto l606
l607:
position, thunkPosition = position607, thunkPosition607
}
if !p.rules[ruleHtmlBlockCloseThead]() {
goto l605
}
return true
l605:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 123 HtmlBlockOpenTr <- ('<' Spnl ('tr' / 'TR') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l611
}
if !p.rules[ruleSpnl]() {
goto l611
}
{
position612, thunkPosition612 := position, thunkPosition
if !matchString("tr") {
goto l613
}
goto l612
l613:
position, thunkPosition = position612, thunkPosition612
if !matchString("TR") {
goto l611
}
}
l612:
if !p.rules[ruleSpnl]() {
goto l611
}
l614:
{
position615, thunkPosition615 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l615
}
goto l614
l615:
position, thunkPosition = position615, thunkPosition615
}
if !matchChar('>') {
goto l611
}
return true
l611:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 124 HtmlBlockCloseTr <- ('<' Spnl '/' ('tr' / 'TR') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l616
}
if !p.rules[ruleSpnl]() {
goto l616
}
if !matchChar('/') {
goto l616
}
{
position617, thunkPosition617 := position, thunkPosition
if !matchString("tr") {
goto l618
}
goto l617
l618:
position, thunkPosition = position617, thunkPosition617
if !matchString("TR") {
goto l616
}
}
l617:
if !p.rules[ruleSpnl]() {
goto l616
}
if !matchChar('>') {
goto l616
}
return true
l616:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 125 HtmlBlockTr <- (HtmlBlockOpenTr (HtmlBlockTr / (!HtmlBlockCloseTr .))* HtmlBlockCloseTr) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenTr]() {
goto l619
}
l620:
{
position621, thunkPosition621 := position, thunkPosition
{
position622, thunkPosition622 := position, thunkPosition
if !p.rules[ruleHtmlBlockTr]() {
goto l623
}
goto l622
l623:
position, thunkPosition = position622, thunkPosition622
{
position624, thunkPosition624 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseTr]() {
goto l624
}
goto l621
l624:
position, thunkPosition = position624, thunkPosition624
}
if !matchDot() {
goto l621
}
}
l622:
goto l620
l621:
position, thunkPosition = position621, thunkPosition621
}
if !p.rules[ruleHtmlBlockCloseTr]() {
goto l619
}
return true
l619:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 126 HtmlBlockOpenScript <- ('<' Spnl ('script' / 'SCRIPT') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l625
}
if !p.rules[ruleSpnl]() {
goto l625
}
{
position626, thunkPosition626 := position, thunkPosition
if !matchString("script") {
goto l627
}
goto l626
l627:
position, thunkPosition = position626, thunkPosition626
if !matchString("SCRIPT") {
goto l625
}
}
l626:
if !p.rules[ruleSpnl]() {
goto l625
}
l628:
{
position629, thunkPosition629 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l629
}
goto l628
l629:
position, thunkPosition = position629, thunkPosition629
}
if !matchChar('>') {
goto l625
}
return true
l625:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 127 HtmlBlockCloseScript <- ('<' Spnl '/' ('script' / 'SCRIPT') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l630
}
if !p.rules[ruleSpnl]() {
goto l630
}
if !matchChar('/') {
goto l630
}
{
position631, thunkPosition631 := position, thunkPosition
if !matchString("script") {
goto l632
}
goto l631
l632:
position, thunkPosition = position631, thunkPosition631
if !matchString("SCRIPT") {
goto l630
}
}
l631:
if !p.rules[ruleSpnl]() {
goto l630
}
if !matchChar('>') {
goto l630
}
return true
l630:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 128 HtmlBlockScript <- (HtmlBlockOpenScript (HtmlBlockScript / (!HtmlBlockCloseScript .))* HtmlBlockCloseScript) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleHtmlBlockOpenScript]() {
goto l633
}
l634:
{
position635, thunkPosition635 := position, thunkPosition
{
position636, thunkPosition636 := position, thunkPosition
if !p.rules[ruleHtmlBlockScript]() {
goto l637
}
goto l636
l637:
position, thunkPosition = position636, thunkPosition636
{
position638, thunkPosition638 := position, thunkPosition
if !p.rules[ruleHtmlBlockCloseScript]() {
goto l638
}
goto l635
l638:
position, thunkPosition = position638, thunkPosition638
}
if !matchDot() {
goto l635
}
}
l636:
goto l634
l635:
position, thunkPosition = position635, thunkPosition635
}
if !p.rules[ruleHtmlBlockCloseScript]() {
goto l633
}
return true
l633:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 129 HtmlBlockInTags <- (HtmlBlockAddress / HtmlBlockBlockquote / HtmlBlockCenter / HtmlBlockDir / HtmlBlockDiv / HtmlBlockDl / HtmlBlockFieldset / HtmlBlockForm / HtmlBlockH1 / HtmlBlockH2 / HtmlBlockH3 / HtmlBlockH4 / HtmlBlockH5 / HtmlBlockH6 / HtmlBlockMenu / HtmlBlockNoframes / HtmlBlockNoscript / HtmlBlockOl / HtmlBlockP / HtmlBlockPre / HtmlBlockTable / HtmlBlockUl / HtmlBlockDd / HtmlBlockDt / HtmlBlockFrameset / HtmlBlockLi / HtmlBlockTbody / HtmlBlockTd / HtmlBlockTfoot / HtmlBlockTh / HtmlBlockThead / HtmlBlockTr / HtmlBlockScript) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position640, thunkPosition640 := position, thunkPosition
if !p.rules[ruleHtmlBlockAddress]() {
goto l641
}
goto l640
l641:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockBlockquote]() {
goto l642
}
goto l640
l642:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockCenter]() {
goto l643
}
goto l640
l643:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockDir]() {
goto l644
}
goto l640
l644:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockDiv]() {
goto l645
}
goto l640
l645:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockDl]() {
goto l646
}
goto l640
l646:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockFieldset]() {
goto l647
}
goto l640
l647:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockForm]() {
goto l648
}
goto l640
l648:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockH1]() {
goto l649
}
goto l640
l649:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockH2]() {
goto l650
}
goto l640
l650:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockH3]() {
goto l651
}
goto l640
l651:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockH4]() {
goto l652
}
goto l640
l652:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockH5]() {
goto l653
}
goto l640
l653:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockH6]() {
goto l654
}
goto l640
l654:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockMenu]() {
goto l655
}
goto l640
l655:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockNoframes]() {
goto l656
}
goto l640
l656:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockNoscript]() {
goto l657
}
goto l640
l657:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockOl]() {
goto l658
}
goto l640
l658:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockP]() {
goto l659
}
goto l640
l659:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockPre]() {
goto l660
}
goto l640
l660:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockTable]() {
goto l661
}
goto l640
l661:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockUl]() {
goto l662
}
goto l640
l662:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockDd]() {
goto l663
}
goto l640
l663:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockDt]() {
goto l664
}
goto l640
l664:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockFrameset]() {
goto l665
}
goto l640
l665:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockLi]() {
goto l666
}
goto l640
l666:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockTbody]() {
goto l667
}
goto l640
l667:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockTd]() {
goto l668
}
goto l640
l668:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockTfoot]() {
goto l669
}
goto l640
l669:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockTh]() {
goto l670
}
goto l640
l670:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockThead]() {
goto l671
}
goto l640
l671:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockTr]() {
goto l672
}
goto l640
l672:
position, thunkPosition = position640, thunkPosition640
if !p.rules[ruleHtmlBlockScript]() {
goto l639
}
}
l640:
return true
l639:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 130 HtmlBlock <- (&'<' < (HtmlBlockInTags / HtmlComment / HtmlBlockSelfClosing) > BlankLine+ { if p.extension.FilterHTML {
yy = mk_list(LIST, nil)
} else {
yy = mk_str(yytext)
yy.key = HTMLBLOCK
}
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !peekChar('<') {
goto l673
}
begin = position
{
position674, thunkPosition674 := position, thunkPosition
if !p.rules[ruleHtmlBlockInTags]() {
goto l675
}
goto l674
l675:
position, thunkPosition = position674, thunkPosition674
if !p.rules[ruleHtmlComment]() {
goto l676
}
goto l674
l676:
position, thunkPosition = position674, thunkPosition674
if !p.rules[ruleHtmlBlockSelfClosing]() {
goto l673
}
}
l674:
end = position
if !p.rules[ruleBlankLine]() {
goto l673
}
l677:
{
position678, thunkPosition678 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l678
}
goto l677
l678:
position, thunkPosition = position678, thunkPosition678
}
do(40)
return true
l673:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 131 HtmlBlockSelfClosing <- ('<' Spnl HtmlBlockType Spnl HtmlAttribute* '/' Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l679
}
if !p.rules[ruleSpnl]() {
goto l679
}
if !p.rules[ruleHtmlBlockType]() {
goto l679
}
if !p.rules[ruleSpnl]() {
goto l679
}
l680:
{
position681, thunkPosition681 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l681
}
goto l680
l681:
position, thunkPosition = position681, thunkPosition681
}
if !matchChar('/') {
goto l679
}
if !p.rules[ruleSpnl]() {
goto l679
}
if !matchChar('>') {
goto l679
}
return true
l679:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 132 HtmlBlockType <- ('address' / 'blockquote' / 'center' / 'dir' / 'div' / 'dl' / 'fieldset' / 'form' / 'h1' / 'h2' / 'h3' / 'h4' / 'h5' / 'h6' / 'hr' / 'isindex' / 'menu' / 'noframes' / 'noscript' / 'ol' / 'p' / 'pre' / 'table' / 'ul' / 'dd' / 'dt' / 'frameset' / 'li' / 'tbody' / 'td' / 'tfoot' / 'th' / 'thead' / 'tr' / 'script' / 'ADDRESS' / 'BLOCKQUOTE' / 'CENTER' / 'DIR' / 'DIV' / 'DL' / 'FIELDSET' / 'FORM' / 'H1' / 'H2' / 'H3' / 'H4' / 'H5' / 'H6' / 'HR' / 'ISINDEX' / 'MENU' / 'NOFRAMES' / 'NOSCRIPT' / 'OL' / 'P' / 'PRE' / 'TABLE' / 'UL' / 'DD' / 'DT' / 'FRAMESET' / 'LI' / 'TBODY' / 'TD' / 'TFOOT' / 'TH' / 'THEAD' / 'TR' / 'SCRIPT') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position683, thunkPosition683 := position, thunkPosition
if !matchString("address") {
goto l684
}
goto l683
l684:
position, thunkPosition = position683, thunkPosition683
if !matchString("blockquote") {
goto l685
}
goto l683
l685:
position, thunkPosition = position683, thunkPosition683
if !matchString("center") {
goto l686
}
goto l683
l686:
position, thunkPosition = position683, thunkPosition683
if !matchString("dir") {
goto l687
}
goto l683
l687:
position, thunkPosition = position683, thunkPosition683
if !matchString("div") {
goto l688
}
goto l683
l688:
position, thunkPosition = position683, thunkPosition683
if !matchString("dl") {
goto l689
}
goto l683
l689:
position, thunkPosition = position683, thunkPosition683
if !matchString("fieldset") {
goto l690
}
goto l683
l690:
position, thunkPosition = position683, thunkPosition683
if !matchString("form") {
goto l691
}
goto l683
l691:
position, thunkPosition = position683, thunkPosition683
if !matchString("h1") {
goto l692
}
goto l683
l692:
position, thunkPosition = position683, thunkPosition683
if !matchString("h2") {
goto l693
}
goto l683
l693:
position, thunkPosition = position683, thunkPosition683
if !matchString("h3") {
goto l694
}
goto l683
l694:
position, thunkPosition = position683, thunkPosition683
if !matchString("h4") {
goto l695
}
goto l683
l695:
position, thunkPosition = position683, thunkPosition683
if !matchString("h5") {
goto l696
}
goto l683
l696:
position, thunkPosition = position683, thunkPosition683
if !matchString("h6") {
goto l697
}
goto l683
l697:
position, thunkPosition = position683, thunkPosition683
if !matchString("hr") {
goto l698
}
goto l683
l698:
position, thunkPosition = position683, thunkPosition683
if !matchString("isindex") {
goto l699
}
goto l683
l699:
position, thunkPosition = position683, thunkPosition683
if !matchString("menu") {
goto l700
}
goto l683
l700:
position, thunkPosition = position683, thunkPosition683
if !matchString("noframes") {
goto l701
}
goto l683
l701:
position, thunkPosition = position683, thunkPosition683
if !matchString("noscript") {
goto l702
}
goto l683
l702:
position, thunkPosition = position683, thunkPosition683
if !matchString("ol") {
goto l703
}
goto l683
l703:
position, thunkPosition = position683, thunkPosition683
if !matchChar('p') {
goto l704
}
goto l683
l704:
position, thunkPosition = position683, thunkPosition683
if !matchString("pre") {
goto l705
}
goto l683
l705:
position, thunkPosition = position683, thunkPosition683
if !matchString("table") {
goto l706
}
goto l683
l706:
position, thunkPosition = position683, thunkPosition683
if !matchString("ul") {
goto l707
}
goto l683
l707:
position, thunkPosition = position683, thunkPosition683
if !matchString("dd") {
goto l708
}
goto l683
l708:
position, thunkPosition = position683, thunkPosition683
if !matchString("dt") {
goto l709
}
goto l683
l709:
position, thunkPosition = position683, thunkPosition683
if !matchString("frameset") {
goto l710
}
goto l683
l710:
position, thunkPosition = position683, thunkPosition683
if !matchString("li") {
goto l711
}
goto l683
l711:
position, thunkPosition = position683, thunkPosition683
if !matchString("tbody") {
goto l712
}
goto l683
l712:
position, thunkPosition = position683, thunkPosition683
if !matchString("td") {
goto l713
}
goto l683
l713:
position, thunkPosition = position683, thunkPosition683
if !matchString("tfoot") {
goto l714
}
goto l683
l714:
position, thunkPosition = position683, thunkPosition683
if !matchString("th") {
goto l715
}
goto l683
l715:
position, thunkPosition = position683, thunkPosition683
if !matchString("thead") {
goto l716
}
goto l683
l716:
position, thunkPosition = position683, thunkPosition683
if !matchString("tr") {
goto l717
}
goto l683
l717:
position, thunkPosition = position683, thunkPosition683
if !matchString("script") {
goto l718
}
goto l683
l718:
position, thunkPosition = position683, thunkPosition683
if !matchString("ADDRESS") {
goto l719
}
goto l683
l719:
position, thunkPosition = position683, thunkPosition683
if !matchString("BLOCKQUOTE") {
goto l720
}
goto l683
l720:
position, thunkPosition = position683, thunkPosition683
if !matchString("CENTER") {
goto l721
}
goto l683
l721:
position, thunkPosition = position683, thunkPosition683
if !matchString("DIR") {
goto l722
}
goto l683
l722:
position, thunkPosition = position683, thunkPosition683
if !matchString("DIV") {
goto l723
}
goto l683
l723:
position, thunkPosition = position683, thunkPosition683
if !matchString("DL") {
goto l724
}
goto l683
l724:
position, thunkPosition = position683, thunkPosition683
if !matchString("FIELDSET") {
goto l725
}
goto l683
l725:
position, thunkPosition = position683, thunkPosition683
if !matchString("FORM") {
goto l726
}
goto l683
l726:
position, thunkPosition = position683, thunkPosition683
if !matchString("H1") {
goto l727
}
goto l683
l727:
position, thunkPosition = position683, thunkPosition683
if !matchString("H2") {
goto l728
}
goto l683
l728:
position, thunkPosition = position683, thunkPosition683
if !matchString("H3") {
goto l729
}
goto l683
l729:
position, thunkPosition = position683, thunkPosition683
if !matchString("H4") {
goto l730
}
goto l683
l730:
position, thunkPosition = position683, thunkPosition683
if !matchString("H5") {
goto l731
}
goto l683
l731:
position, thunkPosition = position683, thunkPosition683
if !matchString("H6") {
goto l732
}
goto l683
l732:
position, thunkPosition = position683, thunkPosition683
if !matchString("HR") {
goto l733
}
goto l683
l733:
position, thunkPosition = position683, thunkPosition683
if !matchString("ISINDEX") {
goto l734
}
goto l683
l734:
position, thunkPosition = position683, thunkPosition683
if !matchString("MENU") {
goto l735
}
goto l683
l735:
position, thunkPosition = position683, thunkPosition683
if !matchString("NOFRAMES") {
goto l736
}
goto l683
l736:
position, thunkPosition = position683, thunkPosition683
if !matchString("NOSCRIPT") {
goto l737
}
goto l683
l737:
position, thunkPosition = position683, thunkPosition683
if !matchString("OL") {
goto l738
}
goto l683
l738:
position, thunkPosition = position683, thunkPosition683
if !matchChar('P') {
goto l739
}
goto l683
l739:
position, thunkPosition = position683, thunkPosition683
if !matchString("PRE") {
goto l740
}
goto l683
l740:
position, thunkPosition = position683, thunkPosition683
if !matchString("TABLE") {
goto l741
}
goto l683
l741:
position, thunkPosition = position683, thunkPosition683
if !matchString("UL") {
goto l742
}
goto l683
l742:
position, thunkPosition = position683, thunkPosition683
if !matchString("DD") {
goto l743
}
goto l683
l743:
position, thunkPosition = position683, thunkPosition683
if !matchString("DT") {
goto l744
}
goto l683
l744:
position, thunkPosition = position683, thunkPosition683
if !matchString("FRAMESET") {
goto l745
}
goto l683
l745:
position, thunkPosition = position683, thunkPosition683
if !matchString("LI") {
goto l746
}
goto l683
l746:
position, thunkPosition = position683, thunkPosition683
if !matchString("TBODY") {
goto l747
}
goto l683
l747:
position, thunkPosition = position683, thunkPosition683
if !matchString("TD") {
goto l748
}
goto l683
l748:
position, thunkPosition = position683, thunkPosition683
if !matchString("TFOOT") {
goto l749
}
goto l683
l749:
position, thunkPosition = position683, thunkPosition683
if !matchString("TH") {
goto l750
}
goto l683
l750:
position, thunkPosition = position683, thunkPosition683
if !matchString("THEAD") {
goto l751
}
goto l683
l751:
position, thunkPosition = position683, thunkPosition683
if !matchString("TR") {
goto l752
}
goto l683
l752:
position, thunkPosition = position683, thunkPosition683
if !matchString("SCRIPT") {
goto l682
}
}
l683:
return true
l682:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 133 StyleOpen <- ('<' Spnl ('style' / 'STYLE') Spnl HtmlAttribute* '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l753
}
if !p.rules[ruleSpnl]() {
goto l753
}
{
position754, thunkPosition754 := position, thunkPosition
if !matchString("style") {
goto l755
}
goto l754
l755:
position, thunkPosition = position754, thunkPosition754
if !matchString("STYLE") {
goto l753
}
}
l754:
if !p.rules[ruleSpnl]() {
goto l753
}
l756:
{
position757, thunkPosition757 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l757
}
goto l756
l757:
position, thunkPosition = position757, thunkPosition757
}
if !matchChar('>') {
goto l753
}
return true
l753:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 134 StyleClose <- ('<' Spnl '/' ('style' / 'STYLE') Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l758
}
if !p.rules[ruleSpnl]() {
goto l758
}
if !matchChar('/') {
goto l758
}
{
position759, thunkPosition759 := position, thunkPosition
if !matchString("style") {
goto l760
}
goto l759
l760:
position, thunkPosition = position759, thunkPosition759
if !matchString("STYLE") {
goto l758
}
}
l759:
if !p.rules[ruleSpnl]() {
goto l758
}
if !matchChar('>') {
goto l758
}
return true
l758:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 135 InStyleTags <- (StyleOpen (!StyleClose .)* StyleClose) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleStyleOpen]() {
goto l761
}
l762:
{
position763, thunkPosition763 := position, thunkPosition
{
position764, thunkPosition764 := position, thunkPosition
if !p.rules[ruleStyleClose]() {
goto l764
}
goto l763
l764:
position, thunkPosition = position764, thunkPosition764
}
if !matchDot() {
goto l763
}
goto l762
l763:
position, thunkPosition = position763, thunkPosition763
}
if !p.rules[ruleStyleClose]() {
goto l761
}
return true
l761:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 136 StyleBlock <- (< InStyleTags > BlankLine* { if p.extension.FilterStyles {
yy = mk_list(LIST, nil)
} else {
yy = mk_str(yytext)
yy.key = HTMLBLOCK
}
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
begin = position
if !p.rules[ruleInStyleTags]() {
goto l765
}
end = position
l766:
{
position767, thunkPosition767 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l767
}
goto l766
l767:
position, thunkPosition = position767, thunkPosition767
}
do(41)
return true
l765:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 137 Inlines <- (StartList ((!Endline Inline { a = cons(yy, a) }) / (Endline &Inline { a = cons(c, a) }))+ Endline? { yy = mk_list(LIST, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 2)
if !p.rules[ruleStartList]() {
goto l768
}
doarg(yySet, -2)
{
position771, thunkPosition771 := position, thunkPosition
{
position773, thunkPosition773 := position, thunkPosition
if !p.rules[ruleEndline]() {
goto l773
}
goto l772
l773:
position, thunkPosition = position773, thunkPosition773
}
if !p.rules[ruleInline]() {
goto l772
}
do(42)
goto l771
l772:
position, thunkPosition = position771, thunkPosition771
if !p.rules[ruleEndline]() {
goto l768
}
doarg(yySet, -1)
{
position774, thunkPosition774 := position, thunkPosition
if !p.rules[ruleInline]() {
goto l768
}
position, thunkPosition = position774, thunkPosition774
}
do(43)
}
l771:
l769:
{
position770, thunkPosition770 := position, thunkPosition
{
position775, thunkPosition775 := position, thunkPosition
{
position777, thunkPosition777 := position, thunkPosition
if !p.rules[ruleEndline]() {
goto l777
}
goto l776
l777:
position, thunkPosition = position777, thunkPosition777
}
if !p.rules[ruleInline]() {
goto l776
}
do(42)
goto l775
l776:
position, thunkPosition = position775, thunkPosition775
if !p.rules[ruleEndline]() {
goto l770
}
doarg(yySet, -1)
{
position778, thunkPosition778 := position, thunkPosition
if !p.rules[ruleInline]() {
goto l770
}
position, thunkPosition = position778, thunkPosition778
}
do(43)
}
l775:
goto l769
l770:
position, thunkPosition = position770, thunkPosition770
}
{
position779, thunkPosition779 := position, thunkPosition
if !p.rules[ruleEndline]() {
goto l779
}
goto l780
l779:
position, thunkPosition = position779, thunkPosition779
}
l780:
do(44)
doarg(yyPop, 2)
return true
l768:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 138 Inline <- (Str / Endline / UlOrStarLine / Space / Strong / Emph / Image / Link / NoteReference / InlineNote / Code / RawHtml / Entity / EscapedChar / Smart / Symbol) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position782, thunkPosition782 := position, thunkPosition
if !p.rules[ruleStr]() {
goto l783
}
goto l782
l783:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleEndline]() {
goto l784
}
goto l782
l784:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleUlOrStarLine]() {
goto l785
}
goto l782
l785:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleSpace]() {
goto l786
}
goto l782
l786:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleStrong]() {
goto l787
}
goto l782
l787:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleEmph]() {
goto l788
}
goto l782
l788:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleImage]() {
goto l789
}
goto l782
l789:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleLink]() {
goto l790
}
goto l782
l790:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleNoteReference]() {
goto l791
}
goto l782
l791:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleInlineNote]() {
goto l792
}
goto l782
l792:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleCode]() {
goto l793
}
goto l782
l793:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleRawHtml]() {
goto l794
}
goto l782
l794:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleEntity]() {
goto l795
}
goto l782
l795:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleEscapedChar]() {
goto l796
}
goto l782
l796:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleSmart]() {
goto l797
}
goto l782
l797:
position, thunkPosition = position782, thunkPosition782
if !p.rules[ruleSymbol]() {
goto l781
}
}
l782:
return true
l781:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 139 Space <- (Spacechar+ { yy = mk_str(" ")
yy.key = SPACE }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l798
}
l799:
{
position800, thunkPosition800 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l800
}
goto l799
l800:
position, thunkPosition = position800, thunkPosition800
}
do(45)
return true
l798:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 140 Str <- (< NormalChar (NormalChar / ('_'+ &Alphanumeric))* > { yy = mk_str(yytext) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
begin = position
if !p.rules[ruleNormalChar]() {
goto l801
}
l802:
{
position803, thunkPosition803 := position, thunkPosition
{
position804, thunkPosition804 := position, thunkPosition
if !p.rules[ruleNormalChar]() {
goto l805
}
goto l804
l805:
position, thunkPosition = position804, thunkPosition804
if !matchChar('_') {
goto l803
}
l806:
{
position807, thunkPosition807 := position, thunkPosition
if !matchChar('_') {
goto l807
}
goto l806
l807:
position, thunkPosition = position807, thunkPosition807
}
{
position808, thunkPosition808 := position, thunkPosition
if !p.rules[ruleAlphanumeric]() {
goto l803
}
position, thunkPosition = position808, thunkPosition808
}
}
l804:
goto l802
l803:
position, thunkPosition = position803, thunkPosition803
}
end = position
do(46)
return true
l801:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 141 EscapedChar <- ('\\' !Newline < [-\\`|*_{}[\]()#+.!><] > { yy = mk_str(yytext) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('\\') {
goto l809
}
{
position810, thunkPosition810 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l810
}
goto l809
l810:
position, thunkPosition = position810, thunkPosition810
}
begin = position
if !matchClass(2) {
goto l809
}
end = position
do(47)
return true
l809:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 142 Entity <- ((HexEntity / DecEntity / CharEntity) { yy = mk_str(yytext); yy.key = HTML }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position812, thunkPosition812 := position, thunkPosition
if !p.rules[ruleHexEntity]() {
goto l813
}
goto l812
l813:
position, thunkPosition = position812, thunkPosition812
if !p.rules[ruleDecEntity]() {
goto l814
}
goto l812
l814:
position, thunkPosition = position812, thunkPosition812
if !p.rules[ruleCharEntity]() {
goto l811
}
}
l812:
do(48)
return true
l811:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 143 Endline <- (LineBreak / TerminalEndline / NormalEndline) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position816, thunkPosition816 := position, thunkPosition
if !p.rules[ruleLineBreak]() {
goto l817
}
goto l816
l817:
position, thunkPosition = position816, thunkPosition816
if !p.rules[ruleTerminalEndline]() {
goto l818
}
goto l816
l818:
position, thunkPosition = position816, thunkPosition816
if !p.rules[ruleNormalEndline]() {
goto l815
}
}
l816:
return true
l815:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 144 NormalEndline <- (Sp Newline !BlankLine !'>' !AtxStart !(Line (('===' '='*) / ('---' '-'*)) Newline) { yy = mk_str("\n")
yy.key = SPACE }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l819
}
if !p.rules[ruleNewline]() {
goto l819
}
{
position820, thunkPosition820 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l820
}
goto l819
l820:
position, thunkPosition = position820, thunkPosition820
}
if peekChar('>') {
goto l819
}
{
position821, thunkPosition821 := position, thunkPosition
if !p.rules[ruleAtxStart]() {
goto l821
}
goto l819
l821:
position, thunkPosition = position821, thunkPosition821
}
{
position822, thunkPosition822 := position, thunkPosition
if !p.rules[ruleLine]() {
goto l822
}
{
position823, thunkPosition823 := position, thunkPosition
if !matchString("===") {
goto l824
}
l825:
{
position826, thunkPosition826 := position, thunkPosition
if !matchChar('=') {
goto l826
}
goto l825
l826:
position, thunkPosition = position826, thunkPosition826
}
goto l823
l824:
position, thunkPosition = position823, thunkPosition823
if !matchString("---") {
goto l822
}
l827:
{
position828, thunkPosition828 := position, thunkPosition
if !matchChar('-') {
goto l828
}
goto l827
l828:
position, thunkPosition = position828, thunkPosition828
}
}
l823:
if !p.rules[ruleNewline]() {
goto l822
}
goto l819
l822:
position, thunkPosition = position822, thunkPosition822
}
do(49)
return true
l819:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 145 TerminalEndline <- (Sp Newline Eof { yy = nil }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l829
}
if !p.rules[ruleNewline]() {
goto l829
}
if !p.rules[ruleEof]() {
goto l829
}
do(50)
return true
l829:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 146 LineBreak <- (' ' NormalEndline { yy = mk_element(LINEBREAK) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchString(" ") {
goto l830
}
if !p.rules[ruleNormalEndline]() {
goto l830
}
do(51)
return true
l830:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 147 Symbol <- (< SpecialChar > { yy = mk_str(yytext) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
begin = position
if !p.rules[ruleSpecialChar]() {
goto l831
}
end = position
do(52)
return true
l831:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 148 UlOrStarLine <- ((UlLine / StarLine) { yy = mk_str(yytext) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position833, thunkPosition833 := position, thunkPosition
if !p.rules[ruleUlLine]() {
goto l834
}
goto l833
l834:
position, thunkPosition = position833, thunkPosition833
if !p.rules[ruleStarLine]() {
goto l832
}
}
l833:
do(53)
return true
l832:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 149 StarLine <- ((< '****' '*'* >) / (< Spacechar '*'+ &Spacechar >)) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position836, thunkPosition836 := position, thunkPosition
begin = position
if !matchString("****") {
goto l837
}
l838:
{
position839, thunkPosition839 := position, thunkPosition
if !matchChar('*') {
goto l839
}
goto l838
l839:
position, thunkPosition = position839, thunkPosition839
}
end = position
goto l836
l837:
position, thunkPosition = position836, thunkPosition836
begin = position
if !p.rules[ruleSpacechar]() {
goto l835
}
if !matchChar('*') {
goto l835
}
l840:
{
position841, thunkPosition841 := position, thunkPosition
if !matchChar('*') {
goto l841
}
goto l840
l841:
position, thunkPosition = position841, thunkPosition841
}
{
position842, thunkPosition842 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l835
}
position, thunkPosition = position842, thunkPosition842
}
end = position
}
l836:
return true
l835:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 150 UlLine <- ((< '____' '_'* >) / (< Spacechar '_'+ &Spacechar >)) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position844, thunkPosition844 := position, thunkPosition
begin = position
if !matchString("____") {
goto l845
}
l846:
{
position847, thunkPosition847 := position, thunkPosition
if !matchChar('_') {
goto l847
}
goto l846
l847:
position, thunkPosition = position847, thunkPosition847
}
end = position
goto l844
l845:
position, thunkPosition = position844, thunkPosition844
begin = position
if !p.rules[ruleSpacechar]() {
goto l843
}
if !matchChar('_') {
goto l843
}
l848:
{
position849, thunkPosition849 := position, thunkPosition
if !matchChar('_') {
goto l849
}
goto l848
l849:
position, thunkPosition = position849, thunkPosition849
}
{
position850, thunkPosition850 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l843
}
position, thunkPosition = position850, thunkPosition850
}
end = position
}
l844:
return true
l843:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 151 Emph <- (EmphStar / EmphUl) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position852, thunkPosition852 := position, thunkPosition
if !p.rules[ruleEmphStar]() {
goto l853
}
goto l852
l853:
position, thunkPosition = position852, thunkPosition852
if !p.rules[ruleEmphUl]() {
goto l851
}
}
l852:
return true
l851:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 152 OneStarOpen <- (!StarLine '*' !Spacechar !Newline) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position855, thunkPosition855 := position, thunkPosition
if !p.rules[ruleStarLine]() {
goto l855
}
goto l854
l855:
position, thunkPosition = position855, thunkPosition855
}
if !matchChar('*') {
goto l854
}
{
position856, thunkPosition856 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l856
}
goto l854
l856:
position, thunkPosition = position856, thunkPosition856
}
{
position857, thunkPosition857 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l857
}
goto l854
l857:
position, thunkPosition = position857, thunkPosition857
}
return true
l854:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 153 OneStarClose <- (!Spacechar !Newline Inline !StrongStar '*' { yy = a }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
{
position859, thunkPosition859 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l859
}
goto l858
l859:
position, thunkPosition = position859, thunkPosition859
}
{
position860, thunkPosition860 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l860
}
goto l858
l860:
position, thunkPosition = position860, thunkPosition860
}
if !p.rules[ruleInline]() {
goto l858
}
doarg(yySet, -1)
{
position861, thunkPosition861 := position, thunkPosition
if !p.rules[ruleStrongStar]() {
goto l861
}
goto l858
l861:
position, thunkPosition = position861, thunkPosition861
}
if !matchChar('*') {
goto l858
}
do(54)
doarg(yyPop, 1)
return true
l858:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 154 EmphStar <- (OneStarOpen StartList (!OneStarClose Inline { a = cons(yy, a) })* OneStarClose { a = cons(yy, a) } { yy = mk_list(EMPH, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleOneStarOpen]() {
goto l862
}
if !p.rules[ruleStartList]() {
goto l862
}
doarg(yySet, -1)
l863:
{
position864, thunkPosition864 := position, thunkPosition
{
position865, thunkPosition865 := position, thunkPosition
if !p.rules[ruleOneStarClose]() {
goto l865
}
goto l864
l865:
position, thunkPosition = position865, thunkPosition865
}
if !p.rules[ruleInline]() {
goto l864
}
do(55)
goto l863
l864:
position, thunkPosition = position864, thunkPosition864
}
if !p.rules[ruleOneStarClose]() {
goto l862
}
do(56)
do(57)
doarg(yyPop, 1)
return true
l862:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 155 OneUlOpen <- (!UlLine '_' !Spacechar !Newline) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position867, thunkPosition867 := position, thunkPosition
if !p.rules[ruleUlLine]() {
goto l867
}
goto l866
l867:
position, thunkPosition = position867, thunkPosition867
}
if !matchChar('_') {
goto l866
}
{
position868, thunkPosition868 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l868
}
goto l866
l868:
position, thunkPosition = position868, thunkPosition868
}
{
position869, thunkPosition869 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l869
}
goto l866
l869:
position, thunkPosition = position869, thunkPosition869
}
return true
l866:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 156 OneUlClose <- (!Spacechar !Newline Inline !StrongUl '_' !Alphanumeric { yy = a }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
{
position871, thunkPosition871 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l871
}
goto l870
l871:
position, thunkPosition = position871, thunkPosition871
}
{
position872, thunkPosition872 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l872
}
goto l870
l872:
position, thunkPosition = position872, thunkPosition872
}
if !p.rules[ruleInline]() {
goto l870
}
doarg(yySet, -1)
{
position873, thunkPosition873 := position, thunkPosition
if !p.rules[ruleStrongUl]() {
goto l873
}
goto l870
l873:
position, thunkPosition = position873, thunkPosition873
}
if !matchChar('_') {
goto l870
}
{
position874, thunkPosition874 := position, thunkPosition
if !p.rules[ruleAlphanumeric]() {
goto l874
}
goto l870
l874:
position, thunkPosition = position874, thunkPosition874
}
do(58)
doarg(yyPop, 1)
return true
l870:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 157 EmphUl <- (OneUlOpen StartList (!OneUlClose Inline { a = cons(yy, a) })* OneUlClose { a = cons(yy, a) } { yy = mk_list(EMPH, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleOneUlOpen]() {
goto l875
}
if !p.rules[ruleStartList]() {
goto l875
}
doarg(yySet, -1)
l876:
{
position877, thunkPosition877 := position, thunkPosition
{
position878, thunkPosition878 := position, thunkPosition
if !p.rules[ruleOneUlClose]() {
goto l878
}
goto l877
l878:
position, thunkPosition = position878, thunkPosition878
}
if !p.rules[ruleInline]() {
goto l877
}
do(59)
goto l876
l877:
position, thunkPosition = position877, thunkPosition877
}
if !p.rules[ruleOneUlClose]() {
goto l875
}
do(60)
do(61)
doarg(yyPop, 1)
return true
l875:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 158 Strong <- (StrongStar / StrongUl) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position880, thunkPosition880 := position, thunkPosition
if !p.rules[ruleStrongStar]() {
goto l881
}
goto l880
l881:
position, thunkPosition = position880, thunkPosition880
if !p.rules[ruleStrongUl]() {
goto l879
}
}
l880:
return true
l879:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 159 TwoStarOpen <- (!StarLine '**' !Spacechar !Newline) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position883, thunkPosition883 := position, thunkPosition
if !p.rules[ruleStarLine]() {
goto l883
}
goto l882
l883:
position, thunkPosition = position883, thunkPosition883
}
if !matchString("**") {
goto l882
}
{
position884, thunkPosition884 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l884
}
goto l882
l884:
position, thunkPosition = position884, thunkPosition884
}
{
position885, thunkPosition885 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l885
}
goto l882
l885:
position, thunkPosition = position885, thunkPosition885
}
return true
l882:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 160 TwoStarClose <- (!Spacechar !Newline Inline '**' { yy = a }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
{
position887, thunkPosition887 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l887
}
goto l886
l887:
position, thunkPosition = position887, thunkPosition887
}
{
position888, thunkPosition888 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l888
}
goto l886
l888:
position, thunkPosition = position888, thunkPosition888
}
if !p.rules[ruleInline]() {
goto l886
}
doarg(yySet, -1)
if !matchString("**") {
goto l886
}
do(62)
doarg(yyPop, 1)
return true
l886:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 161 StrongStar <- (TwoStarOpen StartList (!TwoStarClose Inline { a = cons(yy, a) })* TwoStarClose { a = cons(yy, a) } { yy = mk_list(STRONG, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleTwoStarOpen]() {
goto l889
}
if !p.rules[ruleStartList]() {
goto l889
}
doarg(yySet, -1)
l890:
{
position891, thunkPosition891 := position, thunkPosition
{
position892, thunkPosition892 := position, thunkPosition
if !p.rules[ruleTwoStarClose]() {
goto l892
}
goto l891
l892:
position, thunkPosition = position892, thunkPosition892
}
if !p.rules[ruleInline]() {
goto l891
}
do(63)
goto l890
l891:
position, thunkPosition = position891, thunkPosition891
}
if !p.rules[ruleTwoStarClose]() {
goto l889
}
do(64)
do(65)
doarg(yyPop, 1)
return true
l889:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 162 TwoUlOpen <- (!UlLine '__' !Spacechar !Newline) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position894, thunkPosition894 := position, thunkPosition
if !p.rules[ruleUlLine]() {
goto l894
}
goto l893
l894:
position, thunkPosition = position894, thunkPosition894
}
if !matchString("__") {
goto l893
}
{
position895, thunkPosition895 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l895
}
goto l893
l895:
position, thunkPosition = position895, thunkPosition895
}
{
position896, thunkPosition896 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l896
}
goto l893
l896:
position, thunkPosition = position896, thunkPosition896
}
return true
l893:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 163 TwoUlClose <- (!Spacechar !Newline Inline '__' !Alphanumeric { yy = a }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
{
position898, thunkPosition898 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l898
}
goto l897
l898:
position, thunkPosition = position898, thunkPosition898
}
{
position899, thunkPosition899 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l899
}
goto l897
l899:
position, thunkPosition = position899, thunkPosition899
}
if !p.rules[ruleInline]() {
goto l897
}
doarg(yySet, -1)
if !matchString("__") {
goto l897
}
{
position900, thunkPosition900 := position, thunkPosition
if !p.rules[ruleAlphanumeric]() {
goto l900
}
goto l897
l900:
position, thunkPosition = position900, thunkPosition900
}
do(66)
doarg(yyPop, 1)
return true
l897:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 164 StrongUl <- (TwoUlOpen StartList (!TwoUlClose Inline { a = cons(yy, a) })* TwoUlClose { a = cons(yy, a) } { yy = mk_list(STRONG, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleTwoUlOpen]() {
goto l901
}
if !p.rules[ruleStartList]() {
goto l901
}
doarg(yySet, -1)
l902:
{
position903, thunkPosition903 := position, thunkPosition
{
position904, thunkPosition904 := position, thunkPosition
if !p.rules[ruleTwoUlClose]() {
goto l904
}
goto l903
l904:
position, thunkPosition = position904, thunkPosition904
}
if !p.rules[ruleInline]() {
goto l903
}
do(67)
goto l902
l903:
position, thunkPosition = position903, thunkPosition903
}
if !p.rules[ruleTwoUlClose]() {
goto l901
}
do(68)
do(69)
doarg(yyPop, 1)
return true
l901:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 165 Image <- ('!' (ExplicitLink / ReferenceLink) { if yy.key == LINK {
yy.key = IMAGE
} else {
result := yy
yy.children = cons(mk_str("!"), result.children)
}
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('!') {
goto l905
}
{
position906, thunkPosition906 := position, thunkPosition
if !p.rules[ruleExplicitLink]() {
goto l907
}
goto l906
l907:
position, thunkPosition = position906, thunkPosition906
if !p.rules[ruleReferenceLink]() {
goto l905
}
}
l906:
do(70)
return true
l905:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 166 Link <- (ExplicitLink / ReferenceLink / AutoLink) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position909, thunkPosition909 := position, thunkPosition
if !p.rules[ruleExplicitLink]() {
goto l910
}
goto l909
l910:
position, thunkPosition = position909, thunkPosition909
if !p.rules[ruleReferenceLink]() {
goto l911
}
goto l909
l911:
position, thunkPosition = position909, thunkPosition909
if !p.rules[ruleAutoLink]() {
goto l908
}
}
l909:
return true
l908:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 167 ReferenceLink <- (ReferenceLinkDouble / ReferenceLinkSingle) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position913, thunkPosition913 := position, thunkPosition
if !p.rules[ruleReferenceLinkDouble]() {
goto l914
}
goto l913
l914:
position, thunkPosition = position913, thunkPosition913
if !p.rules[ruleReferenceLinkSingle]() {
goto l912
}
}
l913:
return true
l912:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 168 ReferenceLinkDouble <- (Label < Spnl > !'[]' Label {
if match, found := p.findReference(b.children); found {
yy = mk_link(a.children, match.url, match.title);
a = nil
b = nil
} else {
result := mk_element(LIST)
result.children = cons(mk_str("["), cons(a, cons(mk_str("]"), cons(mk_str(yytext),
cons(mk_str("["), cons(b, mk_str("]")))))))
yy = result
}
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 2)
if !p.rules[ruleLabel]() {
goto l915
}
doarg(yySet, -1)
begin = position
if !p.rules[ruleSpnl]() {
goto l915
}
end = position
{
position916, thunkPosition916 := position, thunkPosition
if !matchString("[]") {
goto l916
}
goto l915
l916:
position, thunkPosition = position916, thunkPosition916
}
if !p.rules[ruleLabel]() {
goto l915
}
doarg(yySet, -2)
do(71)
doarg(yyPop, 2)
return true
l915:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 169 ReferenceLinkSingle <- (Label < (Spnl '[]')? > {
if match, found := p.findReference(a.children); found {
yy = mk_link(a.children, match.url, match.title)
a = nil
} else {
result := mk_element(LIST)
result.children = cons(mk_str("["), cons(a, cons(mk_str("]"), mk_str(yytext))));
yy = result
}
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleLabel]() {
goto l917
}
doarg(yySet, -1)
begin = position
{
position918, thunkPosition918 := position, thunkPosition
if !p.rules[ruleSpnl]() {
goto l918
}
if !matchString("[]") {
goto l918
}
goto l919
l918:
position, thunkPosition = position918, thunkPosition918
}
l919:
end = position
do(72)
doarg(yyPop, 1)
return true
l917:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 170 ExplicitLink <- (Label Spnl '(' Sp Source Spnl Title Sp ')' { yy = mk_link(l.children, s.contents.str, t.contents.str)
s = nil
t = nil
l = nil }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 3)
if !p.rules[ruleLabel]() {
goto l920
}
doarg(yySet, -2)
if !p.rules[ruleSpnl]() {
goto l920
}
if !matchChar('(') {
goto l920
}
if !p.rules[ruleSp]() {
goto l920
}
if !p.rules[ruleSource]() {
goto l920
}
doarg(yySet, -1)
if !p.rules[ruleSpnl]() {
goto l920
}
if !p.rules[ruleTitle]() {
goto l920
}
doarg(yySet, -3)
if !p.rules[ruleSp]() {
goto l920
}
if !matchChar(')') {
goto l920
}
do(73)
doarg(yyPop, 3)
return true
l920:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 171 Source <- ((('<' < SourceContents > '>') / (< SourceContents >)) { yy = mk_str(yytext) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position922, thunkPosition922 := position, thunkPosition
if !matchChar('<') {
goto l923
}
begin = position
if !p.rules[ruleSourceContents]() {
goto l923
}
end = position
if !matchChar('>') {
goto l923
}
goto l922
l923:
position, thunkPosition = position922, thunkPosition922
begin = position
if !p.rules[ruleSourceContents]() {
goto l921
}
end = position
}
l922:
do(74)
return true
l921:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 172 SourceContents <- (((!'(' !')' !'>' Nonspacechar)+ / ('(' SourceContents ')'))* / '') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position925, thunkPosition925 := position, thunkPosition
l927:
{
position928, thunkPosition928 := position, thunkPosition
{
position929, thunkPosition929 := position, thunkPosition
if peekChar('(') {
goto l930
}
if peekChar(')') {
goto l930
}
if peekChar('>') {
goto l930
}
if !p.rules[ruleNonspacechar]() {
goto l930
}
l931:
{
position932, thunkPosition932 := position, thunkPosition
if peekChar('(') {
goto l932
}
if peekChar(')') {
goto l932
}
if peekChar('>') {
goto l932
}
if !p.rules[ruleNonspacechar]() {
goto l932
}
goto l931
l932:
position, thunkPosition = position932, thunkPosition932
}
goto l929
l930:
position, thunkPosition = position929, thunkPosition929
if !matchChar('(') {
goto l928
}
if !p.rules[ruleSourceContents]() {
goto l928
}
if !matchChar(')') {
goto l928
}
}
l929:
goto l927
l928:
position, thunkPosition = position928, thunkPosition928
}
goto l925
_, _ = position925, thunkPosition925
}
l925:
return true
_, _ = position0, thunkPosition0
return false
},
/* 173 Title <- ((TitleSingle / TitleDouble / (< '' >)) { yy = mk_str(yytext) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position934, thunkPosition934 := position, thunkPosition
if !p.rules[ruleTitleSingle]() {
goto l935
}
goto l934
l935:
position, thunkPosition = position934, thunkPosition934
if !p.rules[ruleTitleDouble]() {
goto l936
}
goto l934
l936:
position, thunkPosition = position934, thunkPosition934
begin = position
if !peekDot() {
goto l933
}
end = position
}
l934:
do(75)
return true
l933:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 174 TitleSingle <- ('\'' < (!('\'' Sp (')' / Newline)) .)* > '\'') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('\'') {
goto l937
}
begin = position
l938:
{
position939, thunkPosition939 := position, thunkPosition
{
position940, thunkPosition940 := position, thunkPosition
if !matchChar('\'') {
goto l940
}
if !p.rules[ruleSp]() {
goto l940
}
{
position941, thunkPosition941 := position, thunkPosition
if !matchChar(')') {
goto l942
}
goto l941
l942:
position, thunkPosition = position941, thunkPosition941
if !p.rules[ruleNewline]() {
goto l940
}
}
l941:
goto l939
l940:
position, thunkPosition = position940, thunkPosition940
}
if !matchDot() {
goto l939
}
goto l938
l939:
position, thunkPosition = position939, thunkPosition939
}
end = position
if !matchChar('\'') {
goto l937
}
return true
l937:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 175 TitleDouble <- ('"' < (!('"' Sp (')' / Newline)) .)* > '"') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('"') {
goto l943
}
begin = position
l944:
{
position945, thunkPosition945 := position, thunkPosition
{
position946, thunkPosition946 := position, thunkPosition
if !matchChar('"') {
goto l946
}
if !p.rules[ruleSp]() {
goto l946
}
{
position947, thunkPosition947 := position, thunkPosition
if !matchChar(')') {
goto l948
}
goto l947
l948:
position, thunkPosition = position947, thunkPosition947
if !p.rules[ruleNewline]() {
goto l946
}
}
l947:
goto l945
l946:
position, thunkPosition = position946, thunkPosition946
}
if !matchDot() {
goto l945
}
goto l944
l945:
position, thunkPosition = position945, thunkPosition945
}
end = position
if !matchChar('"') {
goto l943
}
return true
l943:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 176 AutoLink <- (AutoLinkUrl / AutoLinkEmail) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position950, thunkPosition950 := position, thunkPosition
if !p.rules[ruleAutoLinkUrl]() {
goto l951
}
goto l950
l951:
position, thunkPosition = position950, thunkPosition950
if !p.rules[ruleAutoLinkEmail]() {
goto l949
}
}
l950:
return true
l949:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 177 AutoLinkUrl <- ('<' < [A-Za-z]+ '://' (!Newline !'>' .)+ > '>' { yy = mk_link(mk_str(yytext), yytext, "") }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l952
}
begin = position
if !matchClass(4) {
goto l952
}
l953:
{
position954, thunkPosition954 := position, thunkPosition
if !matchClass(4) {
goto l954
}
goto l953
l954:
position, thunkPosition = position954, thunkPosition954
}
if !matchString("://") {
goto l952
}
{
position957, thunkPosition957 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l957
}
goto l952
l957:
position, thunkPosition = position957, thunkPosition957
}
if peekChar('>') {
goto l952
}
if !matchDot() {
goto l952
}
l955:
{
position956, thunkPosition956 := position, thunkPosition
{
position958, thunkPosition958 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l958
}
goto l956
l958:
position, thunkPosition = position958, thunkPosition958
}
if peekChar('>') {
goto l956
}
if !matchDot() {
goto l956
}
goto l955
l956:
position, thunkPosition = position956, thunkPosition956
}
end = position
if !matchChar('>') {
goto l952
}
do(76)
return true
l952:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 178 AutoLinkEmail <- ('<' < [-A-Za-z0-9+_]+ '@' (!Newline !'>' .)+ > '>' {
yy = mk_link(mk_str(yytext), "mailto:"+yytext, "")
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l959
}
begin = position
if !matchClass(9) {
goto l959
}
l960:
{
position961, thunkPosition961 := position, thunkPosition
if !matchClass(9) {
goto l961
}
goto l960
l961:
position, thunkPosition = position961, thunkPosition961
}
if !matchChar('@') {
goto l959
}
{
position964, thunkPosition964 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l964
}
goto l959
l964:
position, thunkPosition = position964, thunkPosition964
}
if peekChar('>') {
goto l959
}
if !matchDot() {
goto l959
}
l962:
{
position963, thunkPosition963 := position, thunkPosition
{
position965, thunkPosition965 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l965
}
goto l963
l965:
position, thunkPosition = position965, thunkPosition965
}
if peekChar('>') {
goto l963
}
if !matchDot() {
goto l963
}
goto l962
l963:
position, thunkPosition = position963, thunkPosition963
}
end = position
if !matchChar('>') {
goto l959
}
do(77)
return true
l959:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 179 Reference <- (NonindentSpace !'[]' Label ':' Spnl RefSrc Spnl RefTitle BlankLine* { yy = mk_link(l.children, s.contents.str, t.contents.str)
s = nil
t = nil
l = nil
yy.key = REFERENCE }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 3)
if !p.rules[ruleNonindentSpace]() {
goto l966
}
{
position967, thunkPosition967 := position, thunkPosition
if !matchString("[]") {
goto l967
}
goto l966
l967:
position, thunkPosition = position967, thunkPosition967
}
if !p.rules[ruleLabel]() {
goto l966
}
doarg(yySet, -2)
if !matchChar(':') {
goto l966
}
if !p.rules[ruleSpnl]() {
goto l966
}
if !p.rules[ruleRefSrc]() {
goto l966
}
doarg(yySet, -1)
if !p.rules[ruleSpnl]() {
goto l966
}
if !p.rules[ruleRefTitle]() {
goto l966
}
doarg(yySet, -3)
l968:
{
position969, thunkPosition969 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l969
}
goto l968
l969:
position, thunkPosition = position969, thunkPosition969
}
do(78)
doarg(yyPop, 3)
return true
l966:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 180 Label <- ('[' ((!'^' &{ p.extension.Notes }) / (&. &{ !p.extension.Notes })) StartList (!']' Inline { a = cons(yy, a) })* ']' { yy = mk_list(LIST, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !matchChar('[') {
goto l970
}
{
position971, thunkPosition971 := position, thunkPosition
if peekChar('^') {
goto l972
}
if !( p.extension.Notes ) {
goto l972
}
goto l971
l972:
position, thunkPosition = position971, thunkPosition971
if !peekDot() {
goto l970
}
if !( !p.extension.Notes ) {
goto l970
}
}
l971:
if !p.rules[ruleStartList]() {
goto l970
}
doarg(yySet, -1)
l973:
{
position974, thunkPosition974 := position, thunkPosition
if peekChar(']') {
goto l974
}
if !p.rules[ruleInline]() {
goto l974
}
do(79)
goto l973
l974:
position, thunkPosition = position974, thunkPosition974
}
if !matchChar(']') {
goto l970
}
do(80)
doarg(yyPop, 1)
return true
l970:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 181 RefSrc <- (< Nonspacechar+ > { yy = mk_str(yytext)
yy.key = HTML }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
begin = position
if !p.rules[ruleNonspacechar]() {
goto l975
}
l976:
{
position977, thunkPosition977 := position, thunkPosition
if !p.rules[ruleNonspacechar]() {
goto l977
}
goto l976
l977:
position, thunkPosition = position977, thunkPosition977
}
end = position
do(81)
return true
l975:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 182 RefTitle <- ((RefTitleSingle / RefTitleDouble / RefTitleParens / EmptyTitle) { yy = mk_str(yytext) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position979, thunkPosition979 := position, thunkPosition
if !p.rules[ruleRefTitleSingle]() {
goto l980
}
goto l979
l980:
position, thunkPosition = position979, thunkPosition979
if !p.rules[ruleRefTitleDouble]() {
goto l981
}
goto l979
l981:
position, thunkPosition = position979, thunkPosition979
if !p.rules[ruleRefTitleParens]() {
goto l982
}
goto l979
l982:
position, thunkPosition = position979, thunkPosition979
if !p.rules[ruleEmptyTitle]() {
goto l978
}
}
l979:
do(82)
return true
l978:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 183 EmptyTitle <- (< '' >) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
begin = position
if !peekDot() {
goto l983
}
end = position
return true
l983:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 184 RefTitleSingle <- ('\'' < (!(('\'' Sp Newline) / Newline) .)* > '\'') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('\'') {
goto l984
}
begin = position
l985:
{
position986, thunkPosition986 := position, thunkPosition
{
position987, thunkPosition987 := position, thunkPosition
{
position988, thunkPosition988 := position, thunkPosition
if !matchChar('\'') {
goto l989
}
if !p.rules[ruleSp]() {
goto l989
}
if !p.rules[ruleNewline]() {
goto l989
}
goto l988
l989:
position, thunkPosition = position988, thunkPosition988
if !p.rules[ruleNewline]() {
goto l987
}
}
l988:
goto l986
l987:
position, thunkPosition = position987, thunkPosition987
}
if !matchDot() {
goto l986
}
goto l985
l986:
position, thunkPosition = position986, thunkPosition986
}
end = position
if !matchChar('\'') {
goto l984
}
return true
l984:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 185 RefTitleDouble <- ('"' < (!(('"' Sp Newline) / Newline) .)* > '"') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('"') {
goto l990
}
begin = position
l991:
{
position992, thunkPosition992 := position, thunkPosition
{
position993, thunkPosition993 := position, thunkPosition
{
position994, thunkPosition994 := position, thunkPosition
if !matchChar('"') {
goto l995
}
if !p.rules[ruleSp]() {
goto l995
}
if !p.rules[ruleNewline]() {
goto l995
}
goto l994
l995:
position, thunkPosition = position994, thunkPosition994
if !p.rules[ruleNewline]() {
goto l993
}
}
l994:
goto l992
l993:
position, thunkPosition = position993, thunkPosition993
}
if !matchDot() {
goto l992
}
goto l991
l992:
position, thunkPosition = position992, thunkPosition992
}
end = position
if !matchChar('"') {
goto l990
}
return true
l990:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 186 RefTitleParens <- ('(' < (!((')' Sp Newline) / Newline) .)* > ')') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('(') {
goto l996
}
begin = position
l997:
{
position998, thunkPosition998 := position, thunkPosition
{
position999, thunkPosition999 := position, thunkPosition
{
position1000, thunkPosition1000 := position, thunkPosition
if !matchChar(')') {
goto l1001
}
if !p.rules[ruleSp]() {
goto l1001
}
if !p.rules[ruleNewline]() {
goto l1001
}
goto l1000
l1001:
position, thunkPosition = position1000, thunkPosition1000
if !p.rules[ruleNewline]() {
goto l999
}
}
l1000:
goto l998
l999:
position, thunkPosition = position999, thunkPosition999
}
if !matchDot() {
goto l998
}
goto l997
l998:
position, thunkPosition = position998, thunkPosition998
}
end = position
if !matchChar(')') {
goto l996
}
return true
l996:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 187 References <- (StartList ((Reference { a = cons(b, a) }) / SkipBlock)* { p.references = reverse(a) } commit) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 2)
if !p.rules[ruleStartList]() {
goto l1002
}
doarg(yySet, -1)
l1003:
{
position1004, thunkPosition1004 := position, thunkPosition
{
position1005, thunkPosition1005 := position, thunkPosition
if !p.rules[ruleReference]() {
goto l1006
}
doarg(yySet, -2)
do(83)
goto l1005
l1006:
position, thunkPosition = position1005, thunkPosition1005
if !p.rules[ruleSkipBlock]() {
goto l1004
}
}
l1005:
goto l1003
l1004:
position, thunkPosition = position1004, thunkPosition1004
}
do(84)
if !(commit(thunkPosition0)) {
goto l1002
}
doarg(yyPop, 2)
return true
l1002:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 188 Ticks1 <- ('`' !'`') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('`') {
goto l1007
}
if peekChar('`') {
goto l1007
}
return true
l1007:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 189 Ticks2 <- ('``' !'`') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchString("``") {
goto l1008
}
if peekChar('`') {
goto l1008
}
return true
l1008:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 190 Ticks3 <- ('```' !'`') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchString("```") {
goto l1009
}
if peekChar('`') {
goto l1009
}
return true
l1009:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 191 Ticks4 <- ('````' !'`') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchString("````") {
goto l1010
}
if peekChar('`') {
goto l1010
}
return true
l1010:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 192 Ticks5 <- ('`````' !'`') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchString("`````") {
goto l1011
}
if peekChar('`') {
goto l1011
}
return true
l1011:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 193 Code <- (((Ticks1 Sp < ((!'`' Nonspacechar)+ / (!Ticks1 '`'+) / (!(Sp Ticks1) (Spacechar / (Newline !BlankLine))))+ > Sp Ticks1) / (Ticks2 Sp < ((!'`' Nonspacechar)+ / (!Ticks2 '`'+) / (!(Sp Ticks2) (Spacechar / (Newline !BlankLine))))+ > Sp Ticks2) / (Ticks3 Sp < ((!'`' Nonspacechar)+ / (!Ticks3 '`'+) / (!(Sp Ticks3) (Spacechar / (Newline !BlankLine))))+ > Sp Ticks3) / (Ticks4 Sp < ((!'`' Nonspacechar)+ / (!Ticks4 '`'+) / (!(Sp Ticks4) (Spacechar / (Newline !BlankLine))))+ > Sp Ticks4) / (Ticks5 Sp < ((!'`' Nonspacechar)+ / (!Ticks5 '`'+) / (!(Sp Ticks5) (Spacechar / (Newline !BlankLine))))+ > Sp Ticks5)) { yy = mk_str(yytext); yy.key = CODE }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1013, thunkPosition1013 := position, thunkPosition
if !p.rules[ruleTicks1]() {
goto l1014
}
if !p.rules[ruleSp]() {
goto l1014
}
begin = position
{
position1017, thunkPosition1017 := position, thunkPosition
if peekChar('`') {
goto l1018
}
if !p.rules[ruleNonspacechar]() {
goto l1018
}
l1019:
{
position1020, thunkPosition1020 := position, thunkPosition
if peekChar('`') {
goto l1020
}
if !p.rules[ruleNonspacechar]() {
goto l1020
}
goto l1019
l1020:
position, thunkPosition = position1020, thunkPosition1020
}
goto l1017
l1018:
position, thunkPosition = position1017, thunkPosition1017
{
position1022, thunkPosition1022 := position, thunkPosition
if !p.rules[ruleTicks1]() {
goto l1022
}
goto l1021
l1022:
position, thunkPosition = position1022, thunkPosition1022
}
if !matchChar('`') {
goto l1021
}
l1023:
{
position1024, thunkPosition1024 := position, thunkPosition
if !matchChar('`') {
goto l1024
}
goto l1023
l1024:
position, thunkPosition = position1024, thunkPosition1024
}
goto l1017
l1021:
position, thunkPosition = position1017, thunkPosition1017
{
position1025, thunkPosition1025 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1025
}
if !p.rules[ruleTicks1]() {
goto l1025
}
goto l1014
l1025:
position, thunkPosition = position1025, thunkPosition1025
}
{
position1026, thunkPosition1026 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1027
}
goto l1026
l1027:
position, thunkPosition = position1026, thunkPosition1026
if !p.rules[ruleNewline]() {
goto l1014
}
{
position1028, thunkPosition1028 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1028
}
goto l1014
l1028:
position, thunkPosition = position1028, thunkPosition1028
}
}
l1026:
}
l1017:
l1015:
{
position1016, thunkPosition1016 := position, thunkPosition
{
position1029, thunkPosition1029 := position, thunkPosition
if peekChar('`') {
goto l1030
}
if !p.rules[ruleNonspacechar]() {
goto l1030
}
l1031:
{
position1032, thunkPosition1032 := position, thunkPosition
if peekChar('`') {
goto l1032
}
if !p.rules[ruleNonspacechar]() {
goto l1032
}
goto l1031
l1032:
position, thunkPosition = position1032, thunkPosition1032
}
goto l1029
l1030:
position, thunkPosition = position1029, thunkPosition1029
{
position1034, thunkPosition1034 := position, thunkPosition
if !p.rules[ruleTicks1]() {
goto l1034
}
goto l1033
l1034:
position, thunkPosition = position1034, thunkPosition1034
}
if !matchChar('`') {
goto l1033
}
l1035:
{
position1036, thunkPosition1036 := position, thunkPosition
if !matchChar('`') {
goto l1036
}
goto l1035
l1036:
position, thunkPosition = position1036, thunkPosition1036
}
goto l1029
l1033:
position, thunkPosition = position1029, thunkPosition1029
{
position1037, thunkPosition1037 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1037
}
if !p.rules[ruleTicks1]() {
goto l1037
}
goto l1016
l1037:
position, thunkPosition = position1037, thunkPosition1037
}
{
position1038, thunkPosition1038 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1039
}
goto l1038
l1039:
position, thunkPosition = position1038, thunkPosition1038
if !p.rules[ruleNewline]() {
goto l1016
}
{
position1040, thunkPosition1040 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1040
}
goto l1016
l1040:
position, thunkPosition = position1040, thunkPosition1040
}
}
l1038:
}
l1029:
goto l1015
l1016:
position, thunkPosition = position1016, thunkPosition1016
}
end = position
if !p.rules[ruleSp]() {
goto l1014
}
if !p.rules[ruleTicks1]() {
goto l1014
}
goto l1013
l1014:
position, thunkPosition = position1013, thunkPosition1013
if !p.rules[ruleTicks2]() {
goto l1041
}
if !p.rules[ruleSp]() {
goto l1041
}
begin = position
{
position1044, thunkPosition1044 := position, thunkPosition
if peekChar('`') {
goto l1045
}
if !p.rules[ruleNonspacechar]() {
goto l1045
}
l1046:
{
position1047, thunkPosition1047 := position, thunkPosition
if peekChar('`') {
goto l1047
}
if !p.rules[ruleNonspacechar]() {
goto l1047
}
goto l1046
l1047:
position, thunkPosition = position1047, thunkPosition1047
}
goto l1044
l1045:
position, thunkPosition = position1044, thunkPosition1044
{
position1049, thunkPosition1049 := position, thunkPosition
if !p.rules[ruleTicks2]() {
goto l1049
}
goto l1048
l1049:
position, thunkPosition = position1049, thunkPosition1049
}
if !matchChar('`') {
goto l1048
}
l1050:
{
position1051, thunkPosition1051 := position, thunkPosition
if !matchChar('`') {
goto l1051
}
goto l1050
l1051:
position, thunkPosition = position1051, thunkPosition1051
}
goto l1044
l1048:
position, thunkPosition = position1044, thunkPosition1044
{
position1052, thunkPosition1052 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1052
}
if !p.rules[ruleTicks2]() {
goto l1052
}
goto l1041
l1052:
position, thunkPosition = position1052, thunkPosition1052
}
{
position1053, thunkPosition1053 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1054
}
goto l1053
l1054:
position, thunkPosition = position1053, thunkPosition1053
if !p.rules[ruleNewline]() {
goto l1041
}
{
position1055, thunkPosition1055 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1055
}
goto l1041
l1055:
position, thunkPosition = position1055, thunkPosition1055
}
}
l1053:
}
l1044:
l1042:
{
position1043, thunkPosition1043 := position, thunkPosition
{
position1056, thunkPosition1056 := position, thunkPosition
if peekChar('`') {
goto l1057
}
if !p.rules[ruleNonspacechar]() {
goto l1057
}
l1058:
{
position1059, thunkPosition1059 := position, thunkPosition
if peekChar('`') {
goto l1059
}
if !p.rules[ruleNonspacechar]() {
goto l1059
}
goto l1058
l1059:
position, thunkPosition = position1059, thunkPosition1059
}
goto l1056
l1057:
position, thunkPosition = position1056, thunkPosition1056
{
position1061, thunkPosition1061 := position, thunkPosition
if !p.rules[ruleTicks2]() {
goto l1061
}
goto l1060
l1061:
position, thunkPosition = position1061, thunkPosition1061
}
if !matchChar('`') {
goto l1060
}
l1062:
{
position1063, thunkPosition1063 := position, thunkPosition
if !matchChar('`') {
goto l1063
}
goto l1062
l1063:
position, thunkPosition = position1063, thunkPosition1063
}
goto l1056
l1060:
position, thunkPosition = position1056, thunkPosition1056
{
position1064, thunkPosition1064 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1064
}
if !p.rules[ruleTicks2]() {
goto l1064
}
goto l1043
l1064:
position, thunkPosition = position1064, thunkPosition1064
}
{
position1065, thunkPosition1065 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1066
}
goto l1065
l1066:
position, thunkPosition = position1065, thunkPosition1065
if !p.rules[ruleNewline]() {
goto l1043
}
{
position1067, thunkPosition1067 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1067
}
goto l1043
l1067:
position, thunkPosition = position1067, thunkPosition1067
}
}
l1065:
}
l1056:
goto l1042
l1043:
position, thunkPosition = position1043, thunkPosition1043
}
end = position
if !p.rules[ruleSp]() {
goto l1041
}
if !p.rules[ruleTicks2]() {
goto l1041
}
goto l1013
l1041:
position, thunkPosition = position1013, thunkPosition1013
if !p.rules[ruleTicks3]() {
goto l1068
}
if !p.rules[ruleSp]() {
goto l1068
}
begin = position
{
position1071, thunkPosition1071 := position, thunkPosition
if peekChar('`') {
goto l1072
}
if !p.rules[ruleNonspacechar]() {
goto l1072
}
l1073:
{
position1074, thunkPosition1074 := position, thunkPosition
if peekChar('`') {
goto l1074
}
if !p.rules[ruleNonspacechar]() {
goto l1074
}
goto l1073
l1074:
position, thunkPosition = position1074, thunkPosition1074
}
goto l1071
l1072:
position, thunkPosition = position1071, thunkPosition1071
{
position1076, thunkPosition1076 := position, thunkPosition
if !p.rules[ruleTicks3]() {
goto l1076
}
goto l1075
l1076:
position, thunkPosition = position1076, thunkPosition1076
}
if !matchChar('`') {
goto l1075
}
l1077:
{
position1078, thunkPosition1078 := position, thunkPosition
if !matchChar('`') {
goto l1078
}
goto l1077
l1078:
position, thunkPosition = position1078, thunkPosition1078
}
goto l1071
l1075:
position, thunkPosition = position1071, thunkPosition1071
{
position1079, thunkPosition1079 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1079
}
if !p.rules[ruleTicks3]() {
goto l1079
}
goto l1068
l1079:
position, thunkPosition = position1079, thunkPosition1079
}
{
position1080, thunkPosition1080 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1081
}
goto l1080
l1081:
position, thunkPosition = position1080, thunkPosition1080
if !p.rules[ruleNewline]() {
goto l1068
}
{
position1082, thunkPosition1082 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1082
}
goto l1068
l1082:
position, thunkPosition = position1082, thunkPosition1082
}
}
l1080:
}
l1071:
l1069:
{
position1070, thunkPosition1070 := position, thunkPosition
{
position1083, thunkPosition1083 := position, thunkPosition
if peekChar('`') {
goto l1084
}
if !p.rules[ruleNonspacechar]() {
goto l1084
}
l1085:
{
position1086, thunkPosition1086 := position, thunkPosition
if peekChar('`') {
goto l1086
}
if !p.rules[ruleNonspacechar]() {
goto l1086
}
goto l1085
l1086:
position, thunkPosition = position1086, thunkPosition1086
}
goto l1083
l1084:
position, thunkPosition = position1083, thunkPosition1083
{
position1088, thunkPosition1088 := position, thunkPosition
if !p.rules[ruleTicks3]() {
goto l1088
}
goto l1087
l1088:
position, thunkPosition = position1088, thunkPosition1088
}
if !matchChar('`') {
goto l1087
}
l1089:
{
position1090, thunkPosition1090 := position, thunkPosition
if !matchChar('`') {
goto l1090
}
goto l1089
l1090:
position, thunkPosition = position1090, thunkPosition1090
}
goto l1083
l1087:
position, thunkPosition = position1083, thunkPosition1083
{
position1091, thunkPosition1091 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1091
}
if !p.rules[ruleTicks3]() {
goto l1091
}
goto l1070
l1091:
position, thunkPosition = position1091, thunkPosition1091
}
{
position1092, thunkPosition1092 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1093
}
goto l1092
l1093:
position, thunkPosition = position1092, thunkPosition1092
if !p.rules[ruleNewline]() {
goto l1070
}
{
position1094, thunkPosition1094 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1094
}
goto l1070
l1094:
position, thunkPosition = position1094, thunkPosition1094
}
}
l1092:
}
l1083:
goto l1069
l1070:
position, thunkPosition = position1070, thunkPosition1070
}
end = position
if !p.rules[ruleSp]() {
goto l1068
}
if !p.rules[ruleTicks3]() {
goto l1068
}
goto l1013
l1068:
position, thunkPosition = position1013, thunkPosition1013
if !p.rules[ruleTicks4]() {
goto l1095
}
if !p.rules[ruleSp]() {
goto l1095
}
begin = position
{
position1098, thunkPosition1098 := position, thunkPosition
if peekChar('`') {
goto l1099
}
if !p.rules[ruleNonspacechar]() {
goto l1099
}
l1100:
{
position1101, thunkPosition1101 := position, thunkPosition
if peekChar('`') {
goto l1101
}
if !p.rules[ruleNonspacechar]() {
goto l1101
}
goto l1100
l1101:
position, thunkPosition = position1101, thunkPosition1101
}
goto l1098
l1099:
position, thunkPosition = position1098, thunkPosition1098
{
position1103, thunkPosition1103 := position, thunkPosition
if !p.rules[ruleTicks4]() {
goto l1103
}
goto l1102
l1103:
position, thunkPosition = position1103, thunkPosition1103
}
if !matchChar('`') {
goto l1102
}
l1104:
{
position1105, thunkPosition1105 := position, thunkPosition
if !matchChar('`') {
goto l1105
}
goto l1104
l1105:
position, thunkPosition = position1105, thunkPosition1105
}
goto l1098
l1102:
position, thunkPosition = position1098, thunkPosition1098
{
position1106, thunkPosition1106 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1106
}
if !p.rules[ruleTicks4]() {
goto l1106
}
goto l1095
l1106:
position, thunkPosition = position1106, thunkPosition1106
}
{
position1107, thunkPosition1107 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1108
}
goto l1107
l1108:
position, thunkPosition = position1107, thunkPosition1107
if !p.rules[ruleNewline]() {
goto l1095
}
{
position1109, thunkPosition1109 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1109
}
goto l1095
l1109:
position, thunkPosition = position1109, thunkPosition1109
}
}
l1107:
}
l1098:
l1096:
{
position1097, thunkPosition1097 := position, thunkPosition
{
position1110, thunkPosition1110 := position, thunkPosition
if peekChar('`') {
goto l1111
}
if !p.rules[ruleNonspacechar]() {
goto l1111
}
l1112:
{
position1113, thunkPosition1113 := position, thunkPosition
if peekChar('`') {
goto l1113
}
if !p.rules[ruleNonspacechar]() {
goto l1113
}
goto l1112
l1113:
position, thunkPosition = position1113, thunkPosition1113
}
goto l1110
l1111:
position, thunkPosition = position1110, thunkPosition1110
{
position1115, thunkPosition1115 := position, thunkPosition
if !p.rules[ruleTicks4]() {
goto l1115
}
goto l1114
l1115:
position, thunkPosition = position1115, thunkPosition1115
}
if !matchChar('`') {
goto l1114
}
l1116:
{
position1117, thunkPosition1117 := position, thunkPosition
if !matchChar('`') {
goto l1117
}
goto l1116
l1117:
position, thunkPosition = position1117, thunkPosition1117
}
goto l1110
l1114:
position, thunkPosition = position1110, thunkPosition1110
{
position1118, thunkPosition1118 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1118
}
if !p.rules[ruleTicks4]() {
goto l1118
}
goto l1097
l1118:
position, thunkPosition = position1118, thunkPosition1118
}
{
position1119, thunkPosition1119 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1120
}
goto l1119
l1120:
position, thunkPosition = position1119, thunkPosition1119
if !p.rules[ruleNewline]() {
goto l1097
}
{
position1121, thunkPosition1121 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1121
}
goto l1097
l1121:
position, thunkPosition = position1121, thunkPosition1121
}
}
l1119:
}
l1110:
goto l1096
l1097:
position, thunkPosition = position1097, thunkPosition1097
}
end = position
if !p.rules[ruleSp]() {
goto l1095
}
if !p.rules[ruleTicks4]() {
goto l1095
}
goto l1013
l1095:
position, thunkPosition = position1013, thunkPosition1013
if !p.rules[ruleTicks5]() {
goto l1012
}
if !p.rules[ruleSp]() {
goto l1012
}
begin = position
{
position1124, thunkPosition1124 := position, thunkPosition
if peekChar('`') {
goto l1125
}
if !p.rules[ruleNonspacechar]() {
goto l1125
}
l1126:
{
position1127, thunkPosition1127 := position, thunkPosition
if peekChar('`') {
goto l1127
}
if !p.rules[ruleNonspacechar]() {
goto l1127
}
goto l1126
l1127:
position, thunkPosition = position1127, thunkPosition1127
}
goto l1124
l1125:
position, thunkPosition = position1124, thunkPosition1124
{
position1129, thunkPosition1129 := position, thunkPosition
if !p.rules[ruleTicks5]() {
goto l1129
}
goto l1128
l1129:
position, thunkPosition = position1129, thunkPosition1129
}
if !matchChar('`') {
goto l1128
}
l1130:
{
position1131, thunkPosition1131 := position, thunkPosition
if !matchChar('`') {
goto l1131
}
goto l1130
l1131:
position, thunkPosition = position1131, thunkPosition1131
}
goto l1124
l1128:
position, thunkPosition = position1124, thunkPosition1124
{
position1132, thunkPosition1132 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1132
}
if !p.rules[ruleTicks5]() {
goto l1132
}
goto l1012
l1132:
position, thunkPosition = position1132, thunkPosition1132
}
{
position1133, thunkPosition1133 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1134
}
goto l1133
l1134:
position, thunkPosition = position1133, thunkPosition1133
if !p.rules[ruleNewline]() {
goto l1012
}
{
position1135, thunkPosition1135 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1135
}
goto l1012
l1135:
position, thunkPosition = position1135, thunkPosition1135
}
}
l1133:
}
l1124:
l1122:
{
position1123, thunkPosition1123 := position, thunkPosition
{
position1136, thunkPosition1136 := position, thunkPosition
if peekChar('`') {
goto l1137
}
if !p.rules[ruleNonspacechar]() {
goto l1137
}
l1138:
{
position1139, thunkPosition1139 := position, thunkPosition
if peekChar('`') {
goto l1139
}
if !p.rules[ruleNonspacechar]() {
goto l1139
}
goto l1138
l1139:
position, thunkPosition = position1139, thunkPosition1139
}
goto l1136
l1137:
position, thunkPosition = position1136, thunkPosition1136
{
position1141, thunkPosition1141 := position, thunkPosition
if !p.rules[ruleTicks5]() {
goto l1141
}
goto l1140
l1141:
position, thunkPosition = position1141, thunkPosition1141
}
if !matchChar('`') {
goto l1140
}
l1142:
{
position1143, thunkPosition1143 := position, thunkPosition
if !matchChar('`') {
goto l1143
}
goto l1142
l1143:
position, thunkPosition = position1143, thunkPosition1143
}
goto l1136
l1140:
position, thunkPosition = position1136, thunkPosition1136
{
position1144, thunkPosition1144 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1144
}
if !p.rules[ruleTicks5]() {
goto l1144
}
goto l1123
l1144:
position, thunkPosition = position1144, thunkPosition1144
}
{
position1145, thunkPosition1145 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1146
}
goto l1145
l1146:
position, thunkPosition = position1145, thunkPosition1145
if !p.rules[ruleNewline]() {
goto l1123
}
{
position1147, thunkPosition1147 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1147
}
goto l1123
l1147:
position, thunkPosition = position1147, thunkPosition1147
}
}
l1145:
}
l1136:
goto l1122
l1123:
position, thunkPosition = position1123, thunkPosition1123
}
end = position
if !p.rules[ruleSp]() {
goto l1012
}
if !p.rules[ruleTicks5]() {
goto l1012
}
}
l1013:
do(85)
return true
l1012:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 194 RawHtml <- (< (HtmlComment / HtmlTag) > { if p.extension.FilterHTML {
yy = mk_list(LIST, nil)
} else {
yy = mk_str(yytext)
yy.key = HTML
}
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
begin = position
{
position1149, thunkPosition1149 := position, thunkPosition
if !p.rules[ruleHtmlComment]() {
goto l1150
}
goto l1149
l1150:
position, thunkPosition = position1149, thunkPosition1149
if !p.rules[ruleHtmlTag]() {
goto l1148
}
}
l1149:
end = position
do(86)
return true
l1148:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 195 BlankLine <- (Sp Newline) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1151
}
if !p.rules[ruleNewline]() {
goto l1151
}
return true
l1151:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 196 Quoted <- (('"' (!'"' .)* '"') / ('\'' (!'\'' .)* '\'')) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1153, thunkPosition1153 := position, thunkPosition
if !matchChar('"') {
goto l1154
}
l1155:
{
position1156, thunkPosition1156 := position, thunkPosition
if peekChar('"') {
goto l1156
}
if !matchDot() {
goto l1156
}
goto l1155
l1156:
position, thunkPosition = position1156, thunkPosition1156
}
if !matchChar('"') {
goto l1154
}
goto l1153
l1154:
position, thunkPosition = position1153, thunkPosition1153
if !matchChar('\'') {
goto l1152
}
l1157:
{
position1158, thunkPosition1158 := position, thunkPosition
if peekChar('\'') {
goto l1158
}
if !matchDot() {
goto l1158
}
goto l1157
l1158:
position, thunkPosition = position1158, thunkPosition1158
}
if !matchChar('\'') {
goto l1152
}
}
l1153:
return true
l1152:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 197 HtmlAttribute <- ((AlphanumericAscii / '-')+ Spnl ('=' Spnl (Quoted / (!'>' Nonspacechar)+))? Spnl) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1162, thunkPosition1162 := position, thunkPosition
if !p.rules[ruleAlphanumericAscii]() {
goto l1163
}
goto l1162
l1163:
position, thunkPosition = position1162, thunkPosition1162
if !matchChar('-') {
goto l1159
}
}
l1162:
l1160:
{
position1161, thunkPosition1161 := position, thunkPosition
{
position1164, thunkPosition1164 := position, thunkPosition
if !p.rules[ruleAlphanumericAscii]() {
goto l1165
}
goto l1164
l1165:
position, thunkPosition = position1164, thunkPosition1164
if !matchChar('-') {
goto l1161
}
}
l1164:
goto l1160
l1161:
position, thunkPosition = position1161, thunkPosition1161
}
if !p.rules[ruleSpnl]() {
goto l1159
}
{
position1166, thunkPosition1166 := position, thunkPosition
if !matchChar('=') {
goto l1166
}
if !p.rules[ruleSpnl]() {
goto l1166
}
{
position1168, thunkPosition1168 := position, thunkPosition
if !p.rules[ruleQuoted]() {
goto l1169
}
goto l1168
l1169:
position, thunkPosition = position1168, thunkPosition1168
if peekChar('>') {
goto l1166
}
if !p.rules[ruleNonspacechar]() {
goto l1166
}
l1170:
{
position1171, thunkPosition1171 := position, thunkPosition
if peekChar('>') {
goto l1171
}
if !p.rules[ruleNonspacechar]() {
goto l1171
}
goto l1170
l1171:
position, thunkPosition = position1171, thunkPosition1171
}
}
l1168:
goto l1167
l1166:
position, thunkPosition = position1166, thunkPosition1166
}
l1167:
if !p.rules[ruleSpnl]() {
goto l1159
}
return true
l1159:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 198 HtmlComment <- ('<!--' (!'-->' .)* '-->') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchString("<!--") {
goto l1172
}
l1173:
{
position1174, thunkPosition1174 := position, thunkPosition
{
position1175, thunkPosition1175 := position, thunkPosition
if !matchString("-->") {
goto l1175
}
goto l1174
l1175:
position, thunkPosition = position1175, thunkPosition1175
}
if !matchDot() {
goto l1174
}
goto l1173
l1174:
position, thunkPosition = position1174, thunkPosition1174
}
if !matchString("-->") {
goto l1172
}
return true
l1172:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 199 HtmlTag <- ('<' Spnl '/'? AlphanumericAscii+ Spnl HtmlAttribute* '/'? Spnl '>') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('<') {
goto l1176
}
if !p.rules[ruleSpnl]() {
goto l1176
}
{
position1177, thunkPosition1177 := position, thunkPosition
if !matchChar('/') {
goto l1177
}
goto l1178
l1177:
position, thunkPosition = position1177, thunkPosition1177
}
l1178:
if !p.rules[ruleAlphanumericAscii]() {
goto l1176
}
l1179:
{
position1180, thunkPosition1180 := position, thunkPosition
if !p.rules[ruleAlphanumericAscii]() {
goto l1180
}
goto l1179
l1180:
position, thunkPosition = position1180, thunkPosition1180
}
if !p.rules[ruleSpnl]() {
goto l1176
}
l1181:
{
position1182, thunkPosition1182 := position, thunkPosition
if !p.rules[ruleHtmlAttribute]() {
goto l1182
}
goto l1181
l1182:
position, thunkPosition = position1182, thunkPosition1182
}
{
position1183, thunkPosition1183 := position, thunkPosition
if !matchChar('/') {
goto l1183
}
goto l1184
l1183:
position, thunkPosition = position1183, thunkPosition1183
}
l1184:
if !p.rules[ruleSpnl]() {
goto l1176
}
if !matchChar('>') {
goto l1176
}
return true
l1176:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 200 Eof <- !. */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if peekDot() {
goto l1185
}
return true
l1185:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 201 Spacechar <- (' ' / '\t') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1187, thunkPosition1187 := position, thunkPosition
if !matchChar(' ') {
goto l1188
}
goto l1187
l1188:
position, thunkPosition = position1187, thunkPosition1187
if !matchChar('\t') {
goto l1186
}
}
l1187:
return true
l1186:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 202 Nonspacechar <- (!Spacechar !Newline .) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1190, thunkPosition1190 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1190
}
goto l1189
l1190:
position, thunkPosition = position1190, thunkPosition1190
}
{
position1191, thunkPosition1191 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l1191
}
goto l1189
l1191:
position, thunkPosition = position1191, thunkPosition1191
}
if !matchDot() {
goto l1189
}
return true
l1189:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 203 Newline <- ('\n' / ('\r' '\n'?)) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1193, thunkPosition1193 := position, thunkPosition
if !matchChar('\n') {
goto l1194
}
goto l1193
l1194:
position, thunkPosition = position1193, thunkPosition1193
if !matchChar('\r') {
goto l1192
}
{
position1195, thunkPosition1195 := position, thunkPosition
if !matchChar('\n') {
goto l1195
}
goto l1196
l1195:
position, thunkPosition = position1195, thunkPosition1195
}
l1196:
}
l1193:
return true
l1192:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 204 Sp <- Spacechar* */
func() bool {
l1198:
{
position1199, thunkPosition1199 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1199
}
goto l1198
l1199:
position, thunkPosition = position1199, thunkPosition1199
}
return true
},
/* 205 Spnl <- (Sp (Newline Sp)?) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleSp]() {
goto l1200
}
{
position1201, thunkPosition1201 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l1201
}
if !p.rules[ruleSp]() {
goto l1201
}
goto l1202
l1201:
position, thunkPosition = position1201, thunkPosition1201
}
l1202:
return true
l1200:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 206 SpecialChar <- ((&[\\] '\\') | (&[#] '#') | (&[!] '!') | (&[<] '<') | (&[\]] ']') | (&[\[] '[') | (&[&] '&') | (&[`] '`') | (&[_] '_') | (&[*] '*') | (&[\"\'\-.^] ExtendedSpecialChar)) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
if position == len(p.Buffer) {
goto l1203
}
switch p.Buffer[position] {
case '\\':
if !matchChar('\\') {
goto l1203
}
case '#':
if !matchChar('#') {
goto l1203
}
case '!':
if !matchChar('!') {
goto l1203
}
case '<':
if !matchChar('<') {
goto l1203
}
case ']':
if !matchChar(']') {
goto l1203
}
case '[':
if !matchChar('[') {
goto l1203
}
case '&':
if !matchChar('&') {
goto l1203
}
case '`':
if !matchChar('`') {
goto l1203
}
case '_':
if !matchChar('_') {
goto l1203
}
case '*':
if !matchChar('*') {
goto l1203
}
default:
if !p.rules[ruleExtendedSpecialChar]() {
goto l1203
}
}
}
return true
l1203:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 207 NormalChar <- (!((&[\n\r] Newline) | (&[\t ] Spacechar) | (&[!-#&\'*\-.<\[-`] SpecialChar)) .) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1206, thunkPosition1206 := position, thunkPosition
{
if position == len(p.Buffer) {
goto l1206
}
switch p.Buffer[position] {
case '\n', '\r':
if !p.rules[ruleNewline]() {
goto l1206
}
case '\t', ' ':
if !p.rules[ruleSpacechar]() {
goto l1206
}
default:
if !p.rules[ruleSpecialChar]() {
goto l1206
}
}
}
goto l1205
l1206:
position, thunkPosition = position1206, thunkPosition1206
}
if !matchDot() {
goto l1205
}
return true
l1205:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 208 NonAlphanumeric <- [\000-\057\072-\100\133-\140\173-\177] */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchClass(3) {
goto l1208
}
return true
l1208:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 209 Alphanumeric <- ([0-9A-Za-z] / '\200' / '\201' / '\202' / '\203' / '\204' / '\205' / '\206' / '\207' / '\210' / '\211' / '\212' / '\213' / '\214' / '\215' / '\216' / '\217' / '\220' / '\221' / '\222' / '\223' / '\224' / '\225' / '\226' / '\227' / '\230' / '\231' / '\232' / '\233' / '\234' / '\235' / '\236' / '\237' / '\240' / '\241' / '\242' / '\243' / '\244' / '\245' / '\246' / '\247' / '\250' / '\251' / '\252' / '\253' / '\254' / '\255' / '\256' / '\257' / '\260' / '\261' / '\262' / '\263' / '\264' / '\265' / '\266' / '\267' / '\270' / '\271' / '\272' / '\273' / '\274' / '\275' / '\276' / '\277' / '\300' / '\301' / '\302' / '\303' / '\304' / '\305' / '\306' / '\307' / '\310' / '\311' / '\312' / '\313' / '\314' / '\315' / '\316' / '\317' / '\320' / '\321' / '\322' / '\323' / '\324' / '\325' / '\326' / '\327' / '\330' / '\331' / '\332' / '\333' / '\334' / '\335' / '\336' / '\337' / '\340' / '\341' / '\342' / '\343' / '\344' / '\345' / '\346' / '\347' / '\350' / '\351' / '\352' / '\353' / '\354' / '\355' / '\356' / '\357' / '\360' / '\361' / '\362' / '\363' / '\364' / '\365' / '\366' / '\367' / '\370' / '\371' / '\372' / '\373' / '\374' / '\375' / '\376' / '\377') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1210, thunkPosition1210 := position, thunkPosition
if !matchClass(1) {
goto l1211
}
goto l1210
l1211:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\200") {
goto l1212
}
goto l1210
l1212:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\201") {
goto l1213
}
goto l1210
l1213:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\202") {
goto l1214
}
goto l1210
l1214:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\203") {
goto l1215
}
goto l1210
l1215:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\204") {
goto l1216
}
goto l1210
l1216:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\205") {
goto l1217
}
goto l1210
l1217:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\206") {
goto l1218
}
goto l1210
l1218:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\207") {
goto l1219
}
goto l1210
l1219:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\210") {
goto l1220
}
goto l1210
l1220:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\211") {
goto l1221
}
goto l1210
l1221:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\212") {
goto l1222
}
goto l1210
l1222:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\213") {
goto l1223
}
goto l1210
l1223:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\214") {
goto l1224
}
goto l1210
l1224:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\215") {
goto l1225
}
goto l1210
l1225:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\216") {
goto l1226
}
goto l1210
l1226:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\217") {
goto l1227
}
goto l1210
l1227:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\220") {
goto l1228
}
goto l1210
l1228:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\221") {
goto l1229
}
goto l1210
l1229:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\222") {
goto l1230
}
goto l1210
l1230:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\223") {
goto l1231
}
goto l1210
l1231:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\224") {
goto l1232
}
goto l1210
l1232:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\225") {
goto l1233
}
goto l1210
l1233:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\226") {
goto l1234
}
goto l1210
l1234:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\227") {
goto l1235
}
goto l1210
l1235:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\230") {
goto l1236
}
goto l1210
l1236:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\231") {
goto l1237
}
goto l1210
l1237:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\232") {
goto l1238
}
goto l1210
l1238:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\233") {
goto l1239
}
goto l1210
l1239:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\234") {
goto l1240
}
goto l1210
l1240:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\235") {
goto l1241
}
goto l1210
l1241:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\236") {
goto l1242
}
goto l1210
l1242:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\237") {
goto l1243
}
goto l1210
l1243:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\240") {
goto l1244
}
goto l1210
l1244:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\241") {
goto l1245
}
goto l1210
l1245:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\242") {
goto l1246
}
goto l1210
l1246:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\243") {
goto l1247
}
goto l1210
l1247:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\244") {
goto l1248
}
goto l1210
l1248:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\245") {
goto l1249
}
goto l1210
l1249:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\246") {
goto l1250
}
goto l1210
l1250:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\247") {
goto l1251
}
goto l1210
l1251:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\250") {
goto l1252
}
goto l1210
l1252:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\251") {
goto l1253
}
goto l1210
l1253:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\252") {
goto l1254
}
goto l1210
l1254:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\253") {
goto l1255
}
goto l1210
l1255:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\254") {
goto l1256
}
goto l1210
l1256:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\255") {
goto l1257
}
goto l1210
l1257:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\256") {
goto l1258
}
goto l1210
l1258:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\257") {
goto l1259
}
goto l1210
l1259:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\260") {
goto l1260
}
goto l1210
l1260:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\261") {
goto l1261
}
goto l1210
l1261:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\262") {
goto l1262
}
goto l1210
l1262:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\263") {
goto l1263
}
goto l1210
l1263:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\264") {
goto l1264
}
goto l1210
l1264:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\265") {
goto l1265
}
goto l1210
l1265:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\266") {
goto l1266
}
goto l1210
l1266:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\267") {
goto l1267
}
goto l1210
l1267:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\270") {
goto l1268
}
goto l1210
l1268:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\271") {
goto l1269
}
goto l1210
l1269:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\272") {
goto l1270
}
goto l1210
l1270:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\273") {
goto l1271
}
goto l1210
l1271:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\274") {
goto l1272
}
goto l1210
l1272:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\275") {
goto l1273
}
goto l1210
l1273:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\276") {
goto l1274
}
goto l1210
l1274:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\277") {
goto l1275
}
goto l1210
l1275:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\300") {
goto l1276
}
goto l1210
l1276:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\301") {
goto l1277
}
goto l1210
l1277:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\302") {
goto l1278
}
goto l1210
l1278:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\303") {
goto l1279
}
goto l1210
l1279:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\304") {
goto l1280
}
goto l1210
l1280:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\305") {
goto l1281
}
goto l1210
l1281:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\306") {
goto l1282
}
goto l1210
l1282:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\307") {
goto l1283
}
goto l1210
l1283:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\310") {
goto l1284
}
goto l1210
l1284:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\311") {
goto l1285
}
goto l1210
l1285:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\312") {
goto l1286
}
goto l1210
l1286:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\313") {
goto l1287
}
goto l1210
l1287:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\314") {
goto l1288
}
goto l1210
l1288:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\315") {
goto l1289
}
goto l1210
l1289:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\316") {
goto l1290
}
goto l1210
l1290:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\317") {
goto l1291
}
goto l1210
l1291:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\320") {
goto l1292
}
goto l1210
l1292:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\321") {
goto l1293
}
goto l1210
l1293:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\322") {
goto l1294
}
goto l1210
l1294:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\323") {
goto l1295
}
goto l1210
l1295:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\324") {
goto l1296
}
goto l1210
l1296:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\325") {
goto l1297
}
goto l1210
l1297:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\326") {
goto l1298
}
goto l1210
l1298:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\327") {
goto l1299
}
goto l1210
l1299:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\330") {
goto l1300
}
goto l1210
l1300:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\331") {
goto l1301
}
goto l1210
l1301:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\332") {
goto l1302
}
goto l1210
l1302:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\333") {
goto l1303
}
goto l1210
l1303:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\334") {
goto l1304
}
goto l1210
l1304:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\335") {
goto l1305
}
goto l1210
l1305:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\336") {
goto l1306
}
goto l1210
l1306:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\337") {
goto l1307
}
goto l1210
l1307:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\340") {
goto l1308
}
goto l1210
l1308:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\341") {
goto l1309
}
goto l1210
l1309:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\342") {
goto l1310
}
goto l1210
l1310:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\343") {
goto l1311
}
goto l1210
l1311:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\344") {
goto l1312
}
goto l1210
l1312:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\345") {
goto l1313
}
goto l1210
l1313:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\346") {
goto l1314
}
goto l1210
l1314:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\347") {
goto l1315
}
goto l1210
l1315:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\350") {
goto l1316
}
goto l1210
l1316:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\351") {
goto l1317
}
goto l1210
l1317:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\352") {
goto l1318
}
goto l1210
l1318:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\353") {
goto l1319
}
goto l1210
l1319:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\354") {
goto l1320
}
goto l1210
l1320:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\355") {
goto l1321
}
goto l1210
l1321:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\356") {
goto l1322
}
goto l1210
l1322:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\357") {
goto l1323
}
goto l1210
l1323:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\360") {
goto l1324
}
goto l1210
l1324:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\361") {
goto l1325
}
goto l1210
l1325:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\362") {
goto l1326
}
goto l1210
l1326:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\363") {
goto l1327
}
goto l1210
l1327:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\364") {
goto l1328
}
goto l1210
l1328:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\365") {
goto l1329
}
goto l1210
l1329:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\366") {
goto l1330
}
goto l1210
l1330:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\367") {
goto l1331
}
goto l1210
l1331:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\370") {
goto l1332
}
goto l1210
l1332:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\371") {
goto l1333
}
goto l1210
l1333:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\372") {
goto l1334
}
goto l1210
l1334:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\373") {
goto l1335
}
goto l1210
l1335:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\374") {
goto l1336
}
goto l1210
l1336:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\375") {
goto l1337
}
goto l1210
l1337:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\376") {
goto l1338
}
goto l1210
l1338:
position, thunkPosition = position1210, thunkPosition1210
if !matchString("\377") {
goto l1209
}
}
l1210:
return true
l1209:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 210 AlphanumericAscii <- [A-Za-z0-9] */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchClass(8) {
goto l1339
}
return true
l1339:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 211 Digit <- [0-9] */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchClass(7) {
goto l1340
}
return true
l1340:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 212 HexEntity <- (< '&' '#' [Xx] [0-9a-fA-F]+ ';' >) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
begin = position
if !matchChar('&') {
goto l1341
}
if !matchChar('#') {
goto l1341
}
if !matchClass(5) {
goto l1341
}
if !matchClass(0) {
goto l1341
}
l1342:
{
position1343, thunkPosition1343 := position, thunkPosition
if !matchClass(0) {
goto l1343
}
goto l1342
l1343:
position, thunkPosition = position1343, thunkPosition1343
}
if !matchChar(';') {
goto l1341
}
end = position
return true
l1341:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 213 DecEntity <- (< '&' '#' [0-9]+ > ';' >) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
begin = position
if !matchChar('&') {
goto l1344
}
if !matchChar('#') {
goto l1344
}
if !matchClass(7) {
goto l1344
}
l1345:
{
position1346, thunkPosition1346 := position, thunkPosition
if !matchClass(7) {
goto l1346
}
goto l1345
l1346:
position, thunkPosition = position1346, thunkPosition1346
}
end = position
if !matchChar(';') {
goto l1344
}
end = position
return true
l1344:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 214 CharEntity <- (< '&' [A-Za-z0-9]+ ';' >) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
begin = position
if !matchChar('&') {
goto l1347
}
if !matchClass(8) {
goto l1347
}
l1348:
{
position1349, thunkPosition1349 := position, thunkPosition
if !matchClass(8) {
goto l1349
}
goto l1348
l1349:
position, thunkPosition = position1349, thunkPosition1349
}
if !matchChar(';') {
goto l1347
}
end = position
return true
l1347:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 215 NonindentSpace <- (' ' / ' ' / ' ' / '') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1351, thunkPosition1351 := position, thunkPosition
if !matchString(" ") {
goto l1352
}
goto l1351
l1352:
position, thunkPosition = position1351, thunkPosition1351
if !matchString(" ") {
goto l1353
}
goto l1351
l1353:
position, thunkPosition = position1351, thunkPosition1351
if !matchChar(' ') {
goto l1354
}
goto l1351
l1354:
position, thunkPosition = position1351, thunkPosition1351
if !peekDot() {
goto l1350
}
}
l1351:
return true
l1350:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 216 Indent <- ('\t' / ' ') */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1356, thunkPosition1356 := position, thunkPosition
if !matchChar('\t') {
goto l1357
}
goto l1356
l1357:
position, thunkPosition = position1356, thunkPosition1356
if !matchString(" ") {
goto l1355
}
}
l1356:
return true
l1355:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 217 IndentedLine <- (Indent Line) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleIndent]() {
goto l1358
}
if !p.rules[ruleLine]() {
goto l1358
}
return true
l1358:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 218 OptionallyIndentedLine <- (Indent? Line) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1360, thunkPosition1360 := position, thunkPosition
if !p.rules[ruleIndent]() {
goto l1360
}
goto l1361
l1360:
position, thunkPosition = position1360, thunkPosition1360
}
l1361:
if !p.rules[ruleLine]() {
goto l1359
}
return true
l1359:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 219 StartList <- (&. { yy = nil }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !peekDot() {
goto l1362
}
do(87)
return true
l1362:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 220 Line <- (RawLine { yy = mk_str(yytext) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleRawLine]() {
goto l1363
}
do(88)
return true
l1363:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 221 RawLine <- ((< (!'\r' !'\n' .)* Newline >) / (< .+ > Eof)) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1365, thunkPosition1365 := position, thunkPosition
begin = position
l1367:
{
position1368, thunkPosition1368 := position, thunkPosition
if peekChar('\r') {
goto l1368
}
if peekChar('\n') {
goto l1368
}
if !matchDot() {
goto l1368
}
goto l1367
l1368:
position, thunkPosition = position1368, thunkPosition1368
}
if !p.rules[ruleNewline]() {
goto l1366
}
end = position
goto l1365
l1366:
position, thunkPosition = position1365, thunkPosition1365
begin = position
if !matchDot() {
goto l1364
}
l1369:
{
position1370, thunkPosition1370 := position, thunkPosition
if !matchDot() {
goto l1370
}
goto l1369
l1370:
position, thunkPosition = position1370, thunkPosition1370
}
end = position
if !p.rules[ruleEof]() {
goto l1364
}
}
l1365:
return true
l1364:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 222 SkipBlock <- (((!BlankLine RawLine)+ BlankLine*) / BlankLine+) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1372, thunkPosition1372 := position, thunkPosition
{
position1376, thunkPosition1376 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1376
}
goto l1373
l1376:
position, thunkPosition = position1376, thunkPosition1376
}
if !p.rules[ruleRawLine]() {
goto l1373
}
l1374:
{
position1375, thunkPosition1375 := position, thunkPosition
{
position1377, thunkPosition1377 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1377
}
goto l1375
l1377:
position, thunkPosition = position1377, thunkPosition1377
}
if !p.rules[ruleRawLine]() {
goto l1375
}
goto l1374
l1375:
position, thunkPosition = position1375, thunkPosition1375
}
l1378:
{
position1379, thunkPosition1379 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1379
}
goto l1378
l1379:
position, thunkPosition = position1379, thunkPosition1379
}
goto l1372
l1373:
position, thunkPosition = position1372, thunkPosition1372
if !p.rules[ruleBlankLine]() {
goto l1371
}
l1380:
{
position1381, thunkPosition1381 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1381
}
goto l1380
l1381:
position, thunkPosition = position1381, thunkPosition1381
}
}
l1372:
return true
l1371:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 223 ExtendedSpecialChar <- ((&{ p.extension.Smart } ((&[\"] '"') | (&[\'] '\'') | (&[\-] '-') | (&[.] '.'))) / (&{ p.extension.Notes } '^')) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1383, thunkPosition1383 := position, thunkPosition
if !( p.extension.Smart ) {
goto l1384
}
{
if position == len(p.Buffer) {
goto l1384
}
switch p.Buffer[position] {
case '"':
if !matchChar('"') {
goto l1384
}
case '\'':
if !matchChar('\'') {
goto l1384
}
case '-':
if !matchChar('-') {
goto l1384
}
default:
if !matchChar('.') {
goto l1384
}
}
}
goto l1383
l1384:
position, thunkPosition = position1383, thunkPosition1383
if !( p.extension.Notes ) {
goto l1382
}
if !matchChar('^') {
goto l1382
}
}
l1383:
return true
l1382:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 224 Smart <- (&{ p.extension.Smart } (SingleQuoted / ((&[\'] Apostrophe) | (&[\"] DoubleQuoted) | (&[\-] Dash) | (&[.] Ellipsis)))) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !( p.extension.Smart ) {
goto l1386
}
{
position1387, thunkPosition1387 := position, thunkPosition
if !p.rules[ruleSingleQuoted]() {
goto l1388
}
goto l1387
l1388:
position, thunkPosition = position1387, thunkPosition1387
{
if position == len(p.Buffer) {
goto l1386
}
switch p.Buffer[position] {
case '\'':
if !p.rules[ruleApostrophe]() {
goto l1386
}
case '"':
if !p.rules[ruleDoubleQuoted]() {
goto l1386
}
case '-':
if !p.rules[ruleDash]() {
goto l1386
}
default:
if !p.rules[ruleEllipsis]() {
goto l1386
}
}
}
}
l1387:
return true
l1386:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 225 Apostrophe <- ('\'' { yy = mk_element(APOSTROPHE) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('\'') {
goto l1390
}
do(89)
return true
l1390:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 226 Ellipsis <- (('...' / '. . .') { yy = mk_element(ELLIPSIS) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1392, thunkPosition1392 := position, thunkPosition
if !matchString("...") {
goto l1393
}
goto l1392
l1393:
position, thunkPosition = position1392, thunkPosition1392
if !matchString(". . .") {
goto l1391
}
}
l1392:
do(90)
return true
l1391:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 227 Dash <- (EmDash / EnDash) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1395, thunkPosition1395 := position, thunkPosition
if !p.rules[ruleEmDash]() {
goto l1396
}
goto l1395
l1396:
position, thunkPosition = position1395, thunkPosition1395
if !p.rules[ruleEnDash]() {
goto l1394
}
}
l1395:
return true
l1394:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 228 EnDash <- ('-' &Digit { yy = mk_element(ENDASH) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('-') {
goto l1397
}
{
position1398, thunkPosition1398 := position, thunkPosition
if !p.rules[ruleDigit]() {
goto l1397
}
position, thunkPosition = position1398, thunkPosition1398
}
do(91)
return true
l1397:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 229 EmDash <- (('---' / '--') { yy = mk_element(EMDASH) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1400, thunkPosition1400 := position, thunkPosition
if !matchString("---") {
goto l1401
}
goto l1400
l1401:
position, thunkPosition = position1400, thunkPosition1400
if !matchString("--") {
goto l1399
}
}
l1400:
do(92)
return true
l1399:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 230 SingleQuoteStart <- ('\'' ![)!\],.;:-? \t\n] !(((&[r] 're') | (&[l] 'll') | (&[v] 've') | (&[m] 'm') | (&[t] 't') | (&[s] 's')) !Alphanumeric)) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('\'') {
goto l1402
}
{
position1403, thunkPosition1403 := position, thunkPosition
if !matchClass(6) {
goto l1403
}
goto l1402
l1403:
position, thunkPosition = position1403, thunkPosition1403
}
{
position1404, thunkPosition1404 := position, thunkPosition
{
if position == len(p.Buffer) {
goto l1404
}
switch p.Buffer[position] {
case 'r':
if !matchString("re") {
goto l1404
}
case 'l':
if !matchString("ll") {
goto l1404
}
case 'v':
if !matchString("ve") {
goto l1404
}
case 'm':
if !matchChar('m') {
goto l1404
}
case 't':
if !matchChar('t') {
goto l1404
}
default:
if !matchChar('s') {
goto l1404
}
}
}
{
position1406, thunkPosition1406 := position, thunkPosition
if !p.rules[ruleAlphanumeric]() {
goto l1406
}
goto l1404
l1406:
position, thunkPosition = position1406, thunkPosition1406
}
goto l1402
l1404:
position, thunkPosition = position1404, thunkPosition1404
}
return true
l1402:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 231 SingleQuoteEnd <- ('\'' !Alphanumeric) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('\'') {
goto l1407
}
{
position1408, thunkPosition1408 := position, thunkPosition
if !p.rules[ruleAlphanumeric]() {
goto l1408
}
goto l1407
l1408:
position, thunkPosition = position1408, thunkPosition1408
}
return true
l1407:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 232 SingleQuoted <- (SingleQuoteStart StartList (!SingleQuoteEnd Inline { a = cons(b, a) })+ SingleQuoteEnd { yy = mk_list(SINGLEQUOTED, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 2)
if !p.rules[ruleSingleQuoteStart]() {
goto l1409
}
if !p.rules[ruleStartList]() {
goto l1409
}
doarg(yySet, -1)
{
position1412, thunkPosition1412 := position, thunkPosition
if !p.rules[ruleSingleQuoteEnd]() {
goto l1412
}
goto l1409
l1412:
position, thunkPosition = position1412, thunkPosition1412
}
if !p.rules[ruleInline]() {
goto l1409
}
doarg(yySet, -2)
do(93)
l1410:
{
position1411, thunkPosition1411 := position, thunkPosition
{
position1413, thunkPosition1413 := position, thunkPosition
if !p.rules[ruleSingleQuoteEnd]() {
goto l1413
}
goto l1411
l1413:
position, thunkPosition = position1413, thunkPosition1413
}
if !p.rules[ruleInline]() {
goto l1411
}
doarg(yySet, -2)
do(93)
goto l1410
l1411:
position, thunkPosition = position1411, thunkPosition1411
}
if !p.rules[ruleSingleQuoteEnd]() {
goto l1409
}
do(94)
doarg(yyPop, 2)
return true
l1409:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 233 DoubleQuoteStart <- '"' */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('"') {
goto l1414
}
return true
l1414:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 234 DoubleQuoteEnd <- '"' */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchChar('"') {
goto l1415
}
return true
l1415:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 235 DoubleQuoted <- (DoubleQuoteStart StartList (!DoubleQuoteEnd Inline { a = cons(b, a) })+ DoubleQuoteEnd { yy = mk_list(DOUBLEQUOTED, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 2)
if !p.rules[ruleDoubleQuoteStart]() {
goto l1416
}
if !p.rules[ruleStartList]() {
goto l1416
}
doarg(yySet, -1)
{
position1419, thunkPosition1419 := position, thunkPosition
if !p.rules[ruleDoubleQuoteEnd]() {
goto l1419
}
goto l1416
l1419:
position, thunkPosition = position1419, thunkPosition1419
}
if !p.rules[ruleInline]() {
goto l1416
}
doarg(yySet, -2)
do(95)
l1417:
{
position1418, thunkPosition1418 := position, thunkPosition
{
position1420, thunkPosition1420 := position, thunkPosition
if !p.rules[ruleDoubleQuoteEnd]() {
goto l1420
}
goto l1418
l1420:
position, thunkPosition = position1420, thunkPosition1420
}
if !p.rules[ruleInline]() {
goto l1418
}
doarg(yySet, -2)
do(95)
goto l1417
l1418:
position, thunkPosition = position1418, thunkPosition1418
}
if !p.rules[ruleDoubleQuoteEnd]() {
goto l1416
}
do(96)
doarg(yyPop, 2)
return true
l1416:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 236 NoteReference <- (&{ p.extension.Notes } RawNoteReference {
if match, ok := p.find_note(ref.contents.str); ok {
yy = mk_element(NOTE)
yy.children = match.children
yy.contents.str = ""
} else {
yy = mk_str("[^"+ref.contents.str+"]")
}
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !( p.extension.Notes ) {
goto l1421
}
if !p.rules[ruleRawNoteReference]() {
goto l1421
}
doarg(yySet, -1)
do(97)
doarg(yyPop, 1)
return true
l1421:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 237 RawNoteReference <- ('[^' < (!Newline !']' .)+ > ']' { yy = mk_str(yytext) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !matchString("[^") {
goto l1422
}
begin = position
{
position1425, thunkPosition1425 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l1425
}
goto l1422
l1425:
position, thunkPosition = position1425, thunkPosition1425
}
if peekChar(']') {
goto l1422
}
if !matchDot() {
goto l1422
}
l1423:
{
position1424, thunkPosition1424 := position, thunkPosition
{
position1426, thunkPosition1426 := position, thunkPosition
if !p.rules[ruleNewline]() {
goto l1426
}
goto l1424
l1426:
position, thunkPosition = position1426, thunkPosition1426
}
if peekChar(']') {
goto l1424
}
if !matchDot() {
goto l1424
}
goto l1423
l1424:
position, thunkPosition = position1424, thunkPosition1424
}
end = position
if !matchChar(']') {
goto l1422
}
do(98)
return true
l1422:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 238 Note <- (&{ p.extension.Notes } NonindentSpace RawNoteReference ':' Sp StartList (RawNoteBlock { a = cons(yy, a) }) (&Indent RawNoteBlock { a = cons(yy, a) })* { yy = mk_list(NOTE, a)
yy.contents.str = ref.contents.str
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 2)
if !( p.extension.Notes ) {
goto l1427
}
if !p.rules[ruleNonindentSpace]() {
goto l1427
}
if !p.rules[ruleRawNoteReference]() {
goto l1427
}
doarg(yySet, -1)
if !matchChar(':') {
goto l1427
}
if !p.rules[ruleSp]() {
goto l1427
}
if !p.rules[ruleStartList]() {
goto l1427
}
doarg(yySet, -2)
if !p.rules[ruleRawNoteBlock]() {
goto l1427
}
do(99)
l1428:
{
position1429, thunkPosition1429 := position, thunkPosition
{
position1430, thunkPosition1430 := position, thunkPosition
if !p.rules[ruleIndent]() {
goto l1429
}
position, thunkPosition = position1430, thunkPosition1430
}
if !p.rules[ruleRawNoteBlock]() {
goto l1429
}
do(100)
goto l1428
l1429:
position, thunkPosition = position1429, thunkPosition1429
}
do(101)
doarg(yyPop, 2)
return true
l1427:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 239 InlineNote <- (&{ p.extension.Notes } '^[' StartList (!']' Inline { a = cons(yy, a) })+ ']' { yy = mk_list(NOTE, a)
yy.contents.str = "" }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !( p.extension.Notes ) {
goto l1431
}
if !matchString("^[") {
goto l1431
}
if !p.rules[ruleStartList]() {
goto l1431
}
doarg(yySet, -1)
if peekChar(']') {
goto l1431
}
if !p.rules[ruleInline]() {
goto l1431
}
do(102)
l1432:
{
position1433, thunkPosition1433 := position, thunkPosition
if peekChar(']') {
goto l1433
}
if !p.rules[ruleInline]() {
goto l1433
}
do(102)
goto l1432
l1433:
position, thunkPosition = position1433, thunkPosition1433
}
if !matchChar(']') {
goto l1431
}
do(103)
doarg(yyPop, 1)
return true
l1431:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 240 Notes <- (StartList ((Note { a = cons(b, a) }) / SkipBlock)* { p.notes = reverse(a) } commit) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 2)
if !p.rules[ruleStartList]() {
goto l1434
}
doarg(yySet, -1)
l1435:
{
position1436, thunkPosition1436 := position, thunkPosition
{
position1437, thunkPosition1437 := position, thunkPosition
if !p.rules[ruleNote]() {
goto l1438
}
doarg(yySet, -2)
do(104)
goto l1437
l1438:
position, thunkPosition = position1437, thunkPosition1437
if !p.rules[ruleSkipBlock]() {
goto l1436
}
}
l1437:
goto l1435
l1436:
position, thunkPosition = position1436, thunkPosition1436
}
do(105)
if !(commit(thunkPosition0)) {
goto l1434
}
doarg(yyPop, 2)
return true
l1434:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 241 RawNoteBlock <- (StartList (!BlankLine OptionallyIndentedLine { a = cons(yy, a) })+ (< BlankLine* > { a = cons(mk_str(yytext), a) }) { yy = mk_str_from_list(a, true)
yy.key = RAW
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleStartList]() {
goto l1439
}
doarg(yySet, -1)
{
position1442, thunkPosition1442 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1442
}
goto l1439
l1442:
position, thunkPosition = position1442, thunkPosition1442
}
if !p.rules[ruleOptionallyIndentedLine]() {
goto l1439
}
do(106)
l1440:
{
position1441, thunkPosition1441 := position, thunkPosition
{
position1443, thunkPosition1443 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1443
}
goto l1441
l1443:
position, thunkPosition = position1443, thunkPosition1443
}
if !p.rules[ruleOptionallyIndentedLine]() {
goto l1441
}
do(106)
goto l1440
l1441:
position, thunkPosition = position1441, thunkPosition1441
}
begin = position
l1444:
{
position1445, thunkPosition1445 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1445
}
goto l1444
l1445:
position, thunkPosition = position1445, thunkPosition1445
}
end = position
do(107)
do(108)
doarg(yyPop, 1)
return true
l1439:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 242 DefinitionList <- (&{ p.extension.Dlists } StartList (Definition { a = cons(yy, a) })+ { yy = mk_list(DEFINITIONLIST, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !( p.extension.Dlists ) {
goto l1446
}
if !p.rules[ruleStartList]() {
goto l1446
}
doarg(yySet, -1)
if !p.rules[ruleDefinition]() {
goto l1446
}
do(109)
l1447:
{
position1448, thunkPosition1448 := position, thunkPosition
if !p.rules[ruleDefinition]() {
goto l1448
}
do(109)
goto l1447
l1448:
position, thunkPosition = position1448, thunkPosition1448
}
do(110)
doarg(yyPop, 1)
return true
l1446:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 243 Definition <- (&((!Defmark RawLine)+ BlankLine? Defmark) StartList (DListTitle { a = cons(yy, a) })+ (DefTight / DefLoose) {
for e := yy.children; e != nil; e = e.next {
e.key = DEFDATA
}
a = cons(yy, a)
} { yy = mk_list(LIST, a) }) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
{
position1450, thunkPosition1450 := position, thunkPosition
{
position1453, thunkPosition1453 := position, thunkPosition
if !p.rules[ruleDefmark]() {
goto l1453
}
goto l1449
l1453:
position, thunkPosition = position1453, thunkPosition1453
}
if !p.rules[ruleRawLine]() {
goto l1449
}
l1451:
{
position1452, thunkPosition1452 := position, thunkPosition
{
position1454, thunkPosition1454 := position, thunkPosition
if !p.rules[ruleDefmark]() {
goto l1454
}
goto l1452
l1454:
position, thunkPosition = position1454, thunkPosition1454
}
if !p.rules[ruleRawLine]() {
goto l1452
}
goto l1451
l1452:
position, thunkPosition = position1452, thunkPosition1452
}
{
position1455, thunkPosition1455 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1455
}
goto l1456
l1455:
position, thunkPosition = position1455, thunkPosition1455
}
l1456:
if !p.rules[ruleDefmark]() {
goto l1449
}
position, thunkPosition = position1450, thunkPosition1450
}
if !p.rules[ruleStartList]() {
goto l1449
}
doarg(yySet, -1)
if !p.rules[ruleDListTitle]() {
goto l1449
}
do(111)
l1457:
{
position1458, thunkPosition1458 := position, thunkPosition
if !p.rules[ruleDListTitle]() {
goto l1458
}
do(111)
goto l1457
l1458:
position, thunkPosition = position1458, thunkPosition1458
}
{
position1459, thunkPosition1459 := position, thunkPosition
if !p.rules[ruleDefTight]() {
goto l1460
}
goto l1459
l1460:
position, thunkPosition = position1459, thunkPosition1459
if !p.rules[ruleDefLoose]() {
goto l1449
}
}
l1459:
do(112)
do(113)
doarg(yyPop, 1)
return true
l1449:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 244 DListTitle <- (NonindentSpace !Defmark &Nonspacechar StartList (!Endline Inline { a = cons(yy, a) })+ Sp Newline { yy = mk_list(LIST, a)
yy.key = DEFTITLE
}) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
doarg(yyPush, 1)
if !p.rules[ruleNonindentSpace]() {
goto l1461
}
{
position1462, thunkPosition1462 := position, thunkPosition
if !p.rules[ruleDefmark]() {
goto l1462
}
goto l1461
l1462:
position, thunkPosition = position1462, thunkPosition1462
}
{
position1463, thunkPosition1463 := position, thunkPosition
if !p.rules[ruleNonspacechar]() {
goto l1461
}
position, thunkPosition = position1463, thunkPosition1463
}
if !p.rules[ruleStartList]() {
goto l1461
}
doarg(yySet, -1)
{
position1466, thunkPosition1466 := position, thunkPosition
if !p.rules[ruleEndline]() {
goto l1466
}
goto l1461
l1466:
position, thunkPosition = position1466, thunkPosition1466
}
if !p.rules[ruleInline]() {
goto l1461
}
do(114)
l1464:
{
position1465, thunkPosition1465 := position, thunkPosition
{
position1467, thunkPosition1467 := position, thunkPosition
if !p.rules[ruleEndline]() {
goto l1467
}
goto l1465
l1467:
position, thunkPosition = position1467, thunkPosition1467
}
if !p.rules[ruleInline]() {
goto l1465
}
do(114)
goto l1464
l1465:
position, thunkPosition = position1465, thunkPosition1465
}
if !p.rules[ruleSp]() {
goto l1461
}
if !p.rules[ruleNewline]() {
goto l1461
}
do(115)
doarg(yyPop, 1)
return true
l1461:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 245 DefTight <- (&Defmark ListTight) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
{
position1469, thunkPosition1469 := position, thunkPosition
if !p.rules[ruleDefmark]() {
goto l1468
}
position, thunkPosition = position1469, thunkPosition1469
}
if !p.rules[ruleListTight]() {
goto l1468
}
return true
l1468:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 246 DefLoose <- (BlankLine &Defmark ListLoose) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleBlankLine]() {
goto l1470
}
{
position1471, thunkPosition1471 := position, thunkPosition
if !p.rules[ruleDefmark]() {
goto l1470
}
position, thunkPosition = position1471, thunkPosition1471
}
if !p.rules[ruleListLoose]() {
goto l1470
}
return true
l1470:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 247 Defmark <- (NonindentSpace (':' / '~') Spacechar+) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !p.rules[ruleNonindentSpace]() {
goto l1472
}
{
position1473, thunkPosition1473 := position, thunkPosition
if !matchChar(':') {
goto l1474
}
goto l1473
l1474:
position, thunkPosition = position1473, thunkPosition1473
if !matchChar('~') {
goto l1472
}
}
l1473:
if !p.rules[ruleSpacechar]() {
goto l1472
}
l1475:
{
position1476, thunkPosition1476 := position, thunkPosition
if !p.rules[ruleSpacechar]() {
goto l1476
}
goto l1475
l1476:
position, thunkPosition = position1476, thunkPosition1476
}
return true
l1472:
position, thunkPosition = position0, thunkPosition0
return false
},
/* 248 DefMarker <- (&{ p.extension.Dlists } Defmark) */
func() bool {
position0, thunkPosition0 := position, thunkPosition
if !( p.extension.Dlists ) {
goto l1477
}
if !p.rules[ruleDefmark]() {
goto l1477
}
return true
l1477:
position, thunkPosition = position0, thunkPosition0
return false
},
}
}
/*
* List manipulation functions
*/
/* cons - cons an element onto a list, returning pointer to new head
*/
func cons(new, list *element) *element {
new.next = list
return new
}
/* reverse - reverse a list, returning pointer to new list
*/
func reverse(list *element) (new *element) {
for list != nil {
next := list.next
new = cons(list, new)
list = next
}
return
}
/* concat_string_list - concatenates string contents of list of STR elements.
*/
func concat_string_list(list *element) string {
s := ""
for list != nil {
s += list.contents.str
list = list.next
}
return s
}
/*
* Auxiliary functions for parsing actions.
* These make it easier to build up data structures (including lists)
* in the parsing actions.
*/
/* mk_element - generic constructor for element
*/
var elbuf []element
var elock sync.Mutex
func mk_element(key int) *element {
elock.Lock()
if len(elbuf) == 0 {
elbuf = make([]element, 1024)
}
e := &elbuf[0]
elbuf = elbuf[1:]
elock.Unlock()
e.key = key
return e
}
/* mk_str - constructor for STR element
*/
func mk_str(s string) (result *element) {
result = mk_element(STR)
result.contents.str = s
return
}
/* mk_str_from_list - makes STR element by concatenating a
* reversed list of strings, adding optional extra newline
*/
func mk_str_from_list(list *element, extra_newline bool) (result *element) {
s := concat_string_list(reverse(list))
if extra_newline {
s += "\n"
}
result = mk_element(STR)
result.contents.str = s
return
}
/* mk_list - makes new list with key 'key' and children the reverse of 'lst'.
* This is designed to be used with cons to build lists in a parser action.
* The reversing is necessary because cons adds to the head of a list.
*/
func mk_list(key int, lst *element) *element {
result := mk_element(key)
result.children = reverse(lst)
return result
}
/* mk_link - constructor for LINK element
*/
func mk_link(label *element, url, title string) *element {
result := mk_element(LINK)
result.contents.link = &link{label: label, url: url, title: title}
return result
}
/* match_inlines - returns true if inline lists match (case-insensitive...)
*/
func match_inlines(l1, l2 *element) bool {
for l1 != nil && l2 != nil {
if l1.key != l2.key {
return false
}
switch l1.key {
case SPACE, LINEBREAK, ELLIPSIS, EMDASH, ENDASH, APOSTROPHE:
break
case CODE, STR, HTML:
if strings.ToUpper(l1.contents.str) != strings.ToUpper(l2.contents.str) {
return false
}
case EMPH, STRONG, LIST, SINGLEQUOTED, DOUBLEQUOTED:
if !match_inlines(l1.children, l2.children) {
return false
}
case LINK, IMAGE:
return false /* No links or images within links */
default:
log.Fatalf("match_inlines encountered unknown key = %d\n", l1.key)
}
l1 = l1.next
l2 = l2.next
}
return l1 == nil && l2 == nil /* return true if both lists exhausted */
}
/* find_reference - return true if link found in references matching label.
* 'link' is modified with the matching url and title.
*/
func (d *Doc) findReference(label *element) (*link, bool) {
for cur := d.references; cur != nil; cur = cur.next {
l := cur.contents.link
if match_inlines(label, l.label) {
return l, true
}
}
return nil, false
}
/* find_note - return true if note found in notes matching label.
* if found, 'result' is set to point to matched note.
*/
func (d *Doc) find_note(label string) (*element, bool) {
for el := d.notes; el != nil; el = el.next {
if label == el.contents.str {
return el, true
}
}
return nil, false
}
/* print tree of elements, for debugging only.
*/
func print_tree(elt *element, indent int) {
var key string
for elt != nil {
for i := 0; i < indent; i++ {
fmt.Print("\t")
}
key = keynames[elt.key]
if key == "" {
key = "?"
}
if elt.key == STR {
fmt.Printf("%p:\t%s\t'%s'\n", elt, key, elt.contents.str)
} else {
fmt.Printf("%p:\t%s %p\n", elt, key, elt.next)
}
if elt.children != nil {
print_tree(elt.children, indent+1)
}
elt = elt.next
}
}
var keynames = [numVAL]string{
LIST: "LIST",
RAW: "RAW",
SPACE: "SPACE",
LINEBREAK: "LINEBREAK",
ELLIPSIS: "ELLIPSIS",
EMDASH: "EMDASH",
ENDASH: "ENDASH",
APOSTROPHE: "APOSTROPHE",
SINGLEQUOTED: "SINGLEQUOTED",
DOUBLEQUOTED: "DOUBLEQUOTED",
STR: "STR",
LINK: "LINK",
IMAGE: "IMAGE",
CODE: "CODE",
HTML: "HTML",
EMPH: "EMPH",
STRONG: "STRONG",
PLAIN: "PLAIN",
PARA: "PARA",
LISTITEM: "LISTITEM",
BULLETLIST: "BULLETLIST",
ORDEREDLIST: "ORDEREDLIST",
H1: "H1",
H2: "H2",
H3: "H3",
H4: "H4",
H5: "H5",
H6: "H6",
BLOCKQUOTE: "BLOCKQUOTE",
VERBATIM: "VERBATIM",
HTMLBLOCK: "HTMLBLOCK",
HRULE: "HRULE",
REFERENCE: "REFERENCE",
NOTE: "NOTE",
DEFINITIONLIST: "DEFINITIONLIST",
DEFTITLE: "DEFTITLE",
DEFDATA: "DEFDATA",
}