c1d3f61b73
Signed-off-by: Alejandro Mery <amery@jpi.io>
45 lines
713 B
Go
45 lines
713 B
Go
package parser
|
|
|
|
import "log"
|
|
|
|
func (p *Parser) push(tok Token) {
|
|
n := len(p.queue)
|
|
p.queue = append(p.queue, tok)
|
|
|
|
log.Printf("queue[%v]: %s", n, tok)
|
|
}
|
|
|
|
func (p *Parser) pushString(typ TokenType) {
|
|
s := p.src.Emit()
|
|
|
|
el := Token{
|
|
Type: typ,
|
|
Value: s,
|
|
Position: p.pos,
|
|
}
|
|
|
|
p.pos.StepN(len(s))
|
|
|
|
p.push(el)
|
|
}
|
|
|
|
// stepLine discards the data and moves the position
|
|
// to the next line
|
|
func (p *Parser) stepLine() {
|
|
p.src.Discard()
|
|
p.pos.StepLine()
|
|
}
|
|
|
|
// stepRune discards the data and moves the position
|
|
// on rune forward on the same line
|
|
func (p *Parser) stepRune() {
|
|
p.src.Discard()
|
|
p.pos.Step()
|
|
}
|
|
|
|
func (p *Parser) stepString() string {
|
|
s := p.src.Emit()
|
|
p.pos.StepN(len(s))
|
|
return s
|
|
}
|