diff --git a/build.sh b/build.sh index a96bd06..329b3b7 100755 --- a/build.sh +++ b/build.sh @@ -1,12 +1,27 @@ #!/bin/sh mkdir -p out -dotnet run --project lang/Nub.Lang example out/out.qbe +echo "setup..." -gcc -c -g -fno-stack-protector -fno-builtin std/gc.c -o out/gc.o -nasm -g -felf64 std/runtime.asm -o out/runtime.o +dotnet publish -c Release src/compiler/Nub.Lang > /dev/null + +if [[ $? -ne 0 ]] ; then + printf "\x1b[31mYour compiler is not compiling!\x1b[0m\n" + exit 1 +fi + +set -e + +echo "compiling..." + +nub example out/out.qbe + +gcc -c -g -fno-stack-protector -fno-builtin src/runtime/gc.c -o out/gc.o +nasm -g -felf64 src/runtime/runtime.asm -o out/runtime.o qbe out/out.qbe > out/out.s gcc -c -g out/out.s -o out/out.o gcc -no-pie -nostartfiles -o out/program out/gc.o out/runtime.o out/out.o + +echo "done..." diff --git a/lang/.gitignore b/src/compiler/.gitignore similarity index 100% rename from lang/.gitignore rename to src/compiler/.gitignore diff --git a/lang/.idea/.idea.Nub.Lang/.idea/.gitignore b/src/compiler/.idea/.idea.Nub.Lang/.idea/.gitignore similarity index 100% rename from lang/.idea/.idea.Nub.Lang/.idea/.gitignore rename to src/compiler/.idea/.idea.Nub.Lang/.idea/.gitignore diff --git a/lang/.idea/.idea.Nub.Lang/.idea/.name b/src/compiler/.idea/.idea.Nub.Lang/.idea/.name similarity index 100% rename from lang/.idea/.idea.Nub.Lang/.idea/.name rename to src/compiler/.idea/.idea.Nub.Lang/.idea/.name diff --git a/lang/.idea/.idea.Nub.Lang/.idea/codeStyles/codeStyleConfig.xml b/src/compiler/.idea/.idea.Nub.Lang/.idea/codeStyles/codeStyleConfig.xml similarity index 100% rename from lang/.idea/.idea.Nub.Lang/.idea/codeStyles/codeStyleConfig.xml rename to src/compiler/.idea/.idea.Nub.Lang/.idea/codeStyles/codeStyleConfig.xml diff --git a/lang/.idea/.idea.Nub.Lang/.idea/encodings.xml b/src/compiler/.idea/.idea.Nub.Lang/.idea/encodings.xml similarity index 100% rename from lang/.idea/.idea.Nub.Lang/.idea/encodings.xml rename to src/compiler/.idea/.idea.Nub.Lang/.idea/encodings.xml diff --git a/lang/.idea/.idea.Nub.Lang/.idea/indexLayout.xml b/src/compiler/.idea/.idea.Nub.Lang/.idea/indexLayout.xml similarity index 74% rename from lang/.idea/.idea.Nub.Lang/.idea/indexLayout.xml rename to src/compiler/.idea/.idea.Nub.Lang/.idea/indexLayout.xml index d39e765..4a53b21 100644 --- a/lang/.idea/.idea.Nub.Lang/.idea/indexLayout.xml +++ b/src/compiler/.idea/.idea.Nub.Lang/.idea/indexLayout.xml @@ -2,8 +2,8 @@ - ../example - ../std + ../../example + ../core diff --git a/lang/.idea/.idea.Nub.Lang/.idea/vcs.xml b/src/compiler/.idea/.idea.Nub.Lang/.idea/vcs.xml similarity index 71% rename from lang/.idea/.idea.Nub.Lang/.idea/vcs.xml rename to src/compiler/.idea/.idea.Nub.Lang/.idea/vcs.xml index 6c0b863..64713b8 100644 --- a/lang/.idea/.idea.Nub.Lang/.idea/vcs.xml +++ b/src/compiler/.idea/.idea.Nub.Lang/.idea/vcs.xml @@ -1,6 +1,7 @@ + \ No newline at end of file diff --git a/lang/Nub.Lang.sln b/src/compiler/Nub.Lang.sln similarity index 100% rename from lang/Nub.Lang.sln rename to src/compiler/Nub.Lang.sln diff --git a/lang/Nub.Lang/Backend/Generator.cs b/src/compiler/Nub.Lang/Backend/Generator.cs similarity index 100% rename from lang/Nub.Lang/Backend/Generator.cs rename to src/compiler/Nub.Lang/Backend/Generator.cs diff --git a/lang/Nub.Lang/Frontend/Lexing/IdentifierToken.cs b/src/compiler/Nub.Lang/Frontend/Lexing/IdentifierToken.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Lexing/IdentifierToken.cs rename to src/compiler/Nub.Lang/Frontend/Lexing/IdentifierToken.cs diff --git a/lang/Nub.Lang/Frontend/Lexing/Lexer.cs b/src/compiler/Nub.Lang/Frontend/Lexing/Lexer.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Lexing/Lexer.cs rename to src/compiler/Nub.Lang/Frontend/Lexing/Lexer.cs diff --git a/lang/Nub.Lang/Frontend/Lexing/LiteralToken.cs b/src/compiler/Nub.Lang/Frontend/Lexing/LiteralToken.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Lexing/LiteralToken.cs rename to src/compiler/Nub.Lang/Frontend/Lexing/LiteralToken.cs diff --git a/lang/Nub.Lang/Frontend/Lexing/SymbolToken.cs b/src/compiler/Nub.Lang/Frontend/Lexing/SymbolToken.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Lexing/SymbolToken.cs rename to src/compiler/Nub.Lang/Frontend/Lexing/SymbolToken.cs diff --git a/lang/Nub.Lang/Frontend/Lexing/Token.cs b/src/compiler/Nub.Lang/Frontend/Lexing/Token.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Lexing/Token.cs rename to src/compiler/Nub.Lang/Frontend/Lexing/Token.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/BinaryExpressionNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/BinaryExpressionNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/BinaryExpressionNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/BinaryExpressionNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/BlockNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/BlockNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/BlockNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/BlockNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/BreakNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/BreakNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/BreakNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/BreakNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/ContinueNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/ContinueNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/ContinueNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/ContinueNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/DefinitionNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/DefinitionNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/DefinitionNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/DefinitionNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/ExpressionNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/ExpressionNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/ExpressionNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/ExpressionNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/ExternFuncDefinitionNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/ExternFuncDefinitionNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/ExternFuncDefinitionNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/ExternFuncDefinitionNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/FuncCall.cs b/src/compiler/Nub.Lang/Frontend/Parsing/FuncCall.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/FuncCall.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/FuncCall.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/FuncCallExpressionNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/FuncCallExpressionNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/FuncCallExpressionNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/FuncCallExpressionNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/FuncCallStatementNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/FuncCallStatementNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/FuncCallStatementNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/FuncCallStatementNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/IdentifierNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/IdentifierNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/IdentifierNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/IdentifierNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/IfNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/IfNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/IfNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/IfNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/LiteralNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/LiteralNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/LiteralNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/LiteralNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/LocalFuncDefinitionNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/LocalFuncDefinitionNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/LocalFuncDefinitionNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/LocalFuncDefinitionNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/ModuleNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/ModuleNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/ModuleNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/ModuleNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/Node.cs b/src/compiler/Nub.Lang/Frontend/Parsing/Node.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/Node.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/Node.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/Parser.cs b/src/compiler/Nub.Lang/Frontend/Parsing/Parser.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/Parser.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/Parser.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/ReturnNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/ReturnNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/ReturnNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/ReturnNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/StatementNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/StatementNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/StatementNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/StatementNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/StructDefinitionNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/StructDefinitionNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/StructDefinitionNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/StructDefinitionNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/StructInitializerNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/StructInitializerNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/StructInitializerNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/StructInitializerNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/StructMemberAccessorNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/StructMemberAccessorNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/StructMemberAccessorNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/StructMemberAccessorNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/VariableAssignmentNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/VariableAssignmentNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/VariableAssignmentNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/VariableAssignmentNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/VariableReassignmentNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/VariableReassignmentNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/VariableReassignmentNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/VariableReassignmentNode.cs diff --git a/lang/Nub.Lang/Frontend/Parsing/WhileNode.cs b/src/compiler/Nub.Lang/Frontend/Parsing/WhileNode.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Parsing/WhileNode.cs rename to src/compiler/Nub.Lang/Frontend/Parsing/WhileNode.cs diff --git a/lang/Nub.Lang/Frontend/Typing/ExpressionTyper.cs b/src/compiler/Nub.Lang/Frontend/Typing/ExpressionTyper.cs similarity index 100% rename from lang/Nub.Lang/Frontend/Typing/ExpressionTyper.cs rename to src/compiler/Nub.Lang/Frontend/Typing/ExpressionTyper.cs diff --git a/lang/Nub.Lang/FuncParameter.cs b/src/compiler/Nub.Lang/FuncParameter.cs similarity index 100% rename from lang/Nub.Lang/FuncParameter.cs rename to src/compiler/Nub.Lang/FuncParameter.cs diff --git a/lang/Nub.Lang/Nub.Lang.csproj b/src/compiler/Nub.Lang/Nub.Lang.csproj similarity index 76% rename from lang/Nub.Lang/Nub.Lang.csproj rename to src/compiler/Nub.Lang/Nub.Lang.csproj index 85b4959..ee51912 100644 --- a/lang/Nub.Lang/Nub.Lang.csproj +++ b/src/compiler/Nub.Lang/Nub.Lang.csproj @@ -1,10 +1,12 @@  + nub Exe net9.0 enable enable + true diff --git a/lang/Nub.Lang/NubType.cs b/src/compiler/Nub.Lang/NubType.cs similarity index 100% rename from lang/Nub.Lang/NubType.cs rename to src/compiler/Nub.Lang/NubType.cs diff --git a/lang/Nub.Lang/Optional.cs b/src/compiler/Nub.Lang/Optional.cs similarity index 100% rename from lang/Nub.Lang/Optional.cs rename to src/compiler/Nub.Lang/Optional.cs diff --git a/lang/Nub.Lang/Program.cs b/src/compiler/Nub.Lang/Program.cs similarity index 96% rename from lang/Nub.Lang/Program.cs rename to src/compiler/Nub.Lang/Program.cs index c43156e..955028a 100644 --- a/lang/Nub.Lang/Program.cs +++ b/src/compiler/Nub.Lang/Program.cs @@ -48,9 +48,9 @@ internal static class Program typer.Populate(); var generator = new Generator(definitions); - var asm = generator.Generate(); + var result = generator.Generate(); - File.WriteAllText(output, asm); + File.WriteAllText(output, result); return 0; } diff --git a/lang/Nub.Lang/StructField.cs b/src/compiler/Nub.Lang/StructField.cs similarity index 100% rename from lang/Nub.Lang/StructField.cs rename to src/compiler/Nub.Lang/StructField.cs diff --git a/lang/Nub.Lang/Variant.cs b/src/compiler/Nub.Lang/Variant.cs similarity index 100% rename from lang/Nub.Lang/Variant.cs rename to src/compiler/Nub.Lang/Variant.cs diff --git a/std/gc.c b/src/runtime/gc.c similarity index 100% rename from std/gc.c rename to src/runtime/gc.c diff --git a/std/runtime.asm b/src/runtime/runtime.asm similarity index 100% rename from std/runtime.asm rename to src/runtime/runtime.asm