spo/ass3/zbirnik/parsing/pregledovalnik.go
aljazbrodar. ad4eba0796 regexp
2025-12-28 14:52:19 +01:00

55 lines
1.5 KiB
Go

package main
import (
"fmt"
"os"
"regexp"
)
/*
type ukaz struct {
opcode int
st_operandov int
format int
}
var ukazna_tabela = map[string]ukaz{
"LDA":
}*/
func main() {
inputbyte, err := os.ReadFile("input.asm")
if err != nil {
fmt.Println("Error reading input file: ", err)
return
}
input := string(inputbyte)
pattern := regexp.MustCompile(`.*\n`)
matches := pattern.FindAllString(input, -1)
//var cleared_matches []string
for _, el := range matches {
match_pure_comment, err := regexp.MatchString(`(?m)^[\t ]*\..*$\n`, el)
if err != nil {
fmt.Println("Error while matching string.")
}
if match_pure_comment {
continue
}
match_empty, err := regexp.MatchString(`(?m)^[\t ]*$\n`, el)
if err != nil {
fmt.Println("Error while matching string.")
}
if match_empty {
continue
}
match_command, err := regexp.MatchString(``, el)
fmt.Print(el)
}
//Zbirnik mora opraviti naslednje naloge:
//1) Pregledati in razčleniti zbirniški stavek (pregledovalnik)
//2) Mnemonike nadomestiti z operacijskimi kodami
//3) Simbolična imena nadomestiti z ustreznimi številskimi ekvivalenti
//4) Razrešiti simbolične operande
//...
//<zbirniski stavek> ::== [<oznaka stavka>] <ločilo> <mnemonik> <ločilo> {<operand> <ločilo>} [<komentar>]
}