55 lines
1.5 KiB
Go
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>]
|
|
}
|