diff --git a/lexer/position.go b/lexer/position.go index 9e2470c..922d701 100644 --- a/lexer/position.go +++ b/lexer/position.go @@ -64,3 +64,29 @@ func (p *Position) StepLine() { p.Line++ p.Column = 1 } + +// Next returns a new Position one rune forward +// on the line +func (p Position) Next() Position { + if p.Line == 0 { + p.Reset() + } + + return Position{ + Line: p.Line, + Column: p.Column + 1, + } +} + +// NextLine returns a new Position at the begining of the next +// line. +func (p Position) NextLine() Position { + if p.Line == 0 { + p.Reset() + } + + return Position{ + Line: p.Line + 1, + Column: 1, + } +}