type InputStream … // NewIoStream creates a new input stream from the given io.Reader reader. // Note that the reader is read completely into memory and so it must actually // have a stopping point - you cannot pass in a reader on an open-ended source such // as a socket for instance. func NewIoStream(reader io.Reader) *InputStream { … } // NewInputStream creates a new input stream from the given string func NewInputStream(data string) *InputStream { … } func (is *InputStream) reset() { … } // Consume moves the input pointer to the next character in the input stream func (is *InputStream) Consume() { … } // LA returns the character at the given offset from the start of the input stream func (is *InputStream) LA(offset int) int { … } // LT returns the character at the given offset from the start of the input stream func (is *InputStream) LT(offset int) int { … } // Index returns the current offset in to the input stream func (is *InputStream) Index() int { … } // Size returns the total number of characters in the input stream func (is *InputStream) Size() int { … } // Mark does nothing here as we have entire buffer func (is *InputStream) Mark() int { … } // Release does nothing here as we have entire buffer func (is *InputStream) Release(_ int) { … } // Seek the input point to the provided index offset func (is *InputStream) Seek(index int) { … } // GetText returns the text from the input stream from the start to the stop index func (is *InputStream) GetText(start int, stop int) string { … } // GetTextFromTokens returns the text from the input stream from the first character of the start token to the last // character of the stop token func (is *InputStream) GetTextFromTokens(start, stop Token) string { … } func (is *InputStream) GetTextFromInterval(i Interval) string { … } func (*InputStream) GetSourceName() string { … } // String returns the entire input stream as a string func (is *InputStream) String() string { … }