Updated module path

This commit is contained in:
Eduard Urbach 2025-02-25 17:16:09 +01:00
parent 98edfb19fd
commit 91f34bc88f
Signed by: akyoto
GPG Key ID: C874F672B1AF20C0
211 changed files with 506 additions and 506 deletions

View File

@ -12,7 +12,7 @@ A programming language that compiles down to machine code.
## Installation
```shell
git clone https://git.akyoto.dev/cli/q
git clone https://git.urbach.dev/cli/q
cd q
go build
```
@ -48,13 +48,13 @@ q build examples/hello --os windows
## Status
`q` is under heavy development and not ready for production yet.
Feel free to [get in touch](https://akyoto.dev/contact) if you are interested in helping out.
Feel free to [get in touch](https://urbach.dev/contact) if you are interested in helping out.
The biggest obstacle right now is the lack of funding. If you want to help out financially you can [donate towards the project](https://en.liberapay.com/akyoto).
## License
Please see the [license documentation](https://akyoto.dev/license).
Please see the [license documentation](https://urbach.dev/license).
## Copyright

6
go.mod
View File

@ -1,10 +1,10 @@
module git.akyoto.dev/cli/q
module git.urbach.dev/cli/q
go 1.24
require (
git.akyoto.dev/go/assert v0.1.3
git.akyoto.dev/go/color v0.1.3
git.urbach.dev/go/assert v0.0.0-20250225153414-fc1f84f19edf
git.urbach.dev/go/color v0.0.0-20250225153715-1b0b4cb28f7d
)
require golang.org/x/sys v0.30.0 // indirect

8
go.sum
View File

@ -1,6 +1,6 @@
git.akyoto.dev/go/assert v0.1.3 h1:QwCUbmG4aZYsNk/OuRBz1zWVKmGlDUHhOnnDBfn8Qw8=
git.akyoto.dev/go/assert v0.1.3/go.mod h1:0GzMaM0eURuDwtGkJJkCsI7r2aUKr+5GmWNTFPgDocM=
git.akyoto.dev/go/color v0.1.3 h1:kqOVYaPJJDHi8qEwTZkZecQaUENBToaLmiiV1Gg++GM=
git.akyoto.dev/go/color v0.1.3/go.mod h1:e00cRnX0fzFyIYEpAA7dCR/Hlk0/2YpXpVQaMT5Zoss=
git.urbach.dev/go/assert v0.0.0-20250225153414-fc1f84f19edf h1:BQWa5GKNUsA5CSUa/+UlFWYCEVe3IDDKRbVqBLK0mAE=
git.urbach.dev/go/assert v0.0.0-20250225153414-fc1f84f19edf/go.mod h1:y9jGII9JFiF1HNIju0u87OyPCt82xKCtqnAFyEreCDo=
git.urbach.dev/go/color v0.0.0-20250225153715-1b0b4cb28f7d h1:j1ARCrjUYE/c1STH/s6UYGQoOXAkxXll4AFhTb8P2GE=
git.urbach.dev/go/color v0.0.0-20250225153715-1b0b4cb28f7d/go.mod h1:UE8tQTrlWeVPKhfPZ9G5QrDFRhL9EoPazcDgfgd5Xsk=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=

View File

@ -3,7 +3,7 @@ package main
import (
"os"
"git.akyoto.dev/cli/q/src/cli"
"git.urbach.dev/cli/q/src/cli"
)
func main() {

View File

@ -1,6 +1,6 @@
package arm
import "git.akyoto.dev/cli/q/src/cpu"
import "git.urbach.dev/cli/q/src/cpu"
const (
X0 cpu.Register = iota

View File

@ -3,8 +3,8 @@ package arm_test
import (
"testing"
"git.akyoto.dev/cli/q/src/arm"
"git.akyoto.dev/go/assert"
"git.urbach.dev/cli/q/src/arm"
"git.urbach.dev/go/assert"
)
func TestRegisters(t *testing.T) {

View File

@ -3,7 +3,7 @@ package asm
import (
"maps"
"git.akyoto.dev/cli/q/src/data"
"git.urbach.dev/cli/q/src/data"
)
// Assembler contains a list of instructions.

View File

@ -1,6 +1,6 @@
package asm
import "git.akyoto.dev/cli/q/src/cpu"
import "git.urbach.dev/cli/q/src/cpu"
// CanSkip returns true if the register/register operation can be skipped.
func (a *Assembler) CanSkip(mnemonic Mnemonic, left cpu.Register, right cpu.Register) bool {

View File

@ -6,7 +6,7 @@ import (
"strconv"
"strings"
"git.akyoto.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/cpu"
)
type Memory struct {

View File

@ -3,7 +3,7 @@ package asm
import (
"fmt"
"git.akyoto.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/cpu"
)
// MemoryRegister operates with a memory address and a number.

View File

@ -1,7 +1,7 @@
package asm
import (
"git.akyoto.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/cpu"
)
// Register operates with a single register.

View File

@ -3,7 +3,7 @@ package asm
import (
"fmt"
"git.akyoto.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/cpu"
)
// RegisterLabel operates with a register and a label.

View File

@ -3,7 +3,7 @@ package asm
import (
"fmt"
"git.akyoto.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/cpu"
)
// RegisterNumber operates with a register and a number.

View File

@ -3,7 +3,7 @@ package asm
import (
"fmt"
"git.akyoto.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/cpu"
)
// RegisterRegister operates with two registers.

View File

@ -1,9 +1,9 @@
package asmc
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/cli/q/src/dll"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/dll"
)
// Finalize generates the final machine code.

View File

@ -1,8 +1,8 @@
package asmc
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/x86"
)
func (c *compiler) call(x asm.Instruction) {

View File

@ -1,11 +1,11 @@
package asmc
import (
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/cli/q/src/elf"
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/macho"
"git.akyoto.dev/cli/q/src/pe"
"git.urbach.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/elf"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/macho"
"git.urbach.dev/cli/q/src/pe"
)
// codeOffset returns the file offset of the code section.

View File

@ -1,8 +1,8 @@
package asmc
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/x86"
)
func (c *compiler) compile(x asm.Instruction) {

View File

@ -1,6 +1,6 @@
package asmc
import "git.akyoto.dev/cli/q/src/dll"
import "git.urbach.dev/cli/q/src/dll"
type compiler struct {
code []byte

View File

@ -3,8 +3,8 @@ package asmc
import (
"strings"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/x86"
)
func (c *compiler) dllCall(x asm.Instruction) {

View File

@ -1,8 +1,8 @@
package asmc
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/x86"
)
func (c *compiler) jump(x asm.Instruction) {

View File

@ -3,8 +3,8 @@ package asmc
import (
"math"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/x86"
)
func (c *compiler) load(x asm.Instruction) {

View File

@ -3,9 +3,9 @@ package asmc
import (
"strings"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/x86"
)
func (c *compiler) move(x asm.Instruction) {

View File

@ -5,9 +5,9 @@ import (
"fmt"
"slices"
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/sizeof"
"git.urbach.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/sizeof"
)
// resolvePointers resolves the addresses of all pointers within the code and writes the correct addresses to the code slice.

View File

@ -3,9 +3,9 @@ package asmc
import (
"math"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/x86"
)
func (c *compiler) store(x asm.Instruction) {

View File

@ -1,6 +1,6 @@
package ast
import "git.akyoto.dev/cli/q/src/expression"
import "git.urbach.dev/cli/q/src/expression"
// Node is an interface used for all types of AST nodes.
type Node any

View File

@ -1,6 +1,6 @@
package ast
import "git.akyoto.dev/cli/q/src/token"
import "git.urbach.dev/cli/q/src/token"
// Count counts how often the given token appears in the AST.
func Count(body AST, buffer []byte, kind token.Kind, name string) uint8 {

View File

@ -1,8 +1,8 @@
package ast
import (
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/token"
)
// Parse generates an AST from a list of tokens.

View File

@ -3,10 +3,10 @@ package ast_test
import (
"testing"
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/go/assert"
"git.urbach.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/go/assert"
)
func TestAssign(t *testing.T) {

View File

@ -1,9 +1,9 @@
package ast
import (
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/token"
)
// block retrieves the start and end position of a block.

View File

@ -1,6 +1,6 @@
package ast
import "git.akyoto.dev/cli/q/src/token"
import "git.urbach.dev/cli/q/src/token"
// eachInstruction calls the function on each AST node.
func eachInstruction(tokens token.List, call func(token.List) error) error {

View File

@ -1,8 +1,8 @@
package ast
import (
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
)
// IsAssignment returns true if the expression is an assignment.

View File

@ -1,9 +1,9 @@
package ast
import (
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/token"
)
// parseCases generates the cases inside a switch statement.

View File

@ -1,10 +1,10 @@
package ast
import (
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/token"
)
// parseInstruction generates an AST node from an instruction.

View File

@ -1,10 +1,10 @@
package ast
import (
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/token"
)
// parseKeyword generates a keyword node from an instruction.

View File

@ -4,7 +4,7 @@ import (
"path/filepath"
"strings"
"git.akyoto.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/config"
)
// Executable returns the path to the executable.

View File

@ -1,8 +1,8 @@
package build
import (
"git.akyoto.dev/cli/q/src/compiler"
"git.akyoto.dev/cli/q/src/scanner"
"git.urbach.dev/cli/q/src/compiler"
"git.urbach.dev/cli/q/src/scanner"
)
// Run compiles the input files.

View File

@ -4,9 +4,9 @@ import (
"path/filepath"
"testing"
"git.akyoto.dev/cli/q/src/build"
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/go/assert"
"git.urbach.dev/cli/q/src/build"
"git.urbach.dev/cli/q/src/config"
"git.urbach.dev/go/assert"
)
func TestBuildDirectory(t *testing.T) {

View File

@ -6,8 +6,8 @@ import (
"runtime"
"strings"
"git.akyoto.dev/cli/q/src/build"
"git.akyoto.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/build"
"git.urbach.dev/cli/q/src/config"
)
// Build parses the arguments and creates a build.

View File

@ -3,9 +3,9 @@ package cli_test
import (
"testing"
"git.akyoto.dev/cli/q/src/cli"
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/go/assert"
"git.urbach.dev/cli/q/src/cli"
"git.urbach.dev/cli/q/src/config"
"git.urbach.dev/go/assert"
)
func TestCLI(t *testing.T) {

View File

@ -5,7 +5,7 @@ import (
"runtime"
"strconv"
"git.akyoto.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/config"
)
// System shows system information.

View File

@ -1,10 +1,10 @@
package compiler
import (
"git.akyoto.dev/cli/q/src/core"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/core"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/types"
)
// Compile waits for the scan to finish and compiles all functions.

View File

@ -3,7 +3,7 @@ package compiler
import (
"sync"
"git.akyoto.dev/cli/q/src/core"
"git.urbach.dev/cli/q/src/core"
)
// CompileFunctions starts a goroutine for each function compilation and waits for completion.

View File

@ -1,6 +1,6 @@
package compiler
import "git.akyoto.dev/cli/q/src/core"
import "git.urbach.dev/cli/q/src/core"
// PrintInstructions prints out the generated instructions.
func (r *Result) PrintInstructions() {

View File

@ -3,7 +3,7 @@ package compiler
import (
"fmt"
"git.akyoto.dev/go/color/ansi"
"git.urbach.dev/go/color/ansi"
)
// PrintStatistics shows the statistics.

View File

@ -1,8 +1,8 @@
package compiler
import (
"git.akyoto.dev/cli/q/src/core"
"git.akyoto.dev/cli/q/src/dll"
"git.urbach.dev/cli/q/src/core"
"git.urbach.dev/cli/q/src/dll"
)
// Result contains everything we need to write an executable file to disk.

View File

@ -4,11 +4,11 @@ import (
"bufio"
"io"
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/cli/q/src/dll"
"git.akyoto.dev/cli/q/src/elf"
"git.akyoto.dev/cli/q/src/macho"
"git.akyoto.dev/cli/q/src/pe"
"git.urbach.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/dll"
"git.urbach.dev/cli/q/src/elf"
"git.urbach.dev/cli/q/src/macho"
"git.urbach.dev/cli/q/src/pe"
)
// Write writes the executable to the given writer.

View File

@ -1,8 +1,8 @@
package compiler
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/core"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/core"
)
// eachFunction recursively finds all the calls to external functions.

View File

@ -1,11 +1,11 @@
package compiler
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/asmc"
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/cli/q/src/core"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/asmc"
"git.urbach.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/core"
"git.urbach.dev/cli/q/src/x86"
)
// finalize generates the final machine code.

View File

@ -3,12 +3,12 @@ package core
import (
"math"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/types"
)
// ArrayElementToRegister moves the value of an array element into the given register.

View File

@ -4,11 +4,11 @@ import (
"fmt"
"slices"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/types"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/x86"
)
// CallExtern calls an external function.

View File

@ -3,8 +3,8 @@ package core
import (
"slices"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/cpu"
)
// CallSafe pushes used registers to the stack, executes the call and restores the original register value.

View File

@ -1,10 +1,10 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/types"
)
// CallToRegister moves the result of a function call into the given register.

View File

@ -1,10 +1,10 @@
package core
import (
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
)
// Compare evaluates a boolean expression.

View File

@ -1,7 +1,7 @@
package core
import (
"git.akyoto.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/ast"
)
// CompileAST compiles an abstract syntax tree.

View File

@ -1,7 +1,7 @@
package core
import (
"git.akyoto.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/ast"
)
// CompileASTNode compiles a node in the AST.

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/ast"
)
// CompileAssert compiles an assertion.

View File

@ -1,11 +1,11 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
)
// CompileAssign compiles an assign statement.

View File

@ -3,10 +3,10 @@ package core
import (
"math"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/types"
)
// CompileAssignArray compiles an assign statement for array elements.

View File

@ -1,13 +1,13 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/scope"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/types"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/scope"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/x86"
)
// CompileAssignDivision compiles an assign statement that has quotient and remainder on the left side and division on the right.

View File

@ -3,10 +3,10 @@ package core
import (
"math"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/types"
)
// CompileAssignField compiles a memory write to a struct field.

View File

@ -1,9 +1,9 @@
package core
import (
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/types"
)
// CompileCall executes a function call.

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
)
// CompileCondition inserts code to jump to the start label or end label depending on the truth of the condition.

View File

@ -1,11 +1,11 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
)
// CompileDefinition compiles a variable definition.

View File

@ -1,10 +1,10 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/types"
)
// CompileDelete compiles a `delete` function call which deallocates a struct.

View File

@ -1,11 +1,11 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
)
// CompileFor compiles a for loop.

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/ast"
)
// CompileIf compiles a branch instruction.

View File

@ -3,10 +3,10 @@ package core
import (
"math"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/types"
)
var _len = Function{OutputTypes: []types.Type{types.Int}}

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/ast"
)
// CompileLoop compiles an infinite loop.

View File

@ -3,9 +3,9 @@ package core
import (
"math"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
)
// CompileMemoryStore compiles a variable-width store to memory.

View File

@ -1,10 +1,10 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/types"
)
// CompileNew compiles a `new` function call which allocates a struct.

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/errors"
)
// CompileReturn compiles a return instruction.

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/ast"
)
// CompileSwitch compiles a multi-branch instruction.

View File

@ -1,7 +1,7 @@
package core
import (
"git.akyoto.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/expression"
)
// CompileSyscall executes a kernel syscall.

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/token"
)
// CompileTokens compiles a token list.

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/token"
)
// Constant registers a single value to be accessible under a descriptive name.

View File

@ -1,10 +1,10 @@
package core
import (
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/scope"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/scope"
"git.urbach.dev/cli/q/src/token"
)
// Define defines a new variable.

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/types"
)
// Environment holds information about the entire build.

View File

@ -1,11 +1,11 @@
package core
import (
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/types"
)
// Evaluate evaluates an expression and returns a register that contains the value of the expression.

View File

@ -1,10 +1,10 @@
package core
import (
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
)
// Execute executes an operation on a register with a value operand.

View File

@ -1,9 +1,9 @@
package core
import (
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/token"
)
// ExecuteLeaf performs an operation on a register with the given leaf operand.

View File

@ -1,10 +1,10 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/token"
)
// ExecuteRegister performs an operation on a single register.

View File

@ -1,11 +1,11 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/x86"
)
// ExecuteRegisterNumber performs an operation on a register and a number.

View File

@ -1,11 +1,11 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/x86"
)
// ExecuteRegisterRegister performs an operation on two registers.

View File

@ -1,11 +1,11 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/types"
)
// ExpressionToMemory puts the result of an expression into the specified memory address.

View File

@ -1,12 +1,12 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/types"
)
// ExpressionToRegister puts the result of an expression into the specified register.

View File

@ -1,11 +1,11 @@
package core
import (
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/types"
)
// ExpressionsToRegisters moves multiple expressions into the specified registers and checks that the types match with the function signature.

View File

@ -1,9 +1,9 @@
package core
import (
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
)
// Fold will try to precalculate the results of operations with constants.

View File

@ -1,11 +1,11 @@
package core
import (
"git.akyoto.dev/cli/q/src/dll"
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/register"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/dll"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/register"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/types"
)
// Function represents the smallest unit of code.

View File

@ -3,7 +3,7 @@ package core
import (
"fmt"
"git.akyoto.dev/cli/q/src/scope"
"git.urbach.dev/cli/q/src/scope"
)
// Identifier looks up an identifier which can be a variable or a function.

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/token"
)
// JumpIfFalse jumps to the label if the previous comparison was false.

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/token"
)
// JumpIfTrue jumps to the label if the previous comparison was true.

View File

@ -1,12 +1,12 @@
package core
import (
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/register"
"git.akyoto.dev/cli/q/src/scope"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/register"
"git.urbach.dev/cli/q/src/scope"
"git.urbach.dev/cli/q/src/x86"
)
// NewFunction creates a new function.

View File

@ -1,8 +1,8 @@
package core
import (
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/types"
)
type Parameter struct {

View File

@ -4,11 +4,11 @@ import (
"fmt"
"math"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/types"
)
// PeriodToRegister moves a constant or a function address into the given register.

View File

@ -4,8 +4,8 @@ import (
"bytes"
"fmt"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/go/color/ansi"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/go/color/ansi"
)
// PrintInstructions shows the assembly instructions.

View File

@ -1,11 +1,11 @@
package core
import (
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/scope"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/types"
"git.akyoto.dev/cli/q/src/x86"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/scope"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/x86"
)
// ResolveTypes parses the input and output types.

View File

@ -5,9 +5,9 @@ import (
"strings"
"unicode/utf8"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/fs"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/token"
)
// ToNumber tries to convert the token into a numeric value.

View File

@ -3,11 +3,11 @@ package core
import (
"encoding/binary"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/token"
"git.akyoto.dev/cli/q/src/types"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/errors"
"git.urbach.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/types"
)
// TokenToRegister moves a token into a register.

View File

@ -1,10 +1,10 @@
package core
import (
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.dev/cli/q/src/token"
"git.urbach.dev/cli/q/src/ast"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/expression"
"git.urbach.dev/cli/q/src/token"
)
// UsesRegister returns true if evaluating the expression would write or read the given register.

Some files were not shown because too many files have changed in this diff Show More