Browse Source

SVI Добавление кода proi

SVI 1 month ago
parent
commit
adbdb7457f
6 changed files with 59 additions and 0 deletions
  1. 2 0
      Taskfile.yml
  2. 10 0
      cmd/proi/main.go
  3. 3 0
      go.mod
  4. 11 0
      lev2/lexer/lexer.go
  5. 32 0
      lev3/proi/proi.go
  6. 1 0
      plt/main.plt

+ 2 - 0
Taskfile.yml

@@ -16,6 +16,8 @@ tasks:
       - clear
       - clear
       - go fmt ./...
       - go fmt ./...
       - go run -race ./cmd/proi/main.go
       - go run -race ./cmd/proi/main.go
+    env:
+      MAIN_PROLET: ./plt/main.plt
   ollama:
   ollama:
     desc: "Запуск LLM под мою конфигурацию железа"
     desc: "Запуск LLM под мою конфигурацию железа"
     cmds:
     cmds:

+ 10 - 0
cmd/proi/main.go

@@ -0,0 +1,10 @@
+package main
+
+import (
+	"prolet/lev3/proi"
+)
+
+func main() {
+	// Создаём и запускаем интерпретатор
+	proi.Запустить()
+}

+ 3 - 0
go.mod

@@ -0,0 +1,3 @@
+module prolet
+
+go 1.25.5

+ 11 - 0
lev2/lexer/lexer.go

@@ -0,0 +1,11 @@
+package lexer
+
+import "fmt"
+
+func Parse(binData []byte) ([]string, error) {
+	strData := string(binData)
+	if strData == "" {
+		return nil, fmt.Errorf("lexer.PArse(): not have code for lexer")
+	}
+	return []string{}, nil
+}

+ 32 - 0
lev3/proi/proi.go

@@ -0,0 +1,32 @@
+// package proi -- интерпретатор prolet
+package proi
+
+import (
+	"fmt"
+	"os"
+
+	"prolet/lev2/lexer"
+)
+
+// Запустить — основная точка входа интерпретатора
+func Запустить() {
+	envMain := os.Getenv("MAIN_PROLET")
+	if envMain == "" {
+		fmt.Println("Задайте вашей программе запуск MAIN_PROLET")
+		fmt.Println("Файлы ищутся в ./plt/ast_src/")
+		os.Exit(1)
+	}
+
+	binData, err := os.ReadFile(envMain)
+	if err != nil {
+		panic(fmt.Errorf("не удалось прочитать %s, err=\n\t%v", envMain, err))
+	}
+
+	lstLex, err := lexer.Parse(binData)
+	if err != nil {
+		panic(fmt.Errorf("in work lexer, err=\n\t%v", err))
+	}
+	for i, lex := range lstLex {
+		fmt.Println("lex", i, lex)
+	}
+}

+ 1 - 0
plt/main.plt

@@ -1,3 +1,4 @@
+()
 (цел нов 10 а)
 (цел нов 10 а)
 (цел нов 20 б)
 (цел нов 20 б)
 (цел слож а б)
 (цел слож а б)