diff --git a/Triangle.Compiler/.project b/Triangle.Compiler/.project index 1dea2e3..26a1dac 100644 --- a/Triangle.Compiler/.project +++ b/Triangle.Compiler/.project @@ -24,7 +24,7 @@ programs 2 - /home/simon/Documents/Uni/CS/CSCU9A5-2/Ass1/src/a5-triangle-tools/programs + /Users/simon/Library/CloudStorage/GoogleDrive-fearrising404@gmail.com/My Drive/Uni/CS/CSCU9A5-2/Ass1/src/a5-triangle-tools/programs diff --git a/Triangle.Compiler/src/main/java/triangle/optimiser/ConstantFolder.java b/Triangle.Compiler/src/main/java/triangle/optimiser/ConstantFolder.java index dbf4141..98addbe 100644 --- a/Triangle.Compiler/src/main/java/triangle/optimiser/ConstantFolder.java +++ b/Triangle.Compiler/src/main/java/triangle/optimiser/ConstantFolder.java @@ -600,9 +600,13 @@ public class ConstantFolder implements ActualParameterVisitorNUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/programs/booleans-to-fold.tri b/programs/booleans-to-fold.tri new file mode 100644 index 0000000..fdc9900 --- /dev/null +++ b/programs/booleans-to-fold.tri @@ -0,0 +1,35 @@ +let + var b: Boolean +in +begin + b := 1 < 3; + + if b + then put('t') + else put('f'); + + puteol(); + + b := 1 > 3; + + if b + then put('t') + else put('f'); + + puteol(); + + b := 2 >= 1; + + if b + then put('t') + else put('f'); + + puteol(); + + b := 2 < 1; + + if b + then put('t') + else put('f'); + +end diff --git a/programs/run b/programs/run new file mode 100644 index 0000000..b9170dd --- /dev/null +++ b/programs/run @@ -0,0 +1,42 @@ +#!/bin/bash + +# Term. colours for output +RED='\033[0;31m' # Red +GRN='\033[0;32m' # Green +YLLW='\033[0;33m' # Yellow +NC='\033[0m' # No Color + +TRI="" #.tri file + +# Check if the input in arg 1 ($1) is empty +if [ -z "$1" ] + then # if empty... + printf "${YLLW}Usage: $0 *.tri file (optional: $0 *.tri tree)${NC}" + exit 1 # Exit with code 1, failure + else + TRI=$1 +fi + +#Remove the extension of the file +FILENAME=$(echo $TRI | cut -f 1 -d '.') + +printf "${YLLW}[INFO] Compiling file: $FILENAME.tri to $FILENAME.tam ...${NC}\n" + +# Compile to tam +if java -cp ../build/libs/Triangle-Tools.jar triangle.Compiler $FILENAME.tri -o=$FILENAME.tam &> /dev/null #quiet + then if [ -z "$2" ] + then #if second arg empty (really im not checking if you put tree) + printf "${GRN}[INFO] Running file: $FILENAME.tam ...${NC}\n" + java -cp ../build/libs/Triangle-Tools.jar triangle.abstractMachine.Interpreter $FILENAME.tam + exit 0 + else #youve put tree, so lets see it! + printf "${GRN}[INFO] Running file: $FILENAME.tam ... and displaying AST${NC}\n" + java -cp ../build/libs/Triangle-Tools.jar triangle.Compiler $FILENAME.tri tree -o=$FILENAME.tam &> /dev/null #quiet + exit 0 + fi + else #error msg + printf "${RED}[ERROR] Could not complie $FILENAME.tri ...${NC}" + err=$(java -cp ../build/libs/Triangle-Tools.jar triangle.Compiler $FILENAME.tri -o=$FILENAME.tam) + printf "${RED}\n$err\n${NC}" + exit 1 #exit with 1, failure +fi