| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // 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(справкаПоЗапуску)
- }
|