feat(binana): change tool to deposit generated files into an 'artifacts' folder that isn't retained by repository history

This commit is contained in:
phaneron 2026-02-28 02:34:20 -05:00
parent 68f52b8efd
commit 47b08df145
44 changed files with 904 additions and 622 deletions

79
go/symbols/loader.go Normal file
View file

@ -0,0 +1,79 @@
package symbols
import (
"bufio"
"errors"
"fmt"
"io"
"strings"
)
const min_columns = 3
type loader struct {
filename string
input *bufio.Reader
table *Table
line_number int
}
func (l *loader) read_line() (line string, err error) {
line, err = l.input.ReadString('\n')
if err != nil {
return
}
line = strings.TrimRight(line, "\r\n")
l.line_number++
return
}
func (l *loader) parse_line(line string) (err error) {
var table_entry TableEntry
table_entry.Filename = l.filename
table_entry.Linenumber = l.line_number
if line == "" {
//err = fmt.Errorf("%w: %s:%d", ErrLineLeftEmpty, table_entry.Filename, table_entry.Linenumber)
return
}
if err = table_entry.Symbol.Parse(line); err != nil {
err = fmt.Errorf("%w: %s:%d", err, table_entry.Filename, table_entry.Linenumber)
return
}
err = l.table.Insert(&table_entry)
return
}
func load(filename string, file io.Reader, table *Table) (err error) {
l := new(loader)
l.input = bufio.NewReader(file)
l.filename = filename
l.table = table
var (
line string
)
for {
line, err = l.read_line()
if err != nil {
if errors.Is(err, io.EOF) {
err = nil
break
} else {
err = fmt.Errorf("symbols: error reading at line %d: %w", l.line_number, err)
return
}
}
if err = l.parse_line(line); err != nil {
err = fmt.Errorf("symbols: error parsing at line %d: %w", l.line_number, err)
return
}
}
return
}