// 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 "" }