diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..55fca8a --- /dev/null +++ b/build.gradle @@ -0,0 +1,42 @@ +task wrapper(type: Wrapper) { + gradleVersion = '1.12' +} + +apply plugin: 'java' +apply plugin: 'maven-publish' + +group = 'org.klomp' +version = '1.0.0-SNAPSHOT' + +publishing { + publications { + mavenJava(MavenPublication) { + artifactId 'cassowary' + from components.java + } + } + repositories { + maven { + credentials { + username project.hasProperty('mavenUsername') ? mavenUsername : null + password project.hasProperty('mavenPassword') ? mavenPassword : null + } + url project.hasProperty('mavenUrl') ? mavenUrl : null + } + } +} + +repositories { + mavenLocal() + mavenCentral() +} + +tasks.withType(Compile) { + options.encoding = "UTF-8" + options.compilerArgs << "-Xlint:unchecked" +} + +dependencies { + compile "junit:junit:4.7" +} + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..0087cd3 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..16fcb61 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Oct 20 10:31:47 CEST 2014 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-1.12-bin.zip diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@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 + +@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= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +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 init + +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 + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +: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 %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="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! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/java/org/klomp/cassowary/parser/Yylex.java b/src/main/java/org/klomp/cassowary/parser/Yylex.java deleted file mode 100644 index fa52117..0000000 --- a/src/main/java/org/klomp/cassowary/parser/Yylex.java +++ /dev/null @@ -1,408 +0,0 @@ -// $Id: Yylex.java,v 1.5 2000/05/04 18:00:29 gjb Exp $ -package org.klomp.cassowary.parser; - -import java_cup.runtime.Symbol; - -import org.klomp.cassowary.ClVariable; - -public class Yylex implements java_cup.runtime.Scanner { - private final int YY_BUFFER_SIZE = 512; - private final int YY_F = -1; - private final int YY_NO_STATE = -1; - private final int YY_NOT_ACCEPT = 0; - private final int YY_START = 1; - private final int YY_END = 2; - private final int YY_NO_ANCHOR = 4; - private final int YY_BOL = 128; - private final int YY_EOF = 129; - - // added code to lexer class - private java.util.Hashtable m_variable_name_object_hash; - public boolean m_debug_lex = false; - - public void setVariableNameObjectHash(java.util.Hashtable variable_name_object_hash) { - m_variable_name_object_hash = variable_name_object_hash; - } - - private java.io.BufferedReader yy_reader; - private int yy_buffer_index; - private int yy_buffer_read; - private int yy_buffer_start; - private int yy_buffer_end; - private char yy_buffer[]; - private boolean yy_at_bol; - private int yy_lexical_state; - - public Yylex(java.io.Reader reader) { - this(); - if (null == reader) { - throw (new Error("Error: Bad input stream initializer.")); - } - yy_reader = new java.io.BufferedReader(reader); - } - - public Yylex(java.io.InputStream instream) { - this(); - if (null == instream) { - throw (new Error("Error: Bad input stream initializer.")); - } - yy_reader = new java.io.BufferedReader(new java.io.InputStreamReader(instream)); - } - - private Yylex() { - yy_buffer = new char[YY_BUFFER_SIZE]; - yy_buffer_read = 0; - yy_buffer_index = 0; - yy_buffer_start = 0; - yy_buffer_end = 0; - yy_at_bol = true; - yy_lexical_state = YYINITIAL; - - // code to go into constructor - } - - private boolean yy_eof_done = false; - private final int YYINITIAL = 0; - private final int yy_state_dtrans[] = { 0 }; - - private void yybegin(int state) { - yy_lexical_state = state; - } - - private int yy_advance() throws java.io.IOException { - int next_read; - int i; - int j; - - if (yy_buffer_index < yy_buffer_read) { - return yy_buffer[yy_buffer_index++]; - } - - if (0 != yy_buffer_start) { - i = yy_buffer_start; - j = 0; - while (i < yy_buffer_read) { - yy_buffer[j] = yy_buffer[i]; - ++i; - ++j; - } - yy_buffer_end = yy_buffer_end - yy_buffer_start; - yy_buffer_start = 0; - yy_buffer_read = j; - yy_buffer_index = j; - next_read = yy_reader.read(yy_buffer, yy_buffer_read, yy_buffer.length - yy_buffer_read); - if (-1 == next_read) { - return YY_EOF; - } - yy_buffer_read = yy_buffer_read + next_read; - } - - while (yy_buffer_index >= yy_buffer_read) { - if (yy_buffer_index >= yy_buffer.length) { - yy_buffer = yy_double(yy_buffer); - } - next_read = yy_reader.read(yy_buffer, yy_buffer_read, yy_buffer.length - yy_buffer_read); - if (-1 == next_read) { - return YY_EOF; - } - yy_buffer_read = yy_buffer_read + next_read; - } - return yy_buffer[yy_buffer_index++]; - } - - private void yy_move_end() { - if (yy_buffer_end > yy_buffer_start && '\n' == yy_buffer[yy_buffer_end - 1]) - yy_buffer_end--; - if (yy_buffer_end > yy_buffer_start && '\r' == yy_buffer[yy_buffer_end - 1]) - yy_buffer_end--; - } - - private boolean yy_last_was_cr = false; - - private void yy_mark_start() { - yy_buffer_start = yy_buffer_index; - } - - private void yy_mark_end() { - yy_buffer_end = yy_buffer_index; - } - - private void yy_to_mark() { - yy_buffer_index = yy_buffer_end; - yy_at_bol = (yy_buffer_end > yy_buffer_start) - && ('\r' == yy_buffer[yy_buffer_end - 1] || '\n' == yy_buffer[yy_buffer_end - 1] - || 2028/* LS */== yy_buffer[yy_buffer_end - 1] || 2029/* PS */== yy_buffer[yy_buffer_end - 1]); - } - - private java.lang.String yytext() { - return (new java.lang.String(yy_buffer, yy_buffer_start, yy_buffer_end - yy_buffer_start)); - } - - private int yylength() { - return yy_buffer_end - yy_buffer_start; - } - - private char[] yy_double(char buf[]) { - int i; - char newbuf[]; - newbuf = new char[2 * buf.length]; - for (i = 0; i < buf.length; ++i) { - newbuf[i] = buf[i]; - } - return newbuf; - } - - private final int YY_E_INTERNAL = 0; - private final int YY_E_MATCH = 1; - private java.lang.String yy_error_string[] = { "Error: Internal error.\n", "Error: Unmatched input.\n" }; - - private void yy_error(int code, boolean fatal) { - java.lang.System.out.print(yy_error_string[code]); - java.lang.System.out.flush(); - if (fatal) { - throw new Error("Fatal Error.\n"); - } - } - - private int[][] unpackFromString(int size1, int size2, String st) { - int colonIndex = -1; - String lengthString; - int sequenceLength = 0; - int sequenceInteger = 0; - - int commaIndex; - String workString; - - int res[][] = new int[size1][size2]; - for (int i = 0; i < size1; i++) { - for (int j = 0; j < size2; j++) { - if (sequenceLength != 0) { - res[i][j] = sequenceInteger; - sequenceLength--; - continue; - } - commaIndex = st.indexOf(','); - workString = (commaIndex == -1) ? st : st.substring(0, commaIndex); - st = st.substring(commaIndex + 1); - colonIndex = workString.indexOf(':'); - if (colonIndex == -1) { - res[i][j] = Integer.parseInt(workString); - continue; - } - lengthString = workString.substring(colonIndex + 1); - sequenceLength = Integer.parseInt(lengthString); - workString = workString.substring(0, colonIndex); - sequenceInteger = Integer.parseInt(workString); - res[i][j] = sequenceInteger; - sequenceLength--; - } - } - return res; - } - - private int yy_acpt[] = { - /* 0 */YY_NOT_ACCEPT, - /* 1 */YY_NO_ANCHOR, - /* 2 */YY_NO_ANCHOR, - /* 3 */YY_NO_ANCHOR, - /* 4 */YY_NO_ANCHOR, - /* 5 */YY_NO_ANCHOR, - /* 6 */YY_NO_ANCHOR, - /* 7 */YY_NO_ANCHOR, - /* 8 */YY_NO_ANCHOR, - /* 9 */YY_NO_ANCHOR, - /* 10 */YY_NO_ANCHOR, - /* 11 */YY_NO_ANCHOR, - /* 12 */YY_NO_ANCHOR, - /* 13 */YY_NO_ANCHOR, - /* 14 */YY_NO_ANCHOR, - /* 15 */YY_NO_ANCHOR, - /* 16 */YY_NO_ANCHOR, - /* 17 */YY_NO_ANCHOR, - /* 18 */YY_NO_ANCHOR }; - private int yy_cmap[] = unpackFromString(1, 130, - "15:9,1:2,15,1:2,15:18,1,15:7,9,10,7,5,15,6,12,8,11:10,15:2,4,3,2,15:2,13:26" + ",15:4,14,15,13:26,15:5,0:2")[0]; - - private int yy_rmap[] = unpackFromString(1, 19, "0,1,2,3,1:7,4,5,1:2,6,7:2,1")[0]; - - private int yy_nxt[][] = unpackFromString(8, 16, - "1,2,3,4,15,5,6,7,8,9,10,11,17,12,18:2,-1:17,2,-1:17,13,-1:23,11,16,-1:14,12" + ",-1,12:2,-1:4,14,-1:23,16,-1:4"); - - @Override - public java_cup.runtime.Symbol next_token() throws java.io.IOException { - int yy_lookahead; - int yy_anchor = YY_NO_ANCHOR; - int yy_state = yy_state_dtrans[yy_lexical_state]; - int yy_next_state = YY_NO_STATE; - int yy_last_accept_state = YY_NO_STATE; - boolean yy_initial = true; - int yy_this_accept; - - yy_mark_start(); - yy_this_accept = yy_acpt[yy_state]; - if (YY_NOT_ACCEPT != yy_this_accept) { - yy_last_accept_state = yy_state; - yy_mark_end(); - } - while (true) { - if (yy_initial && yy_at_bol) - yy_lookahead = YY_BOL; - else - yy_lookahead = yy_advance(); - yy_next_state = YY_F; - yy_next_state = yy_nxt[yy_rmap[yy_state]][yy_cmap[yy_lookahead]]; - if (YY_EOF == yy_lookahead && true == yy_initial) { - return null; - } - if (YY_F != yy_next_state) { - yy_state = yy_next_state; - yy_initial = false; - yy_this_accept = yy_acpt[yy_state]; - if (YY_NOT_ACCEPT != yy_this_accept) { - yy_last_accept_state = yy_state; - yy_mark_end(); - } - } else { - if (YY_NO_STATE == yy_last_accept_state) { - throw (new Error("Lexical Error: Unmatched Input.")); - } else { - yy_anchor = yy_acpt[yy_last_accept_state]; - if (0 != (YY_END & yy_anchor)) { - yy_move_end(); - } - yy_to_mark(); - switch (yy_last_accept_state) { - case 1: - - case -2: - break; - case 2: { /* skip white space */ - } - case -3: - break; - case 3: { - System.err.println("Illegal character: " + yytext()); - } - case -4: - break; - case 4: { - return new Symbol(sym.EQ); - } - case -5: - break; - case 5: { - return new Symbol(sym.PLUS); - } - case -6: - break; - case 6: { - return new Symbol(sym.MINUS); - } - case -7: - break; - case 7: { - return new Symbol(sym.TIMES); - } - case -8: - break; - case 8: { - return new Symbol(sym.DIVIDE); - } - case -9: - break; - case 9: { - return new Symbol(sym.LPAREN); - } - case -10: - break; - case 10: { - return new Symbol(sym.RPAREN); - } - case -11: - break; - case 11: { - return new Symbol(sym.NUMBER, new Double(yytext())); - } - case -12: - break; - case 12: { - String variable_name = new String(yytext()); - if (m_debug_lex) { - System.out.println("Lexical analysis found <" + variable_name + ">"); - } - if (!m_variable_name_object_hash.containsKey(variable_name)) { - if (m_debug_lex) { - System.out.println(" Putting it in hash for the first time."); - } - ClVariable variable = new ClVariable(); - Object return_value = m_variable_name_object_hash.put(variable_name, variable); - if (return_value != null) { - System.err.println("Variable was already in hash!!!!!"); - } - if (m_debug_lex) { - if (m_variable_name_object_hash.containsKey(variable_name)) { - System.out.println(" Hash table now contains object."); - } else { - System.out.println(" Hash table does not contain object."); - } - } - if (m_variable_name_object_hash.isEmpty()) { - System.err.println(" How can the hashtable be empty after inserting something?"); - } - } else { - if (m_debug_lex) - System.err.println(" Already in Hash."); - } - return new Symbol(sym.VARIABLE, variable_name); - } - case -13: - break; - case 13: { - return new Symbol(sym.GEQ); - } - case -14: - break; - case 14: { - return new Symbol(sym.LEQ); - } - case -15: - break; - case 15: { - System.err.println("Illegal character: " + yytext()); - } - case -16: - break; - case 16: { - return new Symbol(sym.NUMBER, new Double(yytext())); - } - case -17: - break; - case 17: { - System.err.println("Illegal character: " + yytext()); - } - case -18: - break; - case 18: { - System.err.println("Illegal character: " + yytext()); - } - case -19: - break; - default: - yy_error(YY_E_INTERNAL, false); - case -1: - } - yy_initial = true; - yy_state = yy_state_dtrans[yy_lexical_state]; - yy_next_state = YY_NO_STATE; - yy_last_accept_state = YY_NO_STATE; - yy_mark_start(); - yy_this_accept = yy_acpt[yy_state]; - if (YY_NOT_ACCEPT != yy_this_accept) { - yy_last_accept_state = yy_state; - yy_mark_end(); - } - } - } - } - } -} diff --git a/src/main/java/org/klomp/cassowary/parser/parser.java b/src/main/java/org/klomp/cassowary/parser/parser.java deleted file mode 100644 index 1038b0c..0000000 --- a/src/main/java/org/klomp/cassowary/parser/parser.java +++ /dev/null @@ -1,417 +0,0 @@ -//---------------------------------------------------- -// The following code was generated by CUP v0.10k -// Fri May 05 17:17:37 PDT 2000 -//---------------------------------------------------- - -package org.klomp.cassowary.parser; - -import org.klomp.cassowary.CL; -import org.klomp.cassowary.ClLinearExpression; -import org.klomp.cassowary.ClVariable; -import org.klomp.cassowary.clconstraint.ClLinearEquation; -import org.klomp.cassowary.clconstraint.ClLinearInequality; - -/** - * CUP v0.10k generated parser. - * - * @version Fri May 05 17:17:37 PDT 2000 - */ -public class parser extends java_cup.runtime.lr_parser { - - /** Default constructor. */ - public parser() { - super(); - } - - /** Constructor which sets the default scanner. */ - public parser(java_cup.runtime.Scanner s) { - super(s); - } - - /** Production table. */ - protected static final short _production_table[][] = unpackFromStrings(new String[] { "\000\016\000\002\003\003\000\002\002\004\000\002\003" - + "\003\000\002\004\005\000\002\005\005\000\002\005\005" - + "\000\002\006\003\000\002\006\003\000\002\006\005\000" - + "\002\006\005\000\002\006\005\000\002\006\005\000\002" + "\006\004\000\002\006\005" }); - - /** Access to production table. */ - @Override - public short[][] production_table() { - return _production_table; - } - - /** Parse-action table. */ - protected static final short[][] _action_table = unpackFromStrings(new String[] { "\000\033\000\012\010\007\014\011\016\005\017\013\001" - + "\002\000\004\002\001\001\002\000\024\002\ufffb\004\ufffb" - + "\005\ufffb\006\ufffb\007\ufffb\010\ufffb\012\ufffb\013\ufffb\015" - + "\ufffb\001\002\000\004\002\uffff\001\002\000\012\010\007" - + "\014\011\016\005\017\013\001\002\000\004\002\034\001" - + "\002\000\012\010\007\014\011\016\005\017\013\001\002" - + "\000\020\004\015\005\017\006\014\007\016\010\020\012" - + "\022\013\021\001\002\000\024\002\ufffa\004\ufffa\005\ufffa" - + "\006\ufffa\007\ufffa\010\ufffa\012\ufffa\013\ufffa\015\ufffa\001" - + "\002\000\012\010\007\014\011\016\005\017\013\001\002" - + "\000\012\010\007\014\011\016\005\017\013\001\002\000" - + "\012\010\007\014\011\016\005\017\013\001\002\000\012" - + "\010\007\014\011\016\005\017\013\001\002\000\012\010" - + "\007\014\011\016\005\017\013\001\002\000\012\010\007" - + "\014\011\016\005\017\013\001\002\000\012\010\007\014" - + "\011\016\005\017\013\001\002\000\024\002\ufff7\004\ufff7" - + "\005\ufff7\006\ufff7\007\ufff7\010\ufff7\012\ufff7\013\ufff7\015" - + "\ufff7\001\002\000\024\002\ufff6\004\ufff6\005\ufff6\006\ufff6" - + "\007\ufff6\010\ufff6\012\ufff6\013\ufff6\015\ufff6\001\002\000" - + "\024\002\ufff8\004\ufff8\005\ufff8\006\ufff8\007\ufff8\010\ufff8" - + "\012\022\013\021\015\ufff8\001\002\000\014\002\ufffc\007" - + "\016\010\020\012\022\013\021\001\002\000\024\002\ufff9" - + "\004\ufff9\005\ufff9\006\ufff9\007\ufff9\010\ufff9\012\022\013" - + "\021\015\ufff9\001\002\000\014\002\ufffd\007\016\010\020" - + "\012\022\013\021\001\002\000\014\002\ufffe\007\016\010" - + "\020\012\022\013\021\001\002\000\014\007\016\010\020" - + "\012\022\013\021\015\033\001\002\000\024\002\ufff4\004" - + "\ufff4\005\ufff4\006\ufff4\007\ufff4\010\ufff4\012\ufff4\013\ufff4" - + "\015\ufff4\001\002\000\004\002\000\001\002\000\024\002" - + "\ufff5\004\ufff5\005\ufff5\006\ufff5\007\ufff5\010\ufff5\012\ufff5" + "\013\ufff5\015\ufff5\001\002" }); - - /** Access to parse-action table. */ - @Override - public short[][] action_table() { - return _action_table; - } - - /** reduce_goto table. */ - protected static final short[][] _reduce_table = unpackFromStrings(new String[] { "\000\033\000\012\003\007\004\003\005\005\006\011\001" - + "\001\000\002\001\001\000\002\001\001\000\002\001\001" - + "\000\004\006\034\001\001\000\002\001\001\000\004\006" - + "\031\001\001\000\002\001\001\000\002\001\001\000\004" - + "\006\030\001\001\000\004\006\027\001\001\000\004\006" - + "\026\001\001\000\004\006\025\001\001\000\004\006\024" - + "\001\001\000\004\006\023\001\001\000\004\006\022\001" - + "\001\000\002\001\001\000\002\001\001\000\002\001\001" - + "\000\002\001\001\000\002\001\001\000\002\001\001\000" - + "\002\001\001\000\002\001\001\000\002\001\001\000\002" + "\001\001\000\002\001\001" }); - - /** Access to reduce_goto table. */ - @Override - public short[][] reduce_table() { - return _reduce_table; - } - - /** Instance of action encapsulation class. */ - protected CUP$parser$actions action_obj; - - /** Action encapsulation object initializer. */ - @Override - protected void init_actions() { - action_obj = new CUP$parser$actions(this); - } - - /** Invoke a user supplied parse action. */ - @Override - public java_cup.runtime.Symbol do_action(int act_num, java_cup.runtime.lr_parser parser, java.util.Stack stack, int top) - throws java.lang.Exception { - /* call code in generated class */ - return action_obj.CUP$parser$do_action(act_num, parser, stack, top); - } - - /** Indicates start state. */ - @Override - public int start_state() { - return 0; - } - - /** Indicates start production. */ - @Override - public int start_production() { - return 1; - } - - /** EOF Symbol index. */ - @Override - public int EOF_sym() { - return 0; - } - - /** error Symbol index. */ - @Override - public int error_sym() { - return 1; - } - - public java.util.Hashtable m_variable_name_object_hash; - public boolean m_debug_parse = false; - - public void setVariableNameObjectHash(java.util.Hashtable variable_name_object_hash) { - m_variable_name_object_hash = variable_name_object_hash; - } - -} - -/** Cup generated class to encapsulate user supplied action code. */ -class CUP$parser$actions { - private final parser parser; - - /** Constructor */ - CUP$parser$actions(parser parser) { - this.parser = parser; - } - - /** Method with the actual generated action code. */ - public final java_cup.runtime.Symbol CUP$parser$do_action(int CUP$parser$act_num, - java_cup.runtime.lr_parser CUP$parser$parser, java.util.Stack CUP$parser$stack, int CUP$parser$top) - throws java.lang.Exception { - /* Symbol object for return from actions */ - java_cup.runtime.Symbol CUP$parser$result; - - /* select the action based on the action number */ - switch (CUP$parser$act_num) { - /* . . . . . . . . . . . . . . . . . . . . */ - case 13: // expr ::= LPAREN expr RPAREN - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 1)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 1)).right; - Object a = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 1)).value; - RESULT = a; - CUP$parser$result = new java_cup.runtime.Symbol(4/* expr */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 12: // expr ::= MINUS expr - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - Object a = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - RESULT = (CL.Times(-1, (ClLinearExpression) a)); - CUP$parser$result = new java_cup.runtime.Symbol(4/* expr */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 1)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 11: // expr ::= expr DIVIDE expr - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).right; - Object a = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).value; - int bleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int bright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - Object b = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - RESULT = (CL.Divide((ClLinearExpression) a, (ClLinearExpression) b)); - CUP$parser$result = new java_cup.runtime.Symbol(4/* expr */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 10: // expr ::= expr TIMES expr - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).right; - Object a = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).value; - int bleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int bright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - Object b = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - RESULT = (CL.Times((ClLinearExpression) a, (ClLinearExpression) b)); - CUP$parser$result = new java_cup.runtime.Symbol(4/* expr */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 9: // expr ::= expr MINUS expr - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).right; - Object a = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).value; - int bleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int bright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - Object b = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - RESULT = (CL.Minus((ClLinearExpression) a, (ClLinearExpression) b)); - CUP$parser$result = new java_cup.runtime.Symbol(4/* expr */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 8: // expr ::= expr PLUS expr - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).right; - Object a = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).value; - int bleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int bright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - Object b = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - RESULT = (CL.Plus((ClLinearExpression) a, (ClLinearExpression) b)); - CUP$parser$result = new java_cup.runtime.Symbol(4/* expr */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 7: // expr ::= VARIABLE - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - String a = (String) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - - // look up variable first - if (parser.m_debug_parse) { - System.out.println("Grammar found variable: <" + a + ">"); - } - - if (parser.m_variable_name_object_hash == null) { - System.err.println(" Don't have hash."); - } - - if (parser.m_debug_parse) { - if (!parser.m_variable_name_object_hash.containsKey(a)) { - System.out.println(" Unrecognized variable parsed: <" + a + ">"); - } else { - System.out.println(" Found variable: <" + a + "> in hash."); - } - } - - ClVariable variable_object = (ClVariable) parser.m_variable_name_object_hash.get(a); - - if (variable_object == null) { - System.err.println(" Could not get hashed variable."); - } - - RESULT = (new ClLinearExpression(variable_object)); - - CUP$parser$result = new java_cup.runtime.Symbol(4/* expr */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 6: // expr ::= NUMBER - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - Double a = (Double) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - RESULT = (new ClLinearExpression(a.doubleValue())); - CUP$parser$result = new java_cup.runtime.Symbol(4/* expr */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 5: // inequality ::= expr LEQ expr - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).right; - Object a = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).value; - int bleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int bright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - Object b = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - RESULT = (new ClLinearInequality((ClLinearExpression) a, CL.LEQ, (ClLinearExpression) b)); - CUP$parser$result = new java_cup.runtime.Symbol(3/* inequality */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 4: // inequality ::= expr GEQ expr - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).right; - Object a = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).value; - int bleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int bright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - Object b = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - RESULT = (new ClLinearInequality((ClLinearExpression) a, CL.GEQ, (ClLinearExpression) b)); - CUP$parser$result = new java_cup.runtime.Symbol(3/* inequality */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 3: // equation ::= expr EQ expr - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).right; - Object a = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).value; - int bleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int bright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - Object b = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - RESULT = (new ClLinearEquation((ClLinearExpression) a, (ClLinearExpression) b)); - CUP$parser$result = new java_cup.runtime.Symbol(2/* equation */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 2)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 2: // constraint ::= inequality - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - Object a = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - RESULT = a; - CUP$parser$result = new java_cup.runtime.Symbol(1/* constraint */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 1: // $START ::= constraint EOF - { - Object RESULT = null; - int start_valleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 1)).left; - int start_valright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 1)).right; - Object start_val = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 1)).value; - RESULT = start_val; - CUP$parser$result = new java_cup.runtime.Symbol(0/* $START */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 1)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - /* ACCEPT */ - CUP$parser$parser.done_parsing(); - return CUP$parser$result; - - /* . . . . . . . . . . . . . . . . . . . . */ - case 0: // constraint ::= equation - { - Object RESULT = null; - int aleft = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left; - int aright = ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right; - Object a = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).value; - RESULT = a; - CUP$parser$result = new java_cup.runtime.Symbol(1/* constraint */, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).left, - ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top - 0)).right, RESULT); - } - return CUP$parser$result; - - /* . . . . . . */ - default: - throw new Exception("Invalid action number found in internal parse table"); - - } - } -} diff --git a/src/main/java/org/klomp/cassowary/parser/sym.java b/src/main/java/org/klomp/cassowary/parser/sym.java deleted file mode 100644 index 4f06f1d..0000000 --- a/src/main/java/org/klomp/cassowary/parser/sym.java +++ /dev/null @@ -1,25 +0,0 @@ -//---------------------------------------------------- -// The following code was generated by CUP v0.10k -// Fri May 05 17:17:37 PDT 2000 -//---------------------------------------------------- - -package org.klomp.cassowary.parser; - -/** CUP generated class containing symbol constants. */ -public class sym { - /* terminals */ - public static final int EQ = 4; - public static final int PLUS = 5; - public static final int MINUS = 6; - public static final int TIMES = 8; - public static final int NUMBER = 12; - public static final int GEQ = 2; - public static final int LPAREN = 10; - public static final int VARIABLE = 13; - public static final int EOF = 0; - public static final int error = 1; - public static final int UMINUS = 7; - public static final int RPAREN = 11; - public static final int LEQ = 3; - public static final int DIVIDE = 9; -} diff --git a/src/test/java/org/klomp/cassowary/ClParseTest.java b/src/test/java/org/klomp/cassowary/ClParseTest.java deleted file mode 100644 index 612afce..0000000 --- a/src/test/java/org/klomp/cassowary/ClParseTest.java +++ /dev/null @@ -1,35 +0,0 @@ -// $Id: ClParseTest.java,v 1.1 1999/12/16 01:23:07 gjb Exp $ -// ClParseTest.java -// Needs JavaCUP 10k or newer, from: -// http://www.cs.princeton.edu/~appel/modern/java/CUP/ -// And JLex from: -// http://www.cs.princeton.edu/~appel/modern/java/JLex/index.html - -package org.klomp.cassowary; - -import java.io.StringReader; -import java.util.Hashtable; - -import java_cup.runtime.Symbol; - -import org.klomp.cassowary.parser.Yylex; -import org.klomp.cassowary.parser.parser; - -public class ClParseTest { - public final static void main(String[] args) { - try { - System.out.println("Parsing: " + args[0]); - StringReader string_reader = new StringReader(args[0]); - Yylex yylex = new Yylex(string_reader); - Hashtable varmap = new Hashtable(); - yylex.setVariableNameObjectHash(varmap); - parser constraint_parser = new parser(yylex); - constraint_parser.setVariableNameObjectHash(varmap); - Symbol symbol = constraint_parser.parse(); - System.out.println("Parsed as: " + symbol.value.toString()); - } catch (Exception exception) { - System.out.println("Exception: " + exception.getMessage()); - exception.printStackTrace(); - } - } -}