Simplified file structure

This commit is contained in:
2024-08-07 19:39:10 +02:00
parent 1b13539b22
commit 66569446b1
219 changed files with 453 additions and 457 deletions

View File

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

View File

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

View File

@ -1,7 +1,7 @@
package x64
import (
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/cpu"
)
// AddRegisterNumber adds a number to the given register.

View File

@ -3,8 +3,8 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/go/assert"
)

View File

@ -1,7 +1,7 @@
package x64
import (
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/cpu"
)
// AndRegisterNumber performs a bitwise AND using a register and a number.

View File

@ -1,6 +1,6 @@
package x64
import "git.akyoto.dev/cli/q/src/build/cpu"
import "git.akyoto.dev/cli/q/src/cpu"
// Compares the register with the number and sets the status flags in the EFLAGS register.
func CompareRegisterNumber(code []byte, register cpu.Register, number int) []byte {

View File

@ -3,8 +3,8 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/go/assert"
)

View File

@ -1,6 +1,6 @@
package x64
import "git.akyoto.dev/cli/q/src/build/cpu"
import "git.akyoto.dev/cli/q/src/cpu"
// DivRegister divides RDX:RAX by the value in the register.
func DivRegister(code []byte, divisor cpu.Register) []byte {

View File

@ -3,8 +3,8 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/go/assert"
)

View File

@ -3,7 +3,7 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/go/assert"
)

View File

@ -1,6 +1,6 @@
package x64
import "git.akyoto.dev/cli/q/src/build/cpu"
import "git.akyoto.dev/cli/q/src/cpu"
// LoadRegister loads from memory into a register.
func LoadRegister(code []byte, destination cpu.Register, offset byte, length byte, source cpu.Register) []byte {

View File

@ -3,8 +3,8 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/go/assert"
)

View File

@ -3,7 +3,7 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/go/assert"
)

View File

@ -3,8 +3,8 @@ package x64
import (
"encoding/binary"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/build/sizeof"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/sizeof"
)
// MoveRegisterNumber moves an integer into the given register.

View File

@ -3,8 +3,8 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/go/assert"
)

View File

@ -1,6 +1,6 @@
package x64
import "git.akyoto.dev/cli/q/src/build/cpu"
import "git.akyoto.dev/cli/q/src/cpu"
// MulRegisterNumber multiplies a register with a number.
func MulRegisterNumber(code []byte, destination cpu.Register, number int) []byte {

View File

@ -3,8 +3,8 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/go/assert"
)

View File

@ -1,6 +1,6 @@
package x64
import "git.akyoto.dev/cli/q/src/build/cpu"
import "git.akyoto.dev/cli/q/src/cpu"
// NegateRegister negates the value in the register.
func NegateRegister(code []byte, register cpu.Register) []byte {

View File

@ -3,8 +3,8 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/go/assert"
)

View File

@ -1,7 +1,7 @@
package x64
import (
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/cpu"
)
// OrRegisterNumber performs a bitwise OR using a register and a number.

View File

@ -1,6 +1,6 @@
package x64
import "git.akyoto.dev/cli/q/src/build/cpu"
import "git.akyoto.dev/cli/q/src/cpu"
// PopRegister pops a value from the stack and saves it into the register.
func PopRegister(code []byte, register cpu.Register) []byte {

View File

@ -3,8 +3,8 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/go/assert"
)

View File

@ -1,6 +1,6 @@
package x64
import "git.akyoto.dev/cli/q/src/build/cpu"
import "git.akyoto.dev/cli/q/src/cpu"
// PushRegister pushes the value inside the register onto the stack.
func PushRegister(code []byte, register cpu.Register) []byte {

View File

@ -3,8 +3,8 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/go/assert"
)

View File

@ -3,7 +3,7 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/go/assert"
)

View File

@ -1,6 +1,6 @@
package x64
import "git.akyoto.dev/cli/q/src/build/cpu"
import "git.akyoto.dev/cli/q/src/cpu"
const (
RAX cpu.Register = iota

View File

@ -3,7 +3,7 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/go/assert"
)

View File

@ -1,7 +1,7 @@
package x64
import (
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/cpu"
)
// ShiftLeftNumber shifts the register value by `bitCount` bits to the left.

View File

@ -3,7 +3,7 @@ package x64
import (
"encoding/binary"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/cpu"
)
// StoreNumber stores a number into the memory address included in the given register.

View File

@ -3,8 +3,8 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/go/assert"
)

View File

@ -1,7 +1,7 @@
package x64
import (
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/cpu"
)
// SubRegisterNumber subtracts a number from the given register.

View File

@ -3,8 +3,8 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/go/assert"
)

View File

@ -1,7 +1,7 @@
package x64
import (
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/cpu"
)
// XorRegisterNumber performs a bitwise XOR using a register and a number.

View File

@ -1,6 +1,6 @@
package x64
import "git.akyoto.dev/cli/q/src/build/cpu"
import "git.akyoto.dev/cli/q/src/cpu"
// encode is the core function that encodes an instruction.
func encode(code []byte, mod AddressMode, reg cpu.Register, rm cpu.Register, numBytes byte, opCodes ...byte) []byte {

View File

@ -3,8 +3,8 @@ package x64
import (
"encoding/binary"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/build/sizeof"
"git.akyoto.dev/cli/q/src/cpu"
"git.akyoto.dev/cli/q/src/sizeof"
)
// encodeNum encodes an instruction with up to two registers and a number parameter.

View File

@ -1,6 +1,6 @@
package x64
import "git.akyoto.dev/cli/q/src/build/cpu"
import "git.akyoto.dev/cli/q/src/cpu"
// memoryAccess encodes a memory access.
func memoryAccess(code []byte, opCode8 byte, opCode32 byte, register cpu.Register, offset byte, numBytes byte, source cpu.Register) []byte {

View File

@ -3,7 +3,7 @@ package x64_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/go/assert"
)

View File

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

View File

@ -6,10 +6,10 @@ import (
"slices"
"strings"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/config"
"git.akyoto.dev/cli/q/src/build/elf"
"git.akyoto.dev/cli/q/src/build/sizeof"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/config"
"git.akyoto.dev/cli/q/src/elf"
"git.akyoto.dev/cli/q/src/sizeof"
)
// Finalize generates the final machine code.

View File

@ -1,6 +1,6 @@
package asm
import "git.akyoto.dev/cli/q/src/build/cpu"
import "git.akyoto.dev/cli/q/src/cpu"
type Memory struct {
Base cpu.Register

View File

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

View File

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

View File

@ -1,7 +1,7 @@
package asm
import (
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.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/build/cpu"
"git.akyoto.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/build/cpu"
"git.akyoto.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/build/cpu"
"git.akyoto.dev/cli/q/src/cpu"
)
// RegisterRegister operates with two registers.

View File

@ -1,7 +1,7 @@
package ast
import (
"git.akyoto.dev/cli/q/src/build/expression"
"git.akyoto.dev/cli/q/src/expression"
)
// Assert represents a condition that must be true, otherwise the program stops.

View File

@ -1,7 +1,7 @@
package ast
import (
"git.akyoto.dev/cli/q/src/build/expression"
"git.akyoto.dev/cli/q/src/expression"
)
// Assign represents an assignment to an existing variable or memory location.

View File

@ -1,6 +1,6 @@
package ast
import "git.akyoto.dev/cli/q/src/build/expression"
import "git.akyoto.dev/cli/q/src/expression"
// Call represents a function call.
type Call struct {

View File

@ -1,6 +1,6 @@
package ast
import "git.akyoto.dev/cli/q/src/build/token"
import "git.akyoto.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,7 +1,7 @@
package ast
import (
"git.akyoto.dev/cli/q/src/build/expression"
"git.akyoto.dev/cli/q/src/expression"
)
// Define represents a variable definition.

View File

@ -1,6 +1,6 @@
package ast
import "git.akyoto.dev/cli/q/src/build/token"
import "git.akyoto.dev/cli/q/src/token"
// EachInstruction calls the function on each instruction.
func EachInstruction(body token.List, call func(token.List) error) error {

View File

@ -1,7 +1,7 @@
package ast
import (
"git.akyoto.dev/cli/q/src/build/expression"
"git.akyoto.dev/cli/q/src/expression"
)
// If represents an if statement.

View File

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

View File

@ -1,7 +1,7 @@
package ast
import (
"git.akyoto.dev/cli/q/src/build/expression"
"git.akyoto.dev/cli/q/src/expression"
)
// Return represents a return statement.

View File

@ -1,7 +1,7 @@
package ast
import (
"git.akyoto.dev/cli/q/src/build/expression"
"git.akyoto.dev/cli/q/src/expression"
)
// Switch represents a switch statement.

View File

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

View File

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

View File

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

View File

@ -4,8 +4,8 @@ import (
"path/filepath"
"strings"
"git.akyoto.dev/cli/q/src/build/compiler"
"git.akyoto.dev/cli/q/src/build/scanner"
"git.akyoto.dev/cli/q/src/compiler"
"git.akyoto.dev/cli/q/src/scanner"
)
// Build describes a compiler build.

View File

@ -1,55 +0,0 @@
package expression
import (
"git.akyoto.dev/cli/q/src/build/token"
)
// NewList generates a list of expressions from comma separated parameters.
func NewList(tokens token.List) []*Expression {
var list []*Expression
EachParameter(tokens, func(parameter token.List) error {
expression := Parse(parameter)
list = append(list, expression)
return nil
})
return list
}
// EachParameter calls the callback function on each parameter in a comma separated list.
func EachParameter(tokens token.List, call func(token.List) error) error {
start := 0
groupLevel := 0
for i, t := range tokens {
switch t.Kind {
case token.GroupStart, token.ArrayStart, token.BlockStart:
groupLevel++
case token.GroupEnd, token.ArrayEnd, token.BlockEnd:
groupLevel--
case token.Separator:
if groupLevel > 0 {
continue
}
parameter := tokens[start:i]
err := call(parameter)
if err != nil {
return err
}
start = i + 1
}
}
if start != len(tokens) {
parameter := tokens[start:]
return call(parameter)
}
return nil
}

View File

@ -1,18 +0,0 @@
package token_test
import (
"testing"
"git.akyoto.dev/cli/q/src/build/token"
"git.akyoto.dev/go/assert"
)
func TestIndexKind(t *testing.T) {
tokens := token.Tokenize([]byte("a{{}}"))
assert.Equal(t, tokens.IndexKind(token.NewLine), -1)
assert.Equal(t, tokens.LastIndexKind(token.NewLine), -1)
assert.Equal(t, tokens.IndexKind(token.BlockStart), 1)
assert.Equal(t, tokens.LastIndexKind(token.BlockStart), 2)
assert.Equal(t, tokens.IndexKind(token.BlockEnd), 3)
assert.Equal(t, tokens.LastIndexKind(token.BlockEnd), 4)
}

View File

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

View File

@ -5,7 +5,7 @@ import (
"os"
"os/exec"
"git.akyoto.dev/cli/q/src/build/errors"
"git.akyoto.dev/cli/q/src/errors"
)
// Run builds and runs the executable.

View File

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

View File

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

View File

@ -5,11 +5,11 @@ import (
"io"
"os"
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/asm"
"git.akyoto.dev/cli/q/src/build/core"
"git.akyoto.dev/cli/q/src/build/elf"
"git.akyoto.dev/cli/q/src/build/os/linux"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/core"
"git.akyoto.dev/cli/q/src/elf"
"git.akyoto.dev/cli/q/src/os/linux"
)
// Result contains all the compiled functions in a build.

View File

@ -1,10 +1,10 @@
package core
import (
"git.akyoto.dev/cli/q/src/build/ast"
"git.akyoto.dev/cli/q/src/build/errors"
"git.akyoto.dev/cli/q/src/build/expression"
"git.akyoto.dev/cli/q/src/build/token"
"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"
)
// Compare evaluates a boolean expression.

View File

@ -1,7 +1,7 @@
package core
import (
"git.akyoto.dev/cli/q/src/build/ast"
"git.akyoto.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/build/ast"
"git.akyoto.dev/cli/q/src/ast"
)
// CompileASTNode compiles a node in the AST.

View File

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

View File

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

View File

@ -1,9 +1,9 @@
package core
import (
"git.akyoto.dev/cli/q/src/build/asm"
"git.akyoto.dev/cli/q/src/build/ast"
"git.akyoto.dev/cli/q/src/build/errors"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/errors"
)
// CompileAssignArray compiles an assign statement for array elements.

View File

@ -1,10 +1,10 @@
package core
import (
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/asm"
"git.akyoto.dev/cli/q/src/build/ast"
"git.akyoto.dev/cli/q/src/build/errors"
"git.akyoto.dev/cli/q/src/arch/x64"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
"git.akyoto.dev/cli/q/src/errors"
)
// CompileAssignDivision compiles an assign statement that has quotient and remainder on the left side and division on the right.

View File

@ -3,9 +3,9 @@ package core
import (
"strings"
"git.akyoto.dev/cli/q/src/build/asm"
"git.akyoto.dev/cli/q/src/build/errors"
"git.akyoto.dev/cli/q/src/build/expression"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/errors"
"git.akyoto.dev/cli/q/src/expression"
)
// CompileCall executes a function call.

View File

@ -3,8 +3,8 @@ package core
import (
"fmt"
"git.akyoto.dev/cli/q/src/build/expression"
"git.akyoto.dev/cli/q/src/build/token"
"git.akyoto.dev/cli/q/src/expression"
"git.akyoto.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/build/asm"
"git.akyoto.dev/cli/q/src/build/ast"
"git.akyoto.dev/cli/q/src/build/errors"
"git.akyoto.dev/cli/q/src/build/expression"
"git.akyoto.dev/cli/q/src/build/types"
"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/types"
)
// CompileDefinition compiles a variable definition.

View File

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

View File

@ -3,8 +3,8 @@ package core
import (
"fmt"
"git.akyoto.dev/cli/q/src/build/asm"
"git.akyoto.dev/cli/q/src/build/ast"
"git.akyoto.dev/cli/q/src/asm"
"git.akyoto.dev/cli/q/src/ast"
)
// CompileLoop compiles a loop instruction.

View File

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

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