// package compiler -- главный тип сервиса компилятора package compiler import ( мФорм "fmt" мЛог "log" мОс "os" мМод "p78git.ddns.net/svi/odeft/internal/module" ) // Компилятор -- главный тип сервиса компилятора type Компилятор struct { модульГлав *мМод.Модуль } // НовКомпилятор -- возвращает новый тип компилятора func НовКомпилятор() (*Компилятор, error) { мЛог.Printf("НовКомпилятор()\n") сам := &Компилятор{} модульГлавИмяФайла, ош := сам.главМодульПолуч() if ош != nil { return nil, мФорм.Errorf("НовКомпилятор(): при получении имени файла главного модуля, ош\n\t%w", ош) } сам.модульГлав, ош = мМод.НовМодуль(модульГлавИмяФайла) if ош != nil { return nil, мФорм.Errorf("НовКомпилятор(): при создании главного модуля, ош\n\t%w", ош) } return сам, nil } // Пуск -- запускает компилятор в работу func (сам *Компилятор) Пуск() error { мЛог.Printf("Компилятор.Пуск()\n") return nil } // Получает главный модуль программы из окружния для компиляции func (sf *Компилятор) главМодульПолуч() (string, error) { мЛог.Printf("Компилятор.главМодульПолуч()\n") исхГлавИмя := мОс.Getenv("SRC_MAIN") if исхГлавИмя == "" { sf.справкаПечать() return "", мФорм.Errorf("Компилятор.главМодульПолуч(): env SRC_MAIN not set") } return исхГлавИмя, nil } const ( справкаПоЗапуску = `Оберон-У компилятор. 2023 г. BSD-2 Для запуска компилятора необходимо определить переменную окружения: export SRC_MAIN="./main.ou" Для подробной справки о языке смотрите тут: http://p78git.ddns.net/svi/odeft ` ) // Печатает справку по использованию func (sf *Компилятор) справкаПечать() { мЛог.Print(справкаПоЗапуску) }