diff --git a/Nub.Lang/Nub.Lang/Generation/Generator.cs b/Nub.Lang/Nub.Lang/Backend/Custom/CustomGenerator.cs similarity index 99% rename from Nub.Lang/Nub.Lang/Generation/Generator.cs rename to Nub.Lang/Nub.Lang/Backend/Custom/CustomGenerator.cs index 3d890a9..fb0b37c 100644 --- a/Nub.Lang/Nub.Lang/Generation/Generator.cs +++ b/Nub.Lang/Nub.Lang/Backend/Custom/CustomGenerator.cs @@ -1,9 +1,9 @@ using System.Text; -using Nub.Lang.Parsing; +using Nub.Lang.Frontend.Parsing; -namespace Nub.Lang.Generation; +namespace Nub.Lang.Backend.Custom; -public class Generator +public class CustomGenerator { private const string Entrypoint = "main"; @@ -15,7 +15,7 @@ public class Generator private int _stringIndex; private int _labelIndex; - public Generator(IReadOnlyCollection definitions) + public CustomGenerator(IReadOnlyCollection definitions) { _strings = []; _definitions = definitions; diff --git a/Nub.Lang/Nub.Lang/Generation/SymbolTable.cs b/Nub.Lang/Nub.Lang/Backend/Custom/SymbolTable.cs similarity index 98% rename from Nub.Lang/Nub.Lang/Generation/SymbolTable.cs rename to Nub.Lang/Nub.Lang/Backend/Custom/SymbolTable.cs index 88615fb..d1dd1e8 100644 --- a/Nub.Lang/Nub.Lang/Generation/SymbolTable.cs +++ b/Nub.Lang/Nub.Lang/Backend/Custom/SymbolTable.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Parsing; -using Nub.Core; +using Nub.Core; +using Nub.Lang.Frontend.Parsing; -namespace Nub.Lang.Generation; +namespace Nub.Lang.Backend.Custom; public class SymbolTable { diff --git a/Nub.Lang/Nub.Lang/Lexing/IdentifierToken.cs b/Nub.Lang/Nub.Lang/Frontend/Lexing/IdentifierToken.cs similarity index 70% rename from Nub.Lang/Nub.Lang/Lexing/IdentifierToken.cs rename to Nub.Lang/Nub.Lang/Frontend/Lexing/IdentifierToken.cs index 6fae8d2..332bb85 100644 --- a/Nub.Lang/Nub.Lang/Lexing/IdentifierToken.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Lexing/IdentifierToken.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Lexing; +namespace Nub.Lang.Frontend.Lexing; public class IdentifierToken(string value) : Token { diff --git a/Nub.Lang/Nub.Lang/Lexing/Lexer.cs b/Nub.Lang/Nub.Lang/Frontend/Lexing/Lexer.cs similarity index 99% rename from Nub.Lang/Nub.Lang/Lexing/Lexer.cs rename to Nub.Lang/Nub.Lang/Frontend/Lexing/Lexer.cs index dd8065d..8645751 100644 --- a/Nub.Lang/Nub.Lang/Lexing/Lexer.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Lexing/Lexer.cs @@ -1,6 +1,6 @@ using Nub.Core; -namespace Nub.Lang.Lexing; +namespace Nub.Lang.Frontend.Lexing; public class Lexer { diff --git a/Nub.Lang/Nub.Lang/Lexing/LiteralToken.cs b/Nub.Lang/Nub.Lang/Frontend/Lexing/LiteralToken.cs similarity index 78% rename from Nub.Lang/Nub.Lang/Lexing/LiteralToken.cs rename to Nub.Lang/Nub.Lang/Frontend/Lexing/LiteralToken.cs index 8d5b6f1..7128b1a 100644 --- a/Nub.Lang/Nub.Lang/Lexing/LiteralToken.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Lexing/LiteralToken.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Lexing; +namespace Nub.Lang.Frontend.Lexing; public class LiteralToken(Type type, string value) : Token { diff --git a/Nub.Lang/Nub.Lang/Lexing/SymbolToken.cs b/Nub.Lang/Nub.Lang/Frontend/Lexing/SymbolToken.cs similarity index 92% rename from Nub.Lang/Nub.Lang/Lexing/SymbolToken.cs rename to Nub.Lang/Nub.Lang/Frontend/Lexing/SymbolToken.cs index d284b8a..4f8595f 100644 --- a/Nub.Lang/Nub.Lang/Lexing/SymbolToken.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Lexing/SymbolToken.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Lexing; +namespace Nub.Lang.Frontend.Lexing; public class SymbolToken(Symbol symbol) : Token { diff --git a/Nub.Lang/Nub.Lang/Frontend/Lexing/Token.cs b/Nub.Lang/Nub.Lang/Frontend/Lexing/Token.cs new file mode 100644 index 0000000..c63ca90 --- /dev/null +++ b/Nub.Lang/Nub.Lang/Frontend/Lexing/Token.cs @@ -0,0 +1,3 @@ +namespace Nub.Lang.Frontend.Lexing; + +public abstract class Token; \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Parsing/BinaryExpressionNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/BinaryExpressionNode.cs similarity index 92% rename from Nub.Lang/Nub.Lang/Parsing/BinaryExpressionNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/BinaryExpressionNode.cs index 9d440d0..d2e6f6b 100644 --- a/Nub.Lang/Nub.Lang/Parsing/BinaryExpressionNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/BinaryExpressionNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class BinaryExpressionNode(ExpressionNode left, BinaryExpressionOperator @operator, ExpressionNode right) : ExpressionNode { diff --git a/Nub.Lang/Nub.Lang/Parsing/BlockNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/BlockNode.cs similarity index 79% rename from Nub.Lang/Nub.Lang/Parsing/BlockNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/BlockNode.cs index 496afec..972f19a 100644 --- a/Nub.Lang/Nub.Lang/Parsing/BlockNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/BlockNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class BlockNode(IReadOnlyCollection statements) : Node { diff --git a/Nub.Lang/Nub.Lang/Frontend/Parsing/DefinitionNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/DefinitionNode.cs new file mode 100644 index 0000000..b0d239a --- /dev/null +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/DefinitionNode.cs @@ -0,0 +1,3 @@ +namespace Nub.Lang.Frontend.Parsing; + +public abstract class DefinitionNode : Node; \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Parsing/ExpressionNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/ExpressionNode.cs similarity index 85% rename from Nub.Lang/Nub.Lang/Parsing/ExpressionNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/ExpressionNode.cs index b7ac992..fa7c103 100644 --- a/Nub.Lang/Nub.Lang/Parsing/ExpressionNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/ExpressionNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public abstract class ExpressionNode : Node { diff --git a/Nub.Lang/Nub.Lang/Parsing/ExternFuncDefinitionNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/ExternFuncDefinitionNode.cs similarity index 93% rename from Nub.Lang/Nub.Lang/Parsing/ExternFuncDefinitionNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/ExternFuncDefinitionNode.cs index e4fd036..540cb90 100644 --- a/Nub.Lang/Nub.Lang/Parsing/ExternFuncDefinitionNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/ExternFuncDefinitionNode.cs @@ -1,6 +1,6 @@ using Nub.Core; -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class ExternFuncDefinitionNode(string name, IReadOnlyCollection parameters, Optional returnType) : DefinitionNode { diff --git a/Nub.Lang/Nub.Lang/Parsing/FuncCall.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCall.cs similarity index 86% rename from Nub.Lang/Nub.Lang/Parsing/FuncCall.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCall.cs index 0289a8a..322ce20 100644 --- a/Nub.Lang/Nub.Lang/Parsing/FuncCall.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCall.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class FuncCall(string name, IReadOnlyCollection parameters) { diff --git a/Nub.Lang/Nub.Lang/Parsing/FuncCallExpressionNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCallExpressionNode.cs similarity index 82% rename from Nub.Lang/Nub.Lang/Parsing/FuncCallExpressionNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCallExpressionNode.cs index 9837fea..de013d2 100644 --- a/Nub.Lang/Nub.Lang/Parsing/FuncCallExpressionNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCallExpressionNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class FuncCallExpressionNode(FuncCall funcCall) : ExpressionNode { diff --git a/Nub.Lang/Nub.Lang/Parsing/FuncCallStatementNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCallStatementNode.cs similarity index 82% rename from Nub.Lang/Nub.Lang/Parsing/FuncCallStatementNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCallStatementNode.cs index bd60bf5..8b10d5e 100644 --- a/Nub.Lang/Nub.Lang/Parsing/FuncCallStatementNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/FuncCallStatementNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class FuncCallStatementNode(FuncCall funcCall) : StatementNode { diff --git a/Nub.Lang/Nub.Lang/Parsing/GlobalVariableDefinitionNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/GlobalVariableDefinitionNode.cs similarity index 82% rename from Nub.Lang/Nub.Lang/Parsing/GlobalVariableDefinitionNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/GlobalVariableDefinitionNode.cs index 1f4c5d5..04a69d2 100644 --- a/Nub.Lang/Nub.Lang/Parsing/GlobalVariableDefinitionNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/GlobalVariableDefinitionNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class GlobalVariableDefinitionNode(string name, ExpressionNode value) : DefinitionNode { diff --git a/Nub.Lang/Nub.Lang/Parsing/IdentifierNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/IdentifierNode.cs similarity index 82% rename from Nub.Lang/Nub.Lang/Parsing/IdentifierNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/IdentifierNode.cs index c196572..be242b8 100644 --- a/Nub.Lang/Nub.Lang/Parsing/IdentifierNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/IdentifierNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class IdentifierNode(string identifier) : ExpressionNode { diff --git a/Nub.Lang/Nub.Lang/Parsing/IfNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/IfNode.cs similarity index 89% rename from Nub.Lang/Nub.Lang/Parsing/IfNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/IfNode.cs index 40d9f03..b777672 100644 --- a/Nub.Lang/Nub.Lang/Parsing/IfNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/IfNode.cs @@ -1,6 +1,6 @@ using Nub.Core; -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class IfNode(ExpressionNode condition, BlockNode body, Optional> @else) : StatementNode { diff --git a/Nub.Lang/Nub.Lang/Parsing/LiteralNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/LiteralNode.cs similarity index 79% rename from Nub.Lang/Nub.Lang/Parsing/LiteralNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/LiteralNode.cs index d3eccb3..a5065d8 100644 --- a/Nub.Lang/Nub.Lang/Parsing/LiteralNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/LiteralNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class LiteralNode(string literal, Type type) : ExpressionNode { diff --git a/Nub.Lang/Nub.Lang/Parsing/LocalFuncDefinitionNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/LocalFuncDefinitionNode.cs similarity index 93% rename from Nub.Lang/Nub.Lang/Parsing/LocalFuncDefinitionNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/LocalFuncDefinitionNode.cs index b2c0e45..aa65420 100644 --- a/Nub.Lang/Nub.Lang/Parsing/LocalFuncDefinitionNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/LocalFuncDefinitionNode.cs @@ -1,6 +1,6 @@ using Nub.Core; -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class LocalFuncDefinitionNode(string name, IReadOnlyCollection parameters, BlockNode body, Optional returnType) : DefinitionNode { diff --git a/Nub.Lang/Nub.Lang/Frontend/Parsing/Node.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/Node.cs new file mode 100644 index 0000000..0165fd8 --- /dev/null +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/Node.cs @@ -0,0 +1,3 @@ +namespace Nub.Lang.Frontend.Parsing; + +public abstract class Node; \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Parsing/Parser.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/Parser.cs similarity index 99% rename from Nub.Lang/Nub.Lang/Parsing/Parser.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/Parser.cs index 2145779..79456f6 100644 --- a/Nub.Lang/Nub.Lang/Parsing/Parser.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/Parser.cs @@ -1,8 +1,8 @@ using System.Diagnostics.CodeAnalysis; -using Nub.Lang.Lexing; using Nub.Core; +using Nub.Lang.Frontend.Lexing; -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class Parser { diff --git a/Nub.Lang/Nub.Lang/Parsing/ReturnNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/ReturnNode.cs similarity index 80% rename from Nub.Lang/Nub.Lang/Parsing/ReturnNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/ReturnNode.cs index 8a9141d..44d53e7 100644 --- a/Nub.Lang/Nub.Lang/Parsing/ReturnNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/ReturnNode.cs @@ -1,6 +1,6 @@ using Nub.Core; -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class ReturnNode(Optional value) : StatementNode { diff --git a/Nub.Lang/Nub.Lang/Frontend/Parsing/StatementNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/StatementNode.cs new file mode 100644 index 0000000..9ad7834 --- /dev/null +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/StatementNode.cs @@ -0,0 +1,3 @@ +namespace Nub.Lang.Frontend.Parsing; + +public abstract class StatementNode : Node; \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Parsing/Syscall.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/Syscall.cs similarity index 78% rename from Nub.Lang/Nub.Lang/Parsing/Syscall.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/Syscall.cs index 93c2a61..eb76aaf 100644 --- a/Nub.Lang/Nub.Lang/Parsing/Syscall.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/Syscall.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class Syscall(IReadOnlyCollection parameters) { diff --git a/Nub.Lang/Nub.Lang/Parsing/SyscallExpressionNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/SyscallExpressionNode.cs similarity index 74% rename from Nub.Lang/Nub.Lang/Parsing/SyscallExpressionNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/SyscallExpressionNode.cs index e4f5949..0426ead 100644 --- a/Nub.Lang/Nub.Lang/Parsing/SyscallExpressionNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/SyscallExpressionNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class SyscallExpressionNode(Syscall syscall) : ExpressionNode { diff --git a/Nub.Lang/Nub.Lang/Parsing/SyscallStatementNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/SyscallStatementNode.cs similarity index 74% rename from Nub.Lang/Nub.Lang/Parsing/SyscallStatementNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/SyscallStatementNode.cs index a48f182..48fedb1 100644 --- a/Nub.Lang/Nub.Lang/Parsing/SyscallStatementNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/SyscallStatementNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class SyscallStatementNode(Syscall syscall) : StatementNode { diff --git a/Nub.Lang/Nub.Lang/Parsing/VariableAssignmentNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/VariableAssignmentNode.cs similarity index 81% rename from Nub.Lang/Nub.Lang/Parsing/VariableAssignmentNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/VariableAssignmentNode.cs index 0805b53..e76cb63 100644 --- a/Nub.Lang/Nub.Lang/Parsing/VariableAssignmentNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/VariableAssignmentNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class VariableAssignmentNode(string name, ExpressionNode value) : StatementNode { diff --git a/Nub.Lang/Nub.Lang/Parsing/VariableReassignmentNode.cs b/Nub.Lang/Nub.Lang/Frontend/Parsing/VariableReassignmentNode.cs similarity index 81% rename from Nub.Lang/Nub.Lang/Parsing/VariableReassignmentNode.cs rename to Nub.Lang/Nub.Lang/Frontend/Parsing/VariableReassignmentNode.cs index 147807b..74fa9a4 100644 --- a/Nub.Lang/Nub.Lang/Parsing/VariableReassignmentNode.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Parsing/VariableReassignmentNode.cs @@ -1,4 +1,4 @@ -namespace Nub.Lang.Parsing; +namespace Nub.Lang.Frontend.Parsing; public class VariableReassignmentNode(string name, ExpressionNode value) : StatementNode { diff --git a/Nub.Lang/Nub.Lang/Typing/ExpressionTyper.cs b/Nub.Lang/Nub.Lang/Frontend/Typing/ExpressionTyper.cs similarity index 99% rename from Nub.Lang/Nub.Lang/Typing/ExpressionTyper.cs rename to Nub.Lang/Nub.Lang/Frontend/Typing/ExpressionTyper.cs index a2ff298..151ca39 100644 --- a/Nub.Lang/Nub.Lang/Typing/ExpressionTyper.cs +++ b/Nub.Lang/Nub.Lang/Frontend/Typing/ExpressionTyper.cs @@ -1,7 +1,7 @@ using Nub.Core; -using Nub.Lang.Parsing; +using Nub.Lang.Frontend.Parsing; -namespace Nub.Lang.Typing; +namespace Nub.Lang.Frontend.Typing; public class Func(string name, IReadOnlyCollection parameters, Optional body, Optional returnType) { diff --git a/Nub.Lang/Nub.Lang/Lexing/Token.cs b/Nub.Lang/Nub.Lang/Lexing/Token.cs deleted file mode 100644 index 7e4da5f..0000000 --- a/Nub.Lang/Nub.Lang/Lexing/Token.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace Nub.Lang.Lexing; - -public abstract class Token; \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Output/build.sh b/Nub.Lang/Nub.Lang/Output/build.sh deleted file mode 100644 index 3607710..0000000 --- a/Nub.Lang/Nub.Lang/Output/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -nasm -g -felf64 out.asm -o out.o -nasm -g -felf64 core/strlen.asm -o strlen.o -nasm -g -felf64 core/strcmp.asm -o strcmp.o - -ld -o out out.o strlen.o strcmp.o diff --git a/Nub.Lang/Nub.Lang/Parsing/DefinitionNode.cs b/Nub.Lang/Nub.Lang/Parsing/DefinitionNode.cs deleted file mode 100644 index 85e10d6..0000000 --- a/Nub.Lang/Nub.Lang/Parsing/DefinitionNode.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace Nub.Lang.Parsing; - -public abstract class DefinitionNode : Node; \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Parsing/Node.cs b/Nub.Lang/Nub.Lang/Parsing/Node.cs deleted file mode 100644 index f23e16c..0000000 --- a/Nub.Lang/Nub.Lang/Parsing/Node.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace Nub.Lang.Parsing; - -public abstract class Node; \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Parsing/StatementNode.cs b/Nub.Lang/Nub.Lang/Parsing/StatementNode.cs deleted file mode 100644 index d2c8544..0000000 --- a/Nub.Lang/Nub.Lang/Parsing/StatementNode.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace Nub.Lang.Parsing; - -public abstract class StatementNode : Node; \ No newline at end of file diff --git a/Nub.Lang/Nub.Lang/Program.cs b/Nub.Lang/Nub.Lang/Program.cs index 5492bed..269d5b0 100644 --- a/Nub.Lang/Nub.Lang/Program.cs +++ b/Nub.Lang/Nub.Lang/Program.cs @@ -1,7 +1,7 @@ -using Nub.Lang.Generation; -using Nub.Lang.Lexing; -using Nub.Lang.Parsing; -using Nub.Lang.Typing; +using Nub.Lang.Backend.Custom; +using Nub.Lang.Frontend.Lexing; +using Nub.Lang.Frontend.Parsing; +using Nub.Lang.Frontend.Typing; var src = File.ReadAllText(args[0]); @@ -14,7 +14,7 @@ var definitions = parser.Parse(); var typer = new ExpressionTyper(definitions); typer.Populate(); -var generator = new Generator(definitions); +var generator = new CustomGenerator(definitions); var asm = generator.Generate(); Console.WriteLine(asm); diff --git a/Nub.Lang/Nub.Lang/Input/core/print.nub b/Nub.Lang/Nub.Lang/input/core/print.nub similarity index 100% rename from Nub.Lang/Nub.Lang/Input/core/print.nub rename to Nub.Lang/Nub.Lang/input/core/print.nub diff --git a/Nub.Lang/Nub.Lang/Output/core/strcmp.asm b/Nub.Lang/Nub.Lang/input/core/string/strcmp.asm similarity index 100% rename from Nub.Lang/Nub.Lang/Output/core/strcmp.asm rename to Nub.Lang/Nub.Lang/input/core/string/strcmp.asm diff --git a/Nub.Lang/Nub.Lang/Input/core/utils.nub b/Nub.Lang/Nub.Lang/input/core/string/strcmp.nub similarity index 61% rename from Nub.Lang/Nub.Lang/Input/core/utils.nub rename to Nub.Lang/Nub.Lang/input/core/string/strcmp.nub index dae83b1..aa81777 100644 --- a/Nub.Lang/Nub.Lang/Input/core/utils.nub +++ b/Nub.Lang/Nub.Lang/input/core/string/strcmp.nub @@ -1,4 +1,3 @@ namespace core; -extern func strlen(msg: String): int64; extern func strcmp(a: String, b: String): bool; diff --git a/Nub.Lang/Nub.Lang/Output/core/strlen.asm b/Nub.Lang/Nub.Lang/input/core/string/strlen.asm similarity index 100% rename from Nub.Lang/Nub.Lang/Output/core/strlen.asm rename to Nub.Lang/Nub.Lang/input/core/string/strlen.asm diff --git a/Nub.Lang/Nub.Lang/input/core/string/strlen.nub b/Nub.Lang/Nub.Lang/input/core/string/strlen.nub new file mode 100644 index 0000000..eb59ffa --- /dev/null +++ b/Nub.Lang/Nub.Lang/input/core/string/strlen.nub @@ -0,0 +1,3 @@ +namespace core; + +extern func strlen(msg: String): int64; diff --git a/Nub.Lang/Nub.Lang/Input/program.nub b/Nub.Lang/Nub.Lang/input/program.nub similarity index 100% rename from Nub.Lang/Nub.Lang/Input/program.nub rename to Nub.Lang/Nub.Lang/input/program.nub diff --git a/Nub.Lang/Nub.Lang/output/build.sh b/Nub.Lang/Nub.Lang/output/build.sh new file mode 100644 index 0000000..4acf5dc --- /dev/null +++ b/Nub.Lang/Nub.Lang/output/build.sh @@ -0,0 +1,6 @@ +#!/bin/sh +nasm -g -felf64 out.asm -o out.o +nasm -g -felf64 ../input/core/string/strlen.asm -o strlen.o +nasm -g -felf64 ../input/core/string/strcmp.asm -o strcmp.o + +ld -o out out.o strlen.o strcmp.o diff --git a/Nub.Lang/Nub.Lang/Output/debug.sh b/Nub.Lang/Nub.Lang/output/debug.sh similarity index 100% rename from Nub.Lang/Nub.Lang/Output/debug.sh rename to Nub.Lang/Nub.Lang/output/debug.sh diff --git a/Nub.Lang/Nub.Lang/Output/run.sh b/Nub.Lang/Nub.Lang/output/run.sh similarity index 100% rename from Nub.Lang/Nub.Lang/Output/run.sh rename to Nub.Lang/Nub.Lang/output/run.sh