From 2de4381faecbbbd05105565966afc16e95885cea Mon Sep 17 00:00:00 2001 From: nazrin Date: Thu, 29 May 2025 15:33:12 +0000 Subject: [PATCH] restructure --- dub.sdl | 7 +++++++ src/{ => jlox}/expr.d | 6 ++++-- src/{ => jlox}/main.d | 10 ++++++---- src/{ => jlox}/scanner.d | 8 +++++--- src/{ => jlox}/token.d | 4 +++- src/{ => jlox}/tokentype.d | 1 + 6 files changed, 26 insertions(+), 10 deletions(-) rename src/{ => jlox}/expr.d (96%) rename src/{ => jlox}/main.d (87%) rename src/{ => jlox}/scanner.d (97%) rename src/{ => jlox}/token.d (92%) rename src/{ => jlox}/tokentype.d (94%) diff --git a/dub.sdl b/dub.sdl index 92e5b27..bfd34b7 100644 --- a/dub.sdl +++ b/dub.sdl @@ -5,3 +5,10 @@ copyright "Copyright © 2025, tanya" license "MPL-2.0" dependency "commandr" version="~>1.1.0" dependency "taggedalgebraic" version="~>0.11.23" +targetType "executable" +buildRequirements "requireBoundsCheck" "requireContracts" + +configuration "jlox" { + sourcePaths "src/jlox" +} + diff --git a/src/expr.d b/src/jlox/expr.d similarity index 96% rename from src/expr.d rename to src/jlox/expr.d index e28afec..4d78df2 100644 --- a/src/expr.d +++ b/src/jlox/expr.d @@ -1,11 +1,13 @@ +module jlox.expr; + import std.conv; import std.stdio; import std.meta : AliasSeq; import taggedalgebraic; -import token; -import tokentype; +import jlox.token; +import jlox.tokentype; abstract class Expr{ interface Visitor(R){ diff --git a/src/main.d b/src/jlox/main.d similarity index 87% rename from src/main.d rename to src/jlox/main.d index 8db13c3..1da72ac 100644 --- a/src/main.d +++ b/src/jlox/main.d @@ -1,3 +1,5 @@ +module jlox.main; + import std.stdio; import std.file; import std.conv; @@ -5,9 +7,9 @@ import std.exception; import commandr; -import token; -import tokentype; -import scanner; +import jlox.token; +import jlox.tokentype; +import jlox.scanner; static bool hadError = false; @@ -45,7 +47,7 @@ void runPrompt(){ writeln(); } -int main(string[] argv){ +version(unittest) {} else int main(string[] argv){ auto args = new Program("lox") .add(new Argument("path").optional.acceptsFiles) .parse(argv); diff --git a/src/scanner.d b/src/jlox/scanner.d similarity index 97% rename from src/scanner.d rename to src/jlox/scanner.d index 076a667..894849a 100644 --- a/src/scanner.d +++ b/src/jlox/scanner.d @@ -1,9 +1,11 @@ +module jlox.scanner; + import std.ascii; import std.conv; -import token; -import tokentype; -import main : error, report; +import jlox.token; +import jlox.tokentype; +import jlox.main : error, report; private bool isAlpha_(dchar c) => c.isAlpha || c == '_'; private bool isAlphaNum_(dchar c) => c.isAlphaNum || c == '_'; diff --git a/src/token.d b/src/jlox/token.d similarity index 92% rename from src/token.d rename to src/jlox/token.d index ba2818b..c79dc95 100644 --- a/src/token.d +++ b/src/jlox/token.d @@ -1,8 +1,10 @@ +module jlox.token; + import std.conv; import taggedalgebraic; -import tokentype; +import jlox.tokentype; struct TokenValue{ string str; diff --git a/src/tokentype.d b/src/jlox/tokentype.d similarity index 94% rename from src/tokentype.d rename to src/jlox/tokentype.d index 1fb8c9e..9cecb85 100644 --- a/src/tokentype.d +++ b/src/jlox/tokentype.d @@ -1,3 +1,4 @@ +module jlox.tokentype; enum TokenType { // Single-character tokens.