Gob waa luuqad barnaamijeed oo kudhisan Java. Mashruucan waxaa ku jira
tujumaha luuqada Gob iyo class lagu abuuro GenerateAst.java class-yada kaladuwan ee AST-gu uu taageero (Expr.java iyo Stmt.java).
Hubi in kombiyuutarkaaga ay kugu jiraan:
- Java Development Kit (JDK) 17
- Apache Maven
- Git
Waxaad ku xaqiijin kartaa lasoo dagidda:
java --version
javac --version
mvn --versionSaddexda amarba waa inay muujiyaan in Java 17 la isticmaalayo. Haddii Maven uu
soo saaro qaladka invalid target release: 17, hubi in JAVA_HOME uu ku
jeedo JDK 17.
git clone https://github.com/Luqadda-Gob/gob.git
cd gobSi aad dib ugu abuurto Expr.java iyo Stmt.java, gal galka Java-ga:
cd src/main/java
javac com/kq/gob/tools/GenerateAst.java
java com.kq.gob.tools.GenerateAst com/kq/gob/Gob
cd ../../..Qalabkani wuxuu wax ka beddelayaa faylashan:
src/main/java/com/kq/gob/Gob/Expr.java
src/main/java/com/kq/gob/Gob/Stmt.java
Adigoo jooga galka ugu sarreeya ee mashruuca, orod:
mvn clean packageMarka dhismuhu guulaysto, Maven wuxuu abuuraa:
target/gob-0.0.1.jar
Si aad u aragto caawimada:
java -jar target/gob-0.0.1.jar --caawiSi aad u furto goobta aad si toos ah ugu qori karto koodhka Gob:
java -jar target/gob-0.0.1.jar --qorAma isticmaal magaca gaaban:
java -jar target/gob-0.0.1.jar -qSi aad u orodsiiso fayl Gob ah:
java -jar target/gob-0.0.1.jar --file waddada/faylka.gobAma:
java -jar target/gob-0.0.1.jar -f waddada/faylka.gobSi aad u fuliso dhammaan tijaabooyinka:
mvn testWindows-ka waxaa la abuuraa laba executable:
gob.exe— barnaamijka caadiga ah oo terminal-ka looga isticmaalogobw.exe— nooca aan console lahayn; kani wuxuu u shaqeeyaa marka.gobfaylasha laga furo File Explorer si aanay dhibaatada "terminal blinks" u dhicin
Windows setup-ku wuxuu kugu caawinaya lasoo daga gob.exe iyo gobw.exe,
Si aad faylashan ugu daabacdo GitHub Release, marka hore hubi in nooca ku jira
pom.xml uu sax yahay. Kadib samee oo dir tag:
git tag v0.0.1
git push origin v0.0.1Workflow-gu wuxuu si toos ah u abuuraa GitHub Release-ka iyo faylasha lagu soo dejisan karo.
Si aad native executable ugu dhisto kombiyuutarkaaga, waa in native-image laga heli karaa PowerShell-kaaga. JDK caadi ah sida Corretto ama Temurin kuma filna; waxaad u baahan tahay GraalVM JDK.
Windows-ka, lasoo dag:
-
GraalVM JDK 21 ama ka cusub (
winget install GraalVM.GraalVM.JDK.21) -
Visual Studio 2022 Build Tools oo leh Desktop development with C++, MSVC, iyo Windows SDK
-
Marka lasoo dagiddu dhammaato,
JAVA_HOMEiyoPATHu jeedi galka GraalVM. -
Winget badanaa wuxuu ku soo dajiya
C:\Java\graalvm-jdk-<nooca>:
$env:JAVA_HOME = "C:\Java\<graalvm-jdk-path>"
$env:PATH = "$env:JAVA_HOME\bin;$env:PATH"
native-image --versionMarka native-image --version shaqeeyo, dhis JAR-ka iyo labada executable:
mvn clean package
New-Item -ItemType Directory -Force target/native
# gob.exe — barnaamijka caadiga ah
native-image --no-fallback -jar target/gob-0.0.1.jar -o target/native/gob
# gobw.exe — nooca aan console lahayn (loogu talagalay file associations)
native-image --no-fallback `
-H:NativeLinkerOption=/SUBSYSTEM:WINDOWS `
-H:NativeLinkerOption=/ENTRY:mainCRTStartup `
-jar target/gob-0.0.1.jar -o target/native/gobwSi aad Windows setup wizard-ka ugu dhisto kombiyuutarkaaga, marka hore lasoo dag Inno Setup:
winget install JRSoftware.InnoSetupWinget wuxuu Inno Setup ku soo dagi karaa (Program Files (x86) ama %LOCALAPPDATA%\Programs). Isticmaal script-kan si aad u hesho halka saxda ah:
$iscc = Get-Command ISCC.exe -ErrorAction SilentlyContinue
if ($iscc) {
$isccPath = $iscc.Source
} else {
$paths = @(
"${env:ProgramFiles(x86)}\Inno Setup 6\ISCC.exe",
"$env:LOCALAPPDATA\Programs\Inno Setup 6\ISCC.exe"
)
$isccPath = $paths | Where-Object { Test-Path $_ } | Select-Object -First 1
if (-not $isccPath) { throw "Inno Setup lama helin." }
}
& $isccPath installer/windows/gob.issSetup-ka la abuuray wuxuu galayaa target/installer.
src/main/java/com/kq/gob/Gob/ Interpreter-ka iyo qaybaha luuqadda
src/main/java/com/kq/gob/tools/ Qalabka abuura AST-ga
src/test/java/ Tijaabooyinka mashruuca
pom.xml Dejinta Maven
Mashruucan wuxuu ku shaqeeyaa License-ka ku xusan LICENSE.
