restructure
This commit is contained in:
parent
b466717c6e
commit
2de4381fae
6 changed files with 26 additions and 10 deletions
7
dub.sdl
7
dub.sdl
|
|
@ -5,3 +5,10 @@ copyright "Copyright © 2025, tanya"
|
||||||
license "MPL-2.0"
|
license "MPL-2.0"
|
||||||
dependency "commandr" version="~>1.1.0"
|
dependency "commandr" version="~>1.1.0"
|
||||||
dependency "taggedalgebraic" version="~>0.11.23"
|
dependency "taggedalgebraic" version="~>0.11.23"
|
||||||
|
targetType "executable"
|
||||||
|
buildRequirements "requireBoundsCheck" "requireContracts"
|
||||||
|
|
||||||
|
configuration "jlox" {
|
||||||
|
sourcePaths "src/jlox"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
|
module jlox.expr;
|
||||||
|
|
||||||
import std.conv;
|
import std.conv;
|
||||||
import std.stdio;
|
import std.stdio;
|
||||||
import std.meta : AliasSeq;
|
import std.meta : AliasSeq;
|
||||||
|
|
||||||
import taggedalgebraic;
|
import taggedalgebraic;
|
||||||
|
|
||||||
import token;
|
import jlox.token;
|
||||||
import tokentype;
|
import jlox.tokentype;
|
||||||
|
|
||||||
abstract class Expr{
|
abstract class Expr{
|
||||||
interface Visitor(R){
|
interface Visitor(R){
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
module jlox.main;
|
||||||
|
|
||||||
import std.stdio;
|
import std.stdio;
|
||||||
import std.file;
|
import std.file;
|
||||||
import std.conv;
|
import std.conv;
|
||||||
|
|
@ -5,9 +7,9 @@ import std.exception;
|
||||||
|
|
||||||
import commandr;
|
import commandr;
|
||||||
|
|
||||||
import token;
|
import jlox.token;
|
||||||
import tokentype;
|
import jlox.tokentype;
|
||||||
import scanner;
|
import jlox.scanner;
|
||||||
|
|
||||||
static bool hadError = false;
|
static bool hadError = false;
|
||||||
|
|
||||||
|
|
@ -45,7 +47,7 @@ void runPrompt(){
|
||||||
writeln();
|
writeln();
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(string[] argv){
|
version(unittest) {} else int main(string[] argv){
|
||||||
auto args = new Program("lox")
|
auto args = new Program("lox")
|
||||||
.add(new Argument("path").optional.acceptsFiles)
|
.add(new Argument("path").optional.acceptsFiles)
|
||||||
.parse(argv);
|
.parse(argv);
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
|
module jlox.scanner;
|
||||||
|
|
||||||
import std.ascii;
|
import std.ascii;
|
||||||
import std.conv;
|
import std.conv;
|
||||||
|
|
||||||
import token;
|
import jlox.token;
|
||||||
import tokentype;
|
import jlox.tokentype;
|
||||||
import main : error, report;
|
import jlox.main : error, report;
|
||||||
|
|
||||||
private bool isAlpha_(dchar c) => c.isAlpha || c == '_';
|
private bool isAlpha_(dchar c) => c.isAlpha || c == '_';
|
||||||
private bool isAlphaNum_(dchar c) => c.isAlphaNum || c == '_';
|
private bool isAlphaNum_(dchar c) => c.isAlphaNum || c == '_';
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
|
module jlox.token;
|
||||||
|
|
||||||
import std.conv;
|
import std.conv;
|
||||||
|
|
||||||
import taggedalgebraic;
|
import taggedalgebraic;
|
||||||
|
|
||||||
import tokentype;
|
import jlox.tokentype;
|
||||||
|
|
||||||
struct TokenValue{
|
struct TokenValue{
|
||||||
string str;
|
string str;
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
module jlox.tokentype;
|
||||||
|
|
||||||
enum TokenType {
|
enum TokenType {
|
||||||
// Single-character tokens.
|
// Single-character tokens.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue