Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 18 additions & 11 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ jobs:

runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]

Expand All @@ -62,9 +63,7 @@ jobs:
- name: clone javacc-8-java
uses: actions/checkout@v4
with:
repository: javacc/javacc-8-java.git
path: javacc-8-java
ref: release

- name: Set up JDK 11
uses: actions/setup-java@v4
Expand All @@ -73,13 +72,6 @@ jobs:
java-version: '11'
cache: 'maven'

- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2

# -B: batch mode; -e: produce execution error messages;
# -X: debug mode; -N: non-recursive (don't build submodules)

Expand All @@ -88,6 +80,21 @@ jobs:

- name: Run install on javacc-8-core
run: mvn install -B --show-version --file javacc-8-core/pom.xml

- name: Run install on javacc-8-java
- name: Run install on javacc-8-java (posix)
if: ${{ matrix.os != 'windows-latest' }}
run: USERPROFILE=$HOME mvn install -B --show-version --file javacc-8-java/pom.xml
- name: Run install on javacc-8-java (windows)
env:
MAVEN_OPTS: -Dfile.encoding=utf-8
if: ${{ matrix.os == 'windows-latest' }}
run: mvn install -B --show-version --file javacc-8-java/pom.xml

- name: Upload output files for review
uses: actions/upload-artifact@v4
if: always()
with:
name: outputs-${{ matrix.os }}
path: |
**/*.out
**/*.err
**/build.log
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public class CharCollector implements CharStream {

protected boolean trackLineColumn = true;
protected int tabSize = 1;
private char nextChar;

/** Puts a character into the buffer. Called by the GUI. */
public final synchronized void put(char c) {
Expand Down Expand Up @@ -207,4 +208,41 @@ public int getTabSize() {
public void setTabSize(int i) {
tabSize = i;
}

/**
* Returns next character.
*
* @return next character in the input
*/
public char getNextChar() {
return nextChar;
}

/**
* Checks next character.
*
* @return whether next character is available
*/
public boolean hasNextChar() {
try {
nextChar = readChar();
return true;
} catch (java.io.IOException ex) {
return false;
}
}

/**
* Checks next character and marks new token.
*
* @return whether next character is available
*/
public boolean hasNextToken() {
try {
nextChar = BeginToken();
return true;
} catch (java.io.IOException ex) {
return false;
}
}
}
36 changes: 18 additions & 18 deletions examples/Gwt/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ THE POSSIBILITY OF SUCH DAMAGE.
<configuration>
<mainClass>GwtSimpleParser</mainClass>
<arguments>
<argument>${project.basedir}/simple/out</argument>
<argument>${project.basedir}/simple/err</argument>
<argument>${project.basedir}/simple/compiler.out</argument>
<argument>${project.basedir}/simple/compiler.err</argument>
</arguments>
</configuration>
</execution>
Expand All @@ -102,8 +102,8 @@ THE POSSIBILITY OF SUCH DAMAGE.
<configuration>
<mainClass>GwtUnicodeParser</mainClass>
<arguments>
<argument>${project.basedir}/unicode/out</argument>
<argument>${project.basedir}/unicode/err</argument>
<argument>${project.basedir}/unicode/compiler.out</argument>
<argument>${project.basedir}/unicode/compiler.err</argument>
</arguments>
</configuration>
</execution>
Expand All @@ -122,18 +122,18 @@ THE POSSIBILITY OF SUCH DAMAGE.
</goals>
<configuration>
<target>
<available file="${project.basedir}/simple/out" property="isActualAvailable" />
<available file="${project.basedir}/simple/compiler.out" property="isActualAvailable" />
<fail unless="isActualAvailable"
message="${project.basedir}/simple/out does not exist!" />
<available file="${project.basedir}/simple/ref" property="isExpectedAvailable" />
message="${project.basedir}/simple/compiler.out does not exist!" />
<available file="${project.basedir}/simple/compiler.ref" property="isExpectedAvailable" />
<fail unless="isExpectedAvailable"
message="${project.basedir}/simple/ref does not exist!" />
message="${project.basedir}/simple/compiler.ref does not exist!" />
<condition property="files.match">
<filesmatch file1="${project.basedir}/simple/out"
file2="${project.basedir}/simple/ref" textfile="true" />
<filesmatch file1="${project.basedir}/simple/compiler.out"
file2="${project.basedir}/simple/compiler.ref" textfile="true" />
</condition>
<fail unless="files.match"
message="${project.basedir}/simple/out does not match ${project.basedir}/simple/ref!" />
message="${project.basedir}/simple/compiler.out does not match ${project.basedir}/simple/compiler.ref!" />
</target>
</configuration>
</execution>
Expand All @@ -145,18 +145,18 @@ THE POSSIBILITY OF SUCH DAMAGE.
</goals>
<configuration>
<target>
<available file="${project.basedir}/unicode/out" property="isActualAvailable" />
<available file="${project.basedir}/unicode/compiler.out" property="isActualAvailable" />
<fail unless="isActualAvailable"
message="${project.basedir}/unicode/out does not exist!" />
<available file="${project.basedir}/unicode/ref" property="isExpectedAvailable" />
message="${project.basedir}/unicode/compiler.out does not exist!" />
<available file="${project.basedir}/unicode/compiler.ref" property="isExpectedAvailable" />
<fail unless="isExpectedAvailable"
message="${project.basedir}/unicode/ref does not exist!" />
message="${project.basedir}/unicode/compiler.ref does not exist!" />
<condition property="files.match">
<filesmatch file1="${project.basedir}/unicode/out"
file2="${project.basedir}/unicode/ref" textfile="true" />
<filesmatch file1="${project.basedir}/unicode/compiler.out"
file2="${project.basedir}/unicode/compiler.ref" textfile="true" />
</condition>
<fail unless="files.match"
message="${project.basedir}/unicode/out does not match ${project.basedir}/unicode/ref!" />
message="${project.basedir}/unicode/compiler.out does not match ${project.basedir}/unicode/compiler.ref!" />
</target>
</configuration>
</execution>
Expand Down
File renamed without changes.
Empty file removed examples/Gwt/simple/err
Empty file.
1 change: 0 additions & 1 deletion examples/Gwt/simple/out

This file was deleted.

File renamed without changes.
Empty file removed examples/Gwt/unicode/err
Empty file.
1 change: 0 additions & 1 deletion examples/Gwt/unicode/out

This file was deleted.

File renamed without changes.
File renamed without changes.
Empty file removed examples/Simple/idlist/err
Empty file.
6 changes: 0 additions & 6 deletions examples/Simple/idlist/ref

This file was deleted.

100 changes: 50 additions & 50 deletions examples/Simple/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ THE POSSIBILITY OF SUCH DAMAGE.
<configuration>
<mainClass>simple1.Simple1</mainClass>
<arguments>
<argument>${project.basedir}/simple1/in</argument>
<argument>${project.basedir}/simple1/out</argument>
<argument>${project.basedir}/simple1/err</argument>
<argument>${project.basedir}/simple1/compiler.in</argument>
<argument>${project.basedir}/simple1/compiler.out</argument>
<argument>${project.basedir}/simple1/compiler.err</argument>
</arguments>
</configuration>
</execution>
Expand All @@ -76,9 +76,9 @@ THE POSSIBILITY OF SUCH DAMAGE.
<configuration>
<mainClass>simple2.Simple2</mainClass>
<arguments>
<argument>${project.basedir}/simple2/in</argument>
<argument>${project.basedir}/simple2/out</argument>
<argument>${project.basedir}/simple2/err</argument>
<argument>${project.basedir}/simple2/compiler.in</argument>
<argument>${project.basedir}/simple2/compiler.out</argument>
<argument>${project.basedir}/simple2/compiler.err</argument>
</arguments>
</configuration>
</execution>
Expand All @@ -91,9 +91,9 @@ THE POSSIBILITY OF SUCH DAMAGE.
<configuration>
<mainClass>simple3.Simple3</mainClass>
<arguments>
<argument>${project.basedir}/simple3/in</argument>
<argument>${project.basedir}/simple3/out</argument>
<argument>${project.basedir}/simple3/err</argument>
<argument>${project.basedir}/simple3/compiler.in</argument>
<argument>${project.basedir}/simple3/compiler.out</argument>
<argument>${project.basedir}/simple3/compiler.err</argument>
</arguments>
</configuration>
</execution>
Expand All @@ -106,9 +106,9 @@ THE POSSIBILITY OF SUCH DAMAGE.
<configuration>
<mainClass>xlator.NL_Xlator</mainClass>
<arguments>
<argument>${project.basedir}/xlator/in</argument>
<argument>${project.basedir}/xlator/out</argument>
<argument>${project.basedir}/xlator/err</argument>
<argument>${project.basedir}/xlator/compiler.in</argument>
<argument>${project.basedir}/xlator/compiler.out</argument>
<argument>${project.basedir}/xlator/compiler.err</argument>
</arguments>
</configuration>
</execution>
Expand All @@ -121,9 +121,9 @@ THE POSSIBILITY OF SUCH DAMAGE.
<configuration>
<mainClass>idlist.IdList</mainClass>
<arguments>
<argument>${project.basedir}/idlist/in</argument>
<argument>${project.basedir}/idlist/out</argument>
<argument>${project.basedir}/idlist/err</argument>
<argument>${project.basedir}/idlist/compiler.in</argument>
<argument>${project.basedir}/idlist/compiler.out</argument>
<argument>${project.basedir}/idlist/compiler.err</argument>
</arguments>
</configuration>
</execution>
Expand All @@ -142,18 +142,18 @@ THE POSSIBILITY OF SUCH DAMAGE.
</goals>
<configuration>
<target>
<available file="${project.basedir}/simple1/out" property="isActualAvailable" />
<available file="${project.basedir}/simple1/compiler.out" property="isActualAvailable" />
<fail unless="isActualAvailable"
message="${project.basedir}/simple1/out does not exist!" />
<available file="${project.basedir}/simple1/ref" property="isExpectedAvailable" />
message="${project.basedir}/simple1/compiler.out does not exist!" />
<available file="${project.basedir}/simple1/compiler.ref" property="isExpectedAvailable" />
<fail unless="isExpectedAvailable"
message="${project.basedir}/simple1/ref does not exist!" />
message="${project.basedir}/simple1/compiler.ref does not exist!" />
<condition property="files.match">
<filesmatch file1="${project.basedir}/simple1/out"
file2="${project.basedir}/simple1/ref" textfile="true" />
<filesmatch file1="${project.basedir}/simple1/compiler.out"
file2="${project.basedir}/simple1/compiler.ref" textfile="true" />
</condition>
<fail unless="files.match"
message="${project.basedir}/simple1/out does not match ${project.basedir}/simple1/ref!" />
message="${project.basedir}/simple1/compiler.out does not match ${project.basedir}/simple1/compiler.ref!" />
</target>
</configuration>
</execution>
Expand All @@ -166,15 +166,15 @@ THE POSSIBILITY OF SUCH DAMAGE.
</goals>
<configuration>
<target>
<available file="${project.basedir}/simple2/out" property="isActualAvailable" />
<fail unless="isActualAvailable" message="${project.basedir}/simple2/out does not exist!" />
<available file="${project.basedir}/simple2/ref" property="isExpectedAvailable" />
<fail unless="isExpectedAvailable" message="${project.basedir}/simple2/ref does not exist!" />
<available file="${project.basedir}/simple2/compiler.out" property="isActualAvailable" />
<fail unless="isActualAvailable" message="${project.basedir}/simple2/compiler.out does not exist!" />
<available file="${project.basedir}/simple2/compiler.ref" property="isExpectedAvailable" />
<fail unless="isExpectedAvailable" message="${project.basedir}/simple2/compiler.ref does not exist!" />
<condition property="files.match">
<filesmatch file1="${project.basedir}/simple2/out" file2="${project.basedir}/simple2/ref" />
<filesmatch file1="${project.basedir}/simple2/compiler.out" file2="${project.basedir}/simple2/compiler.ref" />
</condition>
<fail unless="files.match" message="${project.basedir}/simple2/out does not match
${project.basedir}/simple2/ref!" />
<fail unless="files.match" message="${project.basedir}/simple2/compiler.out does not match
${project.basedir}/simple2/compiler.ref!" />
</target>
</configuration>
</execution>
Expand All @@ -187,18 +187,18 @@ THE POSSIBILITY OF SUCH DAMAGE.
</goals>
<configuration>
<target>
<available file="${project.basedir}/simple3/out" property="isActualAvailable" />
<available file="${project.basedir}/simple3/compiler.out" property="isActualAvailable" />
<fail unless="isActualAvailable"
message="${project.basedir}/simple3/out does not exist!" />
<available file="${project.basedir}/simple3/ref" property="isExpectedAvailable" />
message="${project.basedir}/simple3/compiler.out does not exist!" />
<available file="${project.basedir}/simple3/compiler.ref" property="isExpectedAvailable" />
<fail unless="isExpectedAvailable"
message="${project.basedir}/simple3/ref does not exist!" />
message="${project.basedir}/simple3/compiler.ref does not exist!" />
<condition property="files.match">
<filesmatch file1="${project.basedir}/simple3/out"
file2="${project.basedir}/simple3/ref" textfile="true" />
<filesmatch file1="${project.basedir}/simple3/compiler.out"
file2="${project.basedir}/simple3/compiler.ref" textfile="true" />
</condition>
<fail unless="files.match"
message="${project.basedir}/simple3/out does not match ${project.basedir}/simple3/ref!" />
message="${project.basedir}/simple3/compiler.out does not match ${project.basedir}/simple3/compiler.ref!" />
</target>
</configuration>
</execution>
Expand All @@ -210,18 +210,18 @@ THE POSSIBILITY OF SUCH DAMAGE.
</goals>
<configuration>
<target>
<available file="${project.basedir}/xlator/out" property="isActualAvailable" />
<available file="${project.basedir}/xlator/compiler.out" property="isActualAvailable" />
<fail unless="isActualAvailable"
message="${project.basedir}/xlator/out does not exist!" />
<available file="${project.basedir}/xlator/ref" property="isExpectedAvailable" />
message="${project.basedir}/xlator/compiler.out does not exist!" />
<available file="${project.basedir}/xlator/compiler.ref" property="isExpectedAvailable" />
<fail unless="isExpectedAvailable"
message="${project.basedir}/xlator/ref does not exist!" />
message="${project.basedir}/xlator/compiler.ref does not exist!" />
<condition property="files.match">
<filesmatch file1="${project.basedir}/xlator/out"
file2="${project.basedir}/xlator/ref" textfile="true" />
<filesmatch file1="${project.basedir}/xlator/compiler.out"
file2="${project.basedir}/xlator/compiler.ref" textfile="true" />
</condition>
<fail unless="files.match"
message="${project.basedir}/xlator/out does not match ${project.basedir}/xlator/ref!" />
message="${project.basedir}/xlator/compiler.out does not match ${project.basedir}/xlator/compiler.ref!" />
</target>
</configuration>
</execution>
Expand All @@ -233,18 +233,18 @@ THE POSSIBILITY OF SUCH DAMAGE.
</goals>
<configuration>
<target>
<available file="${project.basedir}/idlist/out" property="isActualAvailable" />
<available file="${project.basedir}/idlist/compiler.out" property="isActualAvailable" />
<fail unless="isActualAvailable"
message="${project.basedir}/idlist/out does not exist!" />
<available file="${project.basedir}/idlist/ref" property="isExpectedAvailable" />
message="${project.basedir}/idlist/compiler.out does not exist!" />
<available file="${project.basedir}/idlist/compiler.ref" property="isExpectedAvailable" />
<fail unless="isExpectedAvailable"
message="${project.basedir}/idlist/ref does not exist!" />
message="${project.basedir}/idlist/compiler.ref does not exist!" />
<condition property="files.match">
<filesmatch file1="${project.basedir}/idlist/out"
file2="${project.basedir}/idlist/ref" textfile="true" />
<filesmatch file1="${project.basedir}/idlist/compiler.out"
file2="${project.basedir}/idlist/compiler.ref" textfile="true" />
</condition>
<fail unless="files.match"
message="${project.basedir}/idlist/out does not match ${project.basedir}/idlist/ref!" />
message="${project.basedir}/idlist/compiler.out does not match ${project.basedir}/idlist/compiler.ref!" />
</target>
</configuration>
</execution>
Expand Down
File renamed without changes.
File renamed without changes.
Empty file removed examples/Simple/simple1/err
Empty file.
1 change: 0 additions & 1 deletion examples/Simple/simple1/ref

This file was deleted.

File renamed without changes.
File renamed without changes.
Empty file removed examples/Simple/simple2/err
Empty file.
12 changes: 0 additions & 12 deletions examples/Simple/simple2/out

This file was deleted.

File renamed without changes.
File renamed without changes.
Empty file removed examples/Simple/simple3/err
Empty file.
Loading