Skip to content

Commit

Permalink
Fix for #4379 -- new grammar, for javacc. (#4381)
Browse files Browse the repository at this point in the history
* Remove dotnet install.

Assume dotnet exists and is on path in all VMs. This is because setup-dotnet does not work.

* Fix for #4379 -- javacc.

* Fix Go target build.

* Remove PHP target. I just does not work (in this case, memory overflow).

* Create readme.md

* Update pom.xml's to support old-style testing.
  • Loading branch information
kaby76 authored Jan 17, 2025
1 parent 5bb56f3 commit eb678bb
Show file tree
Hide file tree
Showing 33 changed files with 12,070 additions and 2 deletions.
596 changes: 596 additions & 0 deletions javacc/Javacc.g4

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions javacc/desc.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" ?>
<desc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../_scripts/desc.xsd">
<targets>Antlr4ng;CSharp;Cpp;Dart;Go;Java;JavaScript;Python3;TypeScript</targets>
</desc>
140 changes: 140 additions & 0 deletions javacc/examples/CalcInput.jj
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
/* Copyright (c) 2006, Sun Microsystems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the Sun Microsystems, Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/


options {
USER_TOKEN_MANAGER = true;
}

PARSER_BEGIN(CalcInputParser)

public class CalcInputParser {
}

PARSER_END(CalcInputParser)

void Input() :
{
double larg = 0.0;
double rarg;
}
{
(
[
larg=Number()
{
CalcGUI.print(larg);
}
]
(
<ADD>
rarg=Number()
{
larg = larg + rarg;
CalcGUI.print(larg);
}
|
<SUB>
rarg=Number()
{
larg = larg - rarg;
CalcGUI.print(larg);
}
|
<MUL>
rarg=Number()
{
larg = larg * rarg;
CalcGUI.print(larg);
}
|
<DIV>
rarg=Number()
{
larg = (rarg==0) ? Float.POSITIVE_INFINITY : (larg / rarg);
CalcGUI.print(larg);
}
)*
<EQ: "=" >
)*
}

double Number() :
{
Token t;
String image = "";
double value = 0.0;
double decimalPlace = 1.0;
}
{
(
t=<DIGIT>
{
image += t.image;
value = value*10 + Integer.parseInt(t.image);
CalcGUI.print(image);
}
)+
[
<DOT>
{
image += ".";
CalcGUI.print(image);
}
(
t=<DIGIT>
{
image += t.image;
decimalPlace *= 0.1;
value = value + Integer.parseInt(t.image)*decimalPlace;
CalcGUI.print(image);
}
)+
]
{
return value;
}
|
<DOT>
{
image = "0.";
CalcGUI.print(image);
}
(
t=<DIGIT>
{
image += t.image;
decimalPlace *= 0.1;
value = value + Integer.parseInt(t.image)*decimalPlace;
CalcGUI.print(image);
}
)+
{
return value;
}
}
186 changes: 186 additions & 0 deletions javacc/examples/Digest.jj
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
/* Copyright (c) 2006, Sun Microsystems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the Sun Microsystems, Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/


PARSER_BEGIN(Digest)

import java.io.*;

public class Digest {

static int count = 0;

static String buffer = "";

public static void main(String args[]) throws ParseException {
Digest parser = new Digest(System.in);
System.out.println("DIGEST OF RECENT MESSAGES FROM THE JAVACC MAILING LIST");
System.out.println("----------------------------------------------------------------------");
System.out.println("");
System.out.println("MESSAGE SUMMARY:");
System.out.println("");
parser.MailFile();
if (count == 0) {
System.out.println("There have been no messages since the last digest posting.");
System.out.println("");
System.out.println("----------------------------------------------------------------------");
} else {
System.out.println("");
System.out.println("----------------------------------------------------------------------");
System.out.println("");
System.out.println(buffer);
}
}

}

PARSER_END(Digest)


// PARSER SPECIFICATIONS BEGIN HERE

void MailFile() :
{
}
{
(
{
count++;
}
MailMessage()
)*
<EOF>
}

void MailMessage() :
{
Token subj=null, from=null, date=null, body;
}
{
( subj=<SUBJECT> | from=<FROM> | date=<DATE> )+
{
System.out.println(count + ". " + ((subj==null) ? "no subject" : subj.image));
buffer += "\n";
buffer += "Message " + count + ":\n";
buffer += "\n";
buffer += "Subject: " + ((subj==null) ? "no subject" : subj.image) + "\n";
buffer += "From: " + ((from==null) ? "" : from.image) + "\n";
buffer += "Date: " + ((date==null) ? "" : date.image) + "\n";
buffer += "\n";
}
( body=<BODY>
{
buffer += body.image;
}
)*
<END>
{
buffer += "\n";
buffer += "----------------------------------------------------------------------\n";
}
}


// LEXICAL SPECIFICATIONS BEGIN HERE

TOKEN:
{
<#EOL: "\n" | "\r" | "\r\n">
|
<#TWOEOLS: (("\n"|"\r\n") <EOL>) | ("\r\r" [ "\n" ])>
|
<#NOT_EOL: ~["\n","\r"]>
}

<DEFAULT>
SKIP:
{
< <EOL> "*** EOOH ***" <EOL> > : MAILHEADER
|
<~[]>
}

<MAILHEADER>
SKIP:
{
<_TWOEOLS: <TWOEOLS>> : MAILBODY
// We cannot have just a reference to a regular expression in a
// lexical specification - i.e., we cannot simply have <TWOEOLS>.
|
"Subject: " : MAILSUBJECT
|
"From: " : MAILFROM
|
"Date: " : MAILDATE
|
<~[]>
}

<MAILSUBJECT>
TOKEN:
{
<SUBJECT: ( <NOT_EOL> )+>
}

<MAILSUBJECT>
SKIP:
{
<_EOL1: <EOL>> : MAILHEADER
}

<MAILFROM>
TOKEN:
{
<FROM: ( <NOT_EOL> )+>
}

<MAILFROM>
SKIP:
{
<_EOL2: <EOL>> : MAILHEADER
}

<MAILDATE>
TOKEN:
{
<DATE: ( <NOT_EOL> )+>
}

<MAILDATE>
SKIP:
{
<_EOL3: <EOL>> : MAILHEADER
}

<MAILBODY>
TOKEN:
{
<BODY: (~["\n","\r","\u001f"])* <EOL>>
|
<END: "\u001f"> : DEFAULT
}
61 changes: 61 additions & 0 deletions javacc/examples/Example1.jj
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/* Copyright (c) 2006, Sun Microsystems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the Sun Microsystems, Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/


PARSER_BEGIN(Example)

public class Example {

public static void main(String args[]) throws ParseException {
Example parser = new Example(System.in);
parser.Input();
}

}

PARSER_END(Example)

SKIP :
{
" "
| "\t"
| "\n"
| "\r"
}

void Input() :
{}
{
"a" BC() "c"
}

void BC() :
{}
{
"b" [ "c" ]
}
Loading

0 comments on commit eb678bb

Please sign in to comment.