some changes + on macos now

main
Simon Kellet 1 year ago
parent c505b9cb2c
commit 69a24132d3
  1. 2
      Triangle.Compiler/.project
  2. 6
      Triangle.Compiler/src/main/java/triangle/optimiser/ConstantFolder.java
  3. BIN
      booleanfold.tam
  4. BIN
      build/libs/Triangle-Tools.jar
  5. 0
      gradlew
  6. 184
      gradlew.bat
  7. 35
      programs/booleans-to-fold.tri
  8. 42
      programs/run

@ -24,7 +24,7 @@
<link> <link>
<name>programs</name> <name>programs</name>
<type>2</type> <type>2</type>
<location>/home/simon/Documents/Uni/CS/CSCU9A5-2/Ass1/src/a5-triangle-tools/programs</location> <location>/Users/simon/Library/CloudStorage/GoogleDrive-fearrising404@gmail.com/My Drive/Uni/CS/CSCU9A5-2/Ass1/src/a5-triangle-tools/programs</location>
</link> </link>
</linkedResources> </linkedResources>
</projectDescription> </projectDescription>

@ -600,9 +600,13 @@ public class ConstantFolder implements ActualParameterVisitor<Void, AbstractSynt
ie.type = StdEnvironment.integerType; ie.type = StdEnvironment.integerType;
return ie; return ie;
} else if (foldedValue instanceof Boolean) { } else if (foldedValue instanceof Boolean) {
//Task 7?
System.out.println("Boolean Expr. ");
/* currently not handled! */ /* currently not handled! */
} }
} } else {
//?
}
// any unhandled situation (i.e., not foldable) is ignored // any unhandled situation (i.e., not foldable) is ignored
return null; return null;

Binary file not shown.

Binary file not shown.

184
gradlew.bat vendored

@ -1,92 +1,92 @@
@rem @rem
@rem Copyright 2015 the original author or authors. @rem Copyright 2015 the original author or authors.
@rem @rem
@rem Licensed under the Apache License, Version 2.0 (the "License"); @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 not use this file except in compliance with the License.
@rem You may obtain a copy of the License at @rem You may obtain a copy of the License at
@rem @rem
@rem https://www.apache.org/licenses/LICENSE-2.0 @rem https://www.apache.org/licenses/LICENSE-2.0
@rem @rem
@rem Unless required by applicable law or agreed to in writing, software @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 distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and @rem See the License for the specific language governing permissions and
@rem limitations under the License. @rem limitations under the License.
@rem @rem
@if "%DEBUG%"=="" @echo off @if "%DEBUG%"=="" @echo off
@rem ########################################################################## @rem ##########################################################################
@rem @rem
@rem Gradle startup script for Windows @rem Gradle startup script for Windows
@rem @rem
@rem ########################################################################## @rem ##########################################################################
@rem Set local scope for the variables with windows NT shell @rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0 set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=. if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused @rem This is normally unused
set APP_BASE_NAME=%~n0 set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME% set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter. @rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 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. @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" set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe @rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute if %ERRORLEVEL% equ 0 goto execute
echo. echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo. echo.
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation. echo location of your Java installation.
goto fail goto fail
:findJavaFromJavaHome :findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=% set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute if exist "%JAVA_EXE%" goto execute
echo. echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo. echo.
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation. echo location of your Java installation.
goto fail goto fail
:execute :execute
@rem Setup the command line @rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle @rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end :end
@rem End local scope for the variables with windows NT shell @rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd if %ERRORLEVEL% equ 0 goto mainEnd
:fail :fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code! rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL% set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1 if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE% exit /b %EXIT_CODE%
:mainEnd :mainEnd
if "%OS%"=="Windows_NT" endlocal if "%OS%"=="Windows_NT" endlocal
:omega :omega

@ -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

@ -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
Loading…
Cancel
Save