From 6e7f0e0ae9c57f76bb57a23004819b8cb49589da Mon Sep 17 00:00:00 2001 From: physick Date: Thu, 20 Aug 2026 18:08:25 +0500 Subject: build system revamp + entry point --- jlox/.gitignore | 1 + jlox/Makefile | 11 ++++++++ jlox/app/build.gradle | 10 ++++++- jlox/app/src/main/java/org/example/App.java | 14 ---------- jlox/app/src/main/java/org/example/lox.java | 43 +++++++++++++++++++++++++++++ jlox/test.lox | 1 + 6 files changed, 65 insertions(+), 15 deletions(-) create mode 100644 jlox/Makefile delete mode 100644 jlox/app/src/main/java/org/example/App.java create mode 100644 jlox/app/src/main/java/org/example/lox.java create mode 100644 jlox/test.lox diff --git a/jlox/.gitignore b/jlox/.gitignore index 1b6985c..c3238f3 100644 --- a/jlox/.gitignore +++ b/jlox/.gitignore @@ -2,4 +2,5 @@ .gradle # Ignore Gradle build output directory +app/build build diff --git a/jlox/Makefile b/jlox/Makefile new file mode 100644 index 0000000..d4d0252 --- /dev/null +++ b/jlox/Makefile @@ -0,0 +1,11 @@ +# inserting args +ifeq (run,$(firstword $(MAKECMDGOALS))) + RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) + $(eval $(RUN_ARGS):;@:) +endif + +build: + ./gradlew jar + +run: + ./gradlew jar && java -jar ./app/build/libs/app.jar $(RUN_ARGS) diff --git a/jlox/app/build.gradle b/jlox/app/build.gradle index 87365b8..799620d 100644 --- a/jlox/app/build.gradle +++ b/jlox/app/build.gradle @@ -34,10 +34,18 @@ java { application { // Define the main class for the application. - mainClass = 'org.example.App' + mainClass = 'org.example.lox' } tasks.named('test') { // Use JUnit Platform for unit tests. useJUnitPlatform() } + +tasks.named('jar') { + manifest { + attributes( + 'Main-Class': 'org.example.lox' + ) + } +} diff --git a/jlox/app/src/main/java/org/example/App.java b/jlox/app/src/main/java/org/example/App.java deleted file mode 100644 index e7e1af9..0000000 --- a/jlox/app/src/main/java/org/example/App.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - * This source file was generated by the Gradle 'init' task - */ -package org.example; - -public class App { - public String getGreeting() { - return "Hello World!"; - } - - public static void main(String[] args) { - System.out.println(new App().getGreeting()); - } -} diff --git a/jlox/app/src/main/java/org/example/lox.java b/jlox/app/src/main/java/org/example/lox.java new file mode 100644 index 0000000..e15f8ad --- /dev/null +++ b/jlox/app/src/main/java/org/example/lox.java @@ -0,0 +1,43 @@ +package org.example; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Paths; + +public class lox { + public static void main(String[] args) throws IOException { + switch (args.length) { + case 0: + RunPropmt(); + return; + case 1: + InerpritFile(args[0]); + return; + default: + System.out.println("Invalid arguments"); + } + } + + private static void RunPropmt() throws IOException { + InputStreamReader inp = new InputStreamReader(System.in); + BufferedReader reader= new BufferedReader(inp); + + while (true) { + System.out.print("$ "); + String prompt = reader.readLine(); + if (prompt == null) break; + run(prompt); + } + } + + private static void InerpritFile(String fileName) throws IOException { + byte[] bytes = Files.readAllBytes(Paths.get(fileName)); + run(new String(bytes, Charset.defaultCharset())); + } + + private static void run(String program) { + System.out.println(program); + } +} diff --git a/jlox/test.lox b/jlox/test.lox new file mode 100644 index 0000000..ca8cb76 --- /dev/null +++ b/jlox/test.lox @@ -0,0 +1 @@ +xdx -- cgit v1.3