// package src_rune -- руна исходника package src_rune import ( мФорм "fmt" мЮникод "unicode" ) const ( // Класс литеры буква = "буква" цифра = "цифра" пробел = "пробел" точка = "точка" новСтрока = "\n" ) // ИсхРуна -- руна исходника type ИсхРуна struct { знач rune // Хранимая руна тип string // Тип руны } // НовИсхРуна -- возвращае тновую руну исходника func НовИсхРуна(руна rune) (*ИсхРуна, error) { сам := &ИсхРуна{ знач: руна, } if ош := сам.типУст(); ош != nil { return nil, мФорм.Errorf("НовИсхРуна(): при проверке типа, ош=\n\t%w", ош) } return сам, nil } // Устанавливает тип руны func (сам *ИсхРуна) типУст() error { if мЮникод.IsLetter(сам.знач) { сам.тип = буква } if мЮникод.IsDigit(сам.знач) { сам.тип = цифра } if сам.тип == "" { сам.тип = "неизвестно" return мФорм.Errorf("ИсхРуна.типУст(): неизвестный тип руны (%v)", сам.знач) } return nil }