| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- // package syntax -- синтаксический потоковый анализатор
- //
- // Читает по одно литере и пытается определеить символ
- package syntax
- import (
- "fmt"
- лог "log"
- )
- // Синтаксис -- синтаксический потоковый анализатор
- type Синтаксис struct {
- списокРун []rune // Исходный набор рун для анализа
- рунаТекущ rune
- }
- // НовСинтаксис -- возвращает новый потоовый синтаксический анализатор
- func НовСинтаксис(списРун []rune) (*Синтаксис, error) {
- лог.Printf("NewSyntax()\n")
- if списРун == nil {
- return nil, fmt.Errorf("НовСинтаксис(): runeSrc==nil")
- }
- sf := &Синтаксис{
- списокРун: списРун,
- }
- return sf, nil
- }
- // Пуск -- обрабатыает входящий поток данных
- func (сам *Синтаксис) Пуск() error {
- лог.Printf("Синтаксис.Пуск()\n")
- i := 0
- for {
- if len(сам.списокРун) == 0 {
- break
- }
- i++
- }
- return fmt.Errorf("Синтаксис.Пуск(): доделать")
- }
- // Пытается вычислить начало модуля
- func (сам *Синтаксис) checkModuleBegin() bool {
- return false
- }
- // Классифицирует очередную руну из текста
- func (sf *Синтаксис) classifyRune(rune_ rune) string {
- return ""
- }
|