package shell type Statement struct { BaseToken } type StatementParameters struct{} func (p *StatementParameters) SubParsers() []Parser { return []Parser{ &BaseParser{ parameters: &QuoteParameters{}, }, &BaseParser{ parameters: &SingleQuoteParameters{}, }, &BaseParser{ parameters: &WordParameters{}, }, &BaseParser{ parameters: &DollarParameters{}, }, &BaseParser{ parameters: &PipeParameters{}, }, &BaseParser{ parameters: &SubshellParameters{}, }, &BaseParser{ parameters: &BlockParameters{}, }, } } func (p *StatementParameters) Supports(charsBefore []rune, r rune) bool { return true } func (p *StatementParameters) MakeToken() Token { return &Statement{} } func (p *StatementParameters) ShouldLeave(charsBefore []rune, r rune) bool { if r == '\n' || r == ';' { return countBackslashSuffixes(charsBefore)%2 == 0 } return false }