Merge branch 'master-upstream'
This commit is contained in:
commit
ceb4ca7ce7
|
@ -8,7 +8,7 @@
|
|||
<parent>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-master</artifactId>
|
||||
<version>4.7.1-SNAPSHOT</version>
|
||||
<version>4.7.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>antlr4-maven-plugin</artifactId>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
|
|
@ -6,7 +6,7 @@ Hi and welcome to the version 4 release of ANTLR! It's named after the fearless
|
|||
|
||||
ANTLR is really two things: a tool that translates your grammar to a parser/lexer in Java (or other target language) and the runtime needed by the generated parsers/lexers. Even if you are using the ANTLR Intellij plug-in or ANTLRWorks to run the ANTLR tool, the generated code will still need the runtime library.
|
||||
|
||||
The first thing you should do is probably download and install a development tool plug-in. Even if you only use such tools for editing, they are great. Then, follow the instructions below to get the runtime environment available to your system to run generated parsers/lexers. In what follows, I talk about antlr-4.7-complete.jar, which has the tool and the runtime and any other support libraries (e.g., ANTLR v4 is written in v3).
|
||||
The first thing you should do is probably download and install a development tool plug-in. Even if you only use such tools for editing, they are great. Then, follow the instructions below to get the runtime environment available to your system to run generated parsers/lexers. In what follows, I talk about antlr-4.7.1-complete.jar, which has the tool and the runtime and any other support libraries (e.g., ANTLR v4 is written in v3).
|
||||
|
||||
If you are going to integrate ANTLR into your existing build system using mvn, ant, or want to get ANTLR into your IDE such as eclipse or intellij, see Integrating ANTLR into Development Systems.
|
||||
|
||||
|
@ -16,21 +16,21 @@ If you are going to integrate ANTLR into your existing build system using mvn, a
|
|||
1. Download
|
||||
```
|
||||
$ cd /usr/local/lib
|
||||
$ curl -O http://www.antlr.org/download/antlr-4.7-complete.jar
|
||||
$ curl -O http://www.antlr.org/download/antlr-4.7.1-complete.jar
|
||||
```
|
||||
Or just download in browser from website:
|
||||
[http://www.antlr.org/download.html](http://www.antlr.org/download.html)
|
||||
and put it somewhere rational like `/usr/local/lib`.
|
||||
|
||||
2. Add `antlr-4.7-complete.jar` to your `CLASSPATH`:
|
||||
2. Add `antlr-4.7.1-complete.jar` to your `CLASSPATH`:
|
||||
```
|
||||
$ export CLASSPATH=".:/usr/local/lib/antlr-4.7-complete.jar:$CLASSPATH"
|
||||
$ export CLASSPATH=".:/usr/local/lib/antlr-4.7.1-complete.jar:$CLASSPATH"
|
||||
```
|
||||
It's also a good idea to put this in your `.bash_profile` or whatever your startup script is.
|
||||
|
||||
3. Create aliases for the ANTLR Tool, and `TestRig`.
|
||||
```
|
||||
$ alias antlr4='java -Xmx500M -cp "/usr/local/lib/antlr-4.7-complete.jar:$CLASSPATH" org.antlr.v4.Tool'
|
||||
$ alias antlr4='java -Xmx500M -cp "/usr/local/lib/antlr-4.7.1-complete.jar:$CLASSPATH" org.antlr.v4.Tool'
|
||||
$ alias grun='java org.antlr.v4.gui.TestRig'
|
||||
```
|
||||
|
||||
|
@ -45,7 +45,7 @@ Save to your directory for 3rd party Java libraries, say `C:\Javalib`
|
|||
* Permanently: Using System Properties dialog > Environment variables > Create or append to `CLASSPATH` variable
|
||||
* Temporarily, at command line:
|
||||
```
|
||||
SET CLASSPATH=.;C:\Javalib\antlr-4.7-complete.jar;%CLASSPATH%
|
||||
SET CLASSPATH=.;C:\Javalib\antlr-4.7.1-complete.jar;%CLASSPATH%
|
||||
```
|
||||
3. Create short convenient commands for the ANTLR Tool, and TestRig, using batch files or doskey commands:
|
||||
* Batch files (in directory in system PATH) antlr4.bat and grun.bat
|
||||
|
@ -67,7 +67,7 @@ Either launch org.antlr.v4.Tool directly:
|
|||
|
||||
```
|
||||
$ java org.antlr.v4.Tool
|
||||
ANTLR Parser Generator Version 4.7
|
||||
ANTLR Parser Generator Version 4.7.1
|
||||
-o ___ specify output directory where all output is generated
|
||||
-lib ___ specify location of .tokens files
|
||||
...
|
||||
|
@ -76,8 +76,8 @@ ANTLR Parser Generator Version 4.7
|
|||
or use -jar option on java:
|
||||
|
||||
```
|
||||
$ java -jar /usr/local/lib/antlr-4.7-complete.jar
|
||||
ANTLR Parser Generator Version 4.7
|
||||
$ java -jar /usr/local/lib/antlr-4.7.1-complete.jar
|
||||
ANTLR Parser Generator Version 4.7.1
|
||||
-o ___ specify output directory where all output is generated
|
||||
-lib ___ specify location of .tokens files
|
||||
...
|
||||
|
|
|
@ -159,6 +159,28 @@ With JDK 1.7 (not 6 or 8), do this:
|
|||
mvn release:prepare -Darguments="-DskipTests"
|
||||
```
|
||||
|
||||
Hm...per https://github.com/keybase/keybase-issues/issues/1712 we need this to make gpg work:
|
||||
|
||||
```bash
|
||||
export GPG_TTY=$(tty)
|
||||
```
|
||||
|
||||
Side note to set jdk 1.7 on os x:
|
||||
|
||||
```bash
|
||||
alias java='/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/bin/java'
|
||||
alias javac='/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/bin/javac'
|
||||
alias javadoc='/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/bin/javadoc'
|
||||
alias jar='/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/bin/jar'
|
||||
```
|
||||
|
||||
You should see 0x33 in generated .class files after 0xCAFEBABE; see [Java SE 7 = 51 (0x33 hex)](https://en.wikipedia.org/wiki/Java_class_file):
|
||||
|
||||
```bash
|
||||
beast:/tmp/org/antlr/v4 $ od -h Tool.class |head -1
|
||||
0000000 feca beba 0000 3300 fa04 0207 0ab8 0100
|
||||
```
|
||||
|
||||
It will start out by asking you the version number:
|
||||
|
||||
```
|
||||
|
@ -244,7 +266,9 @@ popd
|
|||
|
||||
### CSharp
|
||||
|
||||
*Publishing to Nuget from Windows*
|
||||
Now we have [appveyor create artifact](https://ci.appveyor.com/project/parrt/antlr4/build/artifacts). Go to [nuget](https://www.nuget.org/packages/manage/upload) to upload the `.nupkg`.
|
||||
|
||||
### Publishing to Nuget from Windows
|
||||
|
||||
**Install the pre-requisites**
|
||||
|
||||
|
@ -310,13 +334,12 @@ index-servers =
|
|||
pypitest
|
||||
|
||||
[pypi]
|
||||
repository: https://pypi.python.org/pypi
|
||||
username: parrt
|
||||
password: XXX
|
||||
password: xxx
|
||||
|
||||
[pypitest]
|
||||
repository: https://testpypi.python.org/pypi
|
||||
username: parrt
|
||||
password: xxx
|
||||
```
|
||||
|
||||
Then run the usual python set up stuff:
|
||||
|
@ -324,8 +347,7 @@ Then run the usual python set up stuff:
|
|||
```bash
|
||||
cd ~/antlr/code/antlr4/runtime/Python2
|
||||
# assume you have ~/.pypirc set up
|
||||
python setup.py register -r pypi
|
||||
python setup.py sdist bdist_wininst upload -r pypi
|
||||
python2 setup.py sdist upload
|
||||
```
|
||||
|
||||
and do again for Python 3 target
|
||||
|
@ -333,8 +355,7 @@ and do again for Python 3 target
|
|||
```bash
|
||||
cd ~/antlr/code/antlr4/runtime/Python3
|
||||
# assume you have ~/.pypirc set up
|
||||
python setup.py register -r pypi
|
||||
python setup.py sdist bdist_wininst upload -r pypi
|
||||
python3 setup.py sdist upload
|
||||
```
|
||||
|
||||
There are links to the artifacts in [download.html](http://www.antlr.org/download.html) already.
|
||||
|
@ -368,12 +389,12 @@ cd runtime/Cpp
|
|||
cp antlr4-cpp-runtime-source.zip ~/antlr/sites/website-antlr4/download/antlr4-cpp-runtime-4.7-source.zip
|
||||
```
|
||||
|
||||
On a Windows machine the build scripts checks if VS 2013 and/or VS 2015 are installed and builds binaries for each, if found. This script requires 7z to be installed (http://7-zip.org).
|
||||
On a Windows machine the build scripts checks if VS 2013 and/or VS 2015 are installed and builds binaries for each, if found. This script requires 7z to be installed (http://7-zip.org then do `set PATH=%PATH%;C:\Program Files\7-Zip\` from DOS not powershell).
|
||||
|
||||
```bash
|
||||
cd runtime/Cpp
|
||||
deploy-windows.cmd
|
||||
cp antlr4-cpp-runtime-vs2015.zip ~/antlr/sites/website-antlr4/download/antlr4-cpp-runtime-4.7-vs2015.zip
|
||||
cp runtime\bin\vs-2015\x64\Release DLL\antlr4-cpp-runtime-vs2015.zip ~/antlr/sites/website-antlr4/download/antlr4-cpp-runtime-4.7-vs2015.zip
|
||||
```
|
||||
|
||||
Move target to website (**_rename to a specific ANTLR version first if needed_**):
|
||||
|
|
|
@ -4,7 +4,7 @@ If you invoke the ANTLR tool without command line arguments, you’ll get a help
|
|||
|
||||
```bash
|
||||
$ antlr4
|
||||
ANTLR Parser Generator Version 4.5
|
||||
ANTLR Parser Generator Version 4.7.1
|
||||
-o ___ specify output directory where all output is generated
|
||||
-lib ___ specify location of grammars, tokens files
|
||||
-atn generate rule augmented transition network diagrams
|
||||
|
@ -23,6 +23,7 @@ ANTLR Parser Generator Version 4.5
|
|||
-XdbgSTWait wait for STViz to close before continuing
|
||||
-Xforce-atn use the ATN simulator for all predictions
|
||||
-Xlog dump lots of logging info to antlr-timestamp.log
|
||||
-Xexact-output-dir all output goes into -o dir regardless of paths/package
|
||||
```
|
||||
|
||||
Here are more details on the options:
|
||||
|
@ -159,3 +160,175 @@ This option creates a log file containing lots of information messages from ANTL
|
|||
$ antlr4 -Xlog T.g4
|
||||
wrote ./antlr-2012-09-06-17.56.19.log
|
||||
```
|
||||
|
||||
## `-Xexact-output-dir`
|
||||
|
||||
(*See the [discussion](https://github.com/antlr/antlr4/pull/2065)*).
|
||||
|
||||
All output goes into `-o` dir regardless of paths/package.
|
||||
|
||||
* Output `-o` directory specifier is the exact directory containing the output. Previously it would include the relative path specified on the grammar itself for the purposes of packages.
|
||||
|
||||
**new**: `-o /tmp subdir/T.g4` => `/tmp/subdir/T.java`
|
||||
**old**: `-o /tmp subdir/T.g4` => `/tmp/T.java`
|
||||
|
||||
* Previously we looked for the tokens vocab file in the `-lib` dir or in the output dir. **New**: also look in the directory containing the grammar, particularly if it it is specified with a path.
|
||||
|
||||
### Example for the output directory (4.7)
|
||||
|
||||
Here is the existing 4.7 functionality.
|
||||
|
||||
(For these examples, assume a4.7 and a4.7.1 are aliases to the right version of ANTLR's `org.antlr.v4.Tool`.)
|
||||
|
||||
```bash
|
||||
$ cd /tmp/parrt
|
||||
$ tree
|
||||
.
|
||||
├── B.g4
|
||||
└── src
|
||||
└── pkg
|
||||
└── A.g4
|
||||
$ a4.7 -o /tmp/build src/pkg/A.g4
|
||||
$ tree /tmp/build
|
||||
/tmp/build/
|
||||
└── src
|
||||
└── pkg
|
||||
├── A.tokens
|
||||
├── ABaseListener.java
|
||||
├── ALexer.java
|
||||
├── ALexer.tokens
|
||||
├── AListener.java
|
||||
└── AParser.java
|
||||
```
|
||||
|
||||
Now, let's build a grammar that sits in the current directory:
|
||||
|
||||
```bash
|
||||
$ a4.7 -o /tmp/build B.g4
|
||||
$ tree /tmp/build
|
||||
/tmp/build
|
||||
├── B.tokens
|
||||
├── BBaseListener.java
|
||||
├── BLexer.java
|
||||
├── BLexer.tokens
|
||||
├── BListener.java
|
||||
├── BParser.java
|
||||
└── src
|
||||
└── pkg
|
||||
├── A.tokens
|
||||
├── ABaseListener.java
|
||||
├── ALexer.java
|
||||
├── ALexer.tokens
|
||||
├── AListener.java
|
||||
└── AParser.java
|
||||
```
|
||||
|
||||
Finally, if we don't specify the output directory, it paid attention to the relative path specified on the input grammar:
|
||||
|
||||
```bash
|
||||
$ a4.7 src/pkg/A.g4
|
||||
$ tree
|
||||
.
|
||||
├── B.g4
|
||||
└── src
|
||||
└── pkg
|
||||
├── A.g4
|
||||
├── A.tokens
|
||||
├── ABaseListener.java
|
||||
├── ALexer.java
|
||||
├── ALexer.tokens
|
||||
├── AListener.java
|
||||
└── AParser.java
|
||||
```
|
||||
|
||||
### Example for the output directory (4.7.1 with -Xexact-output-dir)
|
||||
|
||||
Now, the output directory is the exact directory where output is generated regardless of relative paths on the grammar
|
||||
|
||||
```bash
|
||||
$ cd /tmp/parrt
|
||||
$ a4.7.1 -Xexact-output-dir -o /tmp/build src/pkg/A.g4
|
||||
$ tree /tmp/build
|
||||
/tmp/build
|
||||
├── A.tokens
|
||||
├── ABaseListener.java
|
||||
├── ALexer.java
|
||||
├── ALexer.tokens
|
||||
├── AListener.java
|
||||
└── AParser.java
|
||||
```
|
||||
|
||||
If you use the package option, it still does not change where the output is generated if you use `-o`
|
||||
|
||||
```bash
|
||||
$ a4.7.1 -Xexact-output-dir -package pkg -o /tmp/build src/pkg/A.g4
|
||||
$ tree /tmp/build
|
||||
/tmp/build
|
||||
├── A.tokens
|
||||
├── ABaseListener.java
|
||||
├── ALexer.java
|
||||
├── ALexer.tokens
|
||||
├── AListener.java
|
||||
└── AParser.java
|
||||
```
|
||||
|
||||
4.7.1 does however add the package specification into the generated files:
|
||||
|
||||
```bash
|
||||
$ grep package /tmp/build/A*.java
|
||||
/tmp/build/ABaseListener.java:package pkg;
|
||||
/tmp/build/ALexer.java:package pkg;
|
||||
/tmp/build/AListener.java:package pkg;
|
||||
/tmp/build/AParser.java:package pkg;
|
||||
```
|
||||
|
||||
Compare this to 4.7:
|
||||
|
||||
```bash
|
||||
$ a4.7 -package pkg -o /tmp/build src/pkg/A.g4
|
||||
beast:/tmp/parrt $ tree /tmp/build
|
||||
/tmp/build
|
||||
└── src
|
||||
└── pkg
|
||||
├── A.tokens
|
||||
├── ABaseListener.java
|
||||
├── ALexer.java
|
||||
├── ALexer.tokens
|
||||
├── AListener.java
|
||||
└── AParser.java
|
||||
```
|
||||
|
||||
### Example of where it looks for tokens vocab
|
||||
|
||||
In 4.7, we got an error for an obvious case that should work:
|
||||
|
||||
```bash
|
||||
$ cd /tmp/parrt
|
||||
$ tree
|
||||
.
|
||||
└── src
|
||||
└── pkg
|
||||
├── L.g4
|
||||
└── P.g4
|
||||
$ a4.7 -o /tmp/build src/pkg/*.g4
|
||||
error(160): P.g4:2:21: cannot find tokens file /tmp/build/L.tokens
|
||||
warning(125): P.g4:3:4: implicit definition of token A in parser
|
||||
```
|
||||
|
||||
In 4.7.1 it looks in the directory containing the grammars as well:
|
||||
|
||||
```bash
|
||||
$ a4.7.1 -o /tmp/build src/pkg/*.g4
|
||||
$ tree /tmp/build
|
||||
/tmp/build
|
||||
├── L.java
|
||||
├── L.tokens
|
||||
├── P.java
|
||||
├── P.tokens
|
||||
├── PBaseListener.java
|
||||
├── PListener.java
|
||||
└── src
|
||||
└── pkg
|
||||
├── L.java
|
||||
└── L.tokens
|
||||
```
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -13,7 +13,7 @@
|
|||
</parent>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-master</artifactId>
|
||||
<version>4.7.1-SNAPSHOT</version>
|
||||
<version>4.7.2-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>ANTLR 4</name>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<parent>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-master</artifactId>
|
||||
<version>4.7.1-SNAPSHOT</version>
|
||||
<version>4.7.2-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<artifactId>antlr4-runtime-test-annotations</artifactId>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<parent>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-master</artifactId>
|
||||
<version>4.7.1-SNAPSHOT</version>
|
||||
<version>4.7.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>antlr4-runtime-testsuite</artifactId>
|
||||
<name>ANTLR 4 Runtime Tests (2nd generation)</name>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<parent>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-master</artifactId>
|
||||
<version>4.7.1-SNAPSHOT</version>
|
||||
<version>4.7.2-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<artifactId>antlr4-runtime-test-annotation-processors</artifactId>
|
||||
|
|
|
@ -43,7 +43,7 @@ See the docs and the book to learn about writing lexer and parser grammars.
|
|||
### Step 4: Generate the C# code
|
||||
|
||||
This can be done either from the cmd line, or by adding a custom pre-build command in your project.
|
||||
At minimal, the cmd line should look as follows: ``java -jar antlr4-4.7.jar -Dlanguage=CSharp grammar.g4``
|
||||
At minimal, the cmd line should look as follows: ``java -jar antlr4-4.7.1.jar -Dlanguage=CSharp grammar.g4``
|
||||
This will generate the files, which you can then integrate in your project.
|
||||
This is just a quick start. The tool has many useful options to control generation, please refer to its documentation.
|
||||
|
||||
|
|
|
@ -42,8 +42,8 @@ using System.Runtime.InteropServices;
|
|||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("4.7")]
|
||||
[assembly: AssemblyVersion("4.7.1")]
|
||||
#if !COMPACT
|
||||
[assembly: AssemblyFileVersion("4.7")]
|
||||
[assembly: AssemblyInformationalVersion("4.7")]
|
||||
[assembly: AssemblyFileVersion("4.7.1")]
|
||||
[assembly: AssemblyInformationalVersion("4.7.1")]
|
||||
#endif
|
||||
|
|
|
@ -1 +1 @@
|
|||
4.7
|
||||
4.7.1
|
||||
|
|
|
@ -66,7 +66,7 @@ set(ANTLR4CPP_EXTERNAL_ROOT ${CMAKE_BINARY_DIR}/externals/antlr4cpp)
|
|||
# external repository
|
||||
# GIT_REPOSITORY https://github.com/antlr/antlr4.git
|
||||
set(ANTLR4CPP_EXTERNAL_REPO "https://github.com/antlr/antlr4.git")
|
||||
set(ANTLR4CPP_EXTERNAL_TAG "4.7")
|
||||
set(ANTLR4CPP_EXTERNAL_TAG "4.7.1")
|
||||
|
||||
if(NOT EXISTS "${ANTLR4CPP_JAR_LOCATION}")
|
||||
message(FATAL_ERROR "Unable to find antlr tool. ANTLR4CPP_JAR_LOCATION:${ANTLR4CPP_JAR_LOCATION}")
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
:: Download the ANLTR jar and place it in the same folder as this script (or adjust the LOCATION var accordingly).
|
||||
|
||||
set LOCATION=antlr-4.7-complete.jar
|
||||
set LOCATION=antlr-4.7.1-complete.jar
|
||||
java -jar %LOCATION% -Dlanguage=Cpp -listener -visitor -o generated/ -package antlrcpptest TLexer.g4 TParser.g4
|
||||
::java -jar %LOCATION% -Dlanguage=Cpp -listener -visitor -o generated/ -package antlrcpptest -XdbgST TLexer.g4 TParser.g4
|
||||
::java -jar %LOCATION% -Dlanguage=Java -listener -visitor -o generated/ -package antlrcpptest TLexer.g4 TParser.g4
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
using namespace antlr4;
|
||||
|
||||
const std::string RuntimeMetaData::VERSION = "4.7";
|
||||
const std::string RuntimeMetaData::VERSION = "4.7.1";
|
||||
|
||||
std::string RuntimeMetaData::getRuntimeVersion() {
|
||||
return VERSION;
|
||||
|
|
|
@ -49,7 +49,7 @@ var tokenTypeMapCache = make(map[string]int)
|
|||
var ruleIndexMapCache = make(map[string]int)
|
||||
|
||||
func (b *BaseRecognizer) checkVersion(toolVersion string) {
|
||||
runtimeVersion := "4.7"
|
||||
runtimeVersion := "4.7.1"
|
||||
if runtimeVersion != toolVersion {
|
||||
fmt.Println("ANTLR runtime and generated code versions disagree: " + runtimeVersion + "!=" + toolVersion)
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<parent>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-master</artifactId>
|
||||
<version>4.7.1-SNAPSHOT</version>
|
||||
<version>4.7.2-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<artifactId>antlr4-runtime</artifactId>
|
||||
|
|
|
@ -67,7 +67,7 @@ public class RuntimeMetaData {
|
|||
* omitted.</li>
|
||||
* </ul>
|
||||
*/
|
||||
public static final String VERSION = "4.7";
|
||||
public static final String VERSION = "4.7.1";
|
||||
|
||||
/**
|
||||
* Gets the currently executing version of the ANTLR 4 runtime library.
|
||||
|
|
|
@ -21,7 +21,7 @@ Recognizer.ruleIndexMapCache = {};
|
|||
|
||||
|
||||
Recognizer.prototype.checkVersion = function(toolVersion) {
|
||||
var runtimeVersion = "4.7";
|
||||
var runtimeVersion = "4.7.1";
|
||||
if (runtimeVersion!==toolVersion) {
|
||||
console.log("ANTLR runtime and generated code versions disagree: "+runtimeVersion+"!="+toolVersion);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "antlr4",
|
||||
"version": "4.7.0",
|
||||
"version": "4.7.1",
|
||||
"description": "JavaScript runtime for ANTLR4",
|
||||
"main": "src/antlr4/index.js",
|
||||
"repository": "antlr/antlr4.git",
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
from distutils.core import setup
|
||||
from setuptools import setup
|
||||
|
||||
setup(
|
||||
name='antlr4-python2-runtime',
|
||||
version='4.7',
|
||||
packages=['antlr4', 'antlr4.atn', 'antlr4.dfa', 'antlr4.tree', 'antlr4.error', 'antlr4.xpath'],
|
||||
package_dir={'': 'src'},
|
||||
version='4.7.1',
|
||||
url='http://www.antlr.org',
|
||||
license='BSD',
|
||||
packages=['antlr4', 'antlr4.atn', 'antlr4.dfa', 'antlr4.tree', 'antlr4.error', 'antlr4.xpath'],
|
||||
package_dir={'': 'src'},
|
||||
author='Eric Vergnaud, Terence Parr, Sam Harwell',
|
||||
author_email='eric.vergnaud@wanadoo.fr',
|
||||
description='ANTLR 4.7 runtime for Python 2.7.6'
|
||||
description='ANTLR 4.7.1 runtime for Python 2.7.12'
|
||||
)
|
||||
|
|
|
@ -30,7 +30,7 @@ class Recognizer(object):
|
|||
return major, minor
|
||||
|
||||
def checkVersion(self, toolVersion):
|
||||
runtimeVersion = "4.7"
|
||||
runtimeVersion = "4.7.1"
|
||||
rvmajor, rvminor = self.extractVersion(runtimeVersion)
|
||||
tvmajor, tvminor = self.extractVersion(toolVersion)
|
||||
if rvmajor!=tvmajor or rvminor!=tvminor:
|
||||
|
|
|
@ -39,7 +39,7 @@ class TestLexer(Lexer):
|
|||
|
||||
def __init__(self, input=None):
|
||||
super(TestLexer, self).__init__(input)
|
||||
self.checkVersion("4.7")
|
||||
self.checkVersion("4.7.1")
|
||||
self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
|
||||
self._actions = None
|
||||
self._predicates = None
|
||||
|
@ -95,7 +95,7 @@ class TestLexer2(Lexer):
|
|||
|
||||
def __init__(self, input=None):
|
||||
super(TestLexer2, self).__init__(input)
|
||||
self.checkVersion("4.7")
|
||||
self.checkVersion("4.7.1")
|
||||
self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
|
||||
self._actions = None
|
||||
self._predicates = None
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
from distutils.core import setup
|
||||
from setuptools import setup
|
||||
|
||||
setup(
|
||||
name='antlr4-python3-runtime',
|
||||
version='4.7',
|
||||
version='4.7.1',
|
||||
packages=['antlr4', 'antlr4.atn', 'antlr4.dfa', 'antlr4.tree', 'antlr4.error', 'antlr4.xpath'],
|
||||
package_dir={'': 'src'},
|
||||
url='http://www.antlr.org',
|
||||
license='BSD',
|
||||
author='Eric Vergnaud, Terence Parr, Sam Harwell',
|
||||
author_email='eric.vergnaud@wanadoo.fr',
|
||||
description='ANTLR 4.7 runtime for Python 3.4.0'
|
||||
description='ANTLR 4.7.1 runtime for Python 3.6.3'
|
||||
)
|
||||
|
|
|
@ -33,7 +33,7 @@ class Recognizer(object):
|
|||
return major, minor
|
||||
|
||||
def checkVersion(self, toolVersion):
|
||||
runtimeVersion = "4.7"
|
||||
runtimeVersion = "4.7.1"
|
||||
rvmajor, rvminor = self.extractVersion(runtimeVersion)
|
||||
tvmajor, tvminor = self.extractVersion(toolVersion)
|
||||
if rvmajor!=tvmajor or rvminor!=tvminor:
|
||||
|
|
|
@ -119,7 +119,7 @@ class XPathLexer(Lexer):
|
|||
|
||||
def __init__(self, input=None):
|
||||
super().__init__(input)
|
||||
self.checkVersion("4.7")
|
||||
self.checkVersion("4.7.1")
|
||||
self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
|
||||
self._actions = None
|
||||
self._predicates = None
|
||||
|
|
|
@ -792,7 +792,7 @@ class CLexer(Lexer):
|
|||
|
||||
def __init__(self, input=None):
|
||||
super().__init__(input)
|
||||
self.checkVersion("4.7")
|
||||
self.checkVersion("4.7.1")
|
||||
self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
|
||||
self._actions = None
|
||||
self._predicates = None
|
||||
|
|
|
@ -915,7 +915,7 @@ class CParser ( Parser ):
|
|||
|
||||
def __init__(self, input:TokenStream):
|
||||
super().__init__(input)
|
||||
self.checkVersion("4.7")
|
||||
self.checkVersion("4.7.1")
|
||||
self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
|
||||
self._predicates = None
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ public class RuntimeMetaData {
|
|||
/// omitted, the `-` (hyphen-minus) appearing before it is also
|
||||
/// omitted.
|
||||
///
|
||||
public static let VERSION: String = "4.7"
|
||||
public static let VERSION: String = "4.7.1"
|
||||
|
||||
///
|
||||
/// Gets the currently executing version of the ANTLR 4 runtime library.
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
# Get github issues / PR for a release
|
||||
# Exec with "python github_release_notes.py YOUR_GITHUB_API_ACCESS_TOKEN 4.7.1"
|
||||
|
||||
from github import Github
|
||||
from collections import Counter
|
||||
import sys
|
||||
|
||||
TARGETS = ['csharp', 'cpp', 'go', 'java', 'javascript', 'python2', 'python3', 'swift']
|
||||
|
||||
TOKEN=sys.argv[1]
|
||||
MILESTONE=sys.argv[2]
|
||||
g = Github(login_or_token=TOKEN)
|
||||
|
||||
# Then play with your Github objects:
|
||||
org = g.get_organization("antlr")
|
||||
repo = org.get_repo("antlr4")
|
||||
milestone = [x for x in repo.get_milestones() if x.title==MILESTONE]
|
||||
milestone = milestone[0]
|
||||
|
||||
issues = repo.get_issues(state="closed", milestone=milestone, sort="created", direction="desc")
|
||||
|
||||
# # dump bugs fixed
|
||||
# print()
|
||||
# print("## Issues fixed")
|
||||
# for x in issues:
|
||||
# labels = [l.name for l in x.labels]
|
||||
# if x.pull_request is None and not ("type:improvement" in labels or "type:feature" in labels):
|
||||
# print("* [%s](%s) (%s)" % (x.title, x.html_url, ", ".join([l.name for l in x.labels])))
|
||||
#
|
||||
#
|
||||
# print()
|
||||
# # dump improvements closed for this release (issues or pulls)
|
||||
# print("## Improvements, features")
|
||||
# for x in issues:
|
||||
# labels = [l.name for l in x.labels]
|
||||
# if ("type:improvement" in labels or "type:feature" in labels):
|
||||
# print("* [%s](%s) (%s)" % (x.title, x.html_url, ", ".join(labels)))
|
||||
#
|
||||
# print()
|
||||
#
|
||||
#
|
||||
# # dump PRs closed for this release by target
|
||||
# print("## Pull requests grouped by target")
|
||||
# for target in TARGETS:
|
||||
# print()
|
||||
# print(f"### {target} target")
|
||||
# for x in issues:
|
||||
# labels = [l.name for l in x.labels]
|
||||
# if x.pull_request is not None and f"target:{target}" in labels:
|
||||
# print("* [%s](%s) (%s)" % (x.title, x.html_url, ", ".join(labels)))
|
||||
#
|
||||
|
||||
# dump contributors
|
||||
print()
|
||||
print("## Contributors")
|
||||
user_counts = Counter([x.user.login for x in issues])
|
||||
users = {x.user.login:x.user for x in issues}
|
||||
for login,count in user_counts.most_common(10000):
|
||||
name = users[login].name
|
||||
logins = f" ({users[login].login})"
|
||||
if name is None:
|
||||
name = users[login].login
|
||||
logins = ""
|
||||
print(f"* {count:3d} items: [{name}]({users[login].html_url}){logins}")
|
|
@ -10,7 +10,7 @@
|
|||
<parent>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-master</artifactId>
|
||||
<version>4.7.1-SNAPSHOT</version>
|
||||
<version>4.7.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>antlr4-tool-testsuite</artifactId>
|
||||
<name>ANTLR 4 Tool Tests</name>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<parent>
|
||||
<groupId>org.antlr</groupId>
|
||||
<artifactId>antlr4-master</artifactId>
|
||||
<version>4.7.1-SNAPSHOT</version>
|
||||
<version>4.7.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>antlr4</artifactId>
|
||||
<name>ANTLR 4 Tool</name>
|
||||
|
|
|
@ -354,7 +354,7 @@ func getVocabulary() -> Vocabulary {
|
|||
|
||||
override <accessLevelNotOpen(parser)>
|
||||
init(_ input:TokenStream) throws {
|
||||
RuntimeMetaData.checkVersion("4.7", RuntimeMetaData.VERSION)
|
||||
RuntimeMetaData.checkVersion("4.7.1", RuntimeMetaData.VERSION)
|
||||
try super.init(input)
|
||||
_interp = ParserATNSimulator(self,<p.name>._ATN,<p.name>._decisionToDFA, <parser.name>._sharedContextCache)
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ public class CSharpTarget extends Target {
|
|||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "4.7";
|
||||
return "4.7.1";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -50,7 +50,7 @@ public class CppTarget extends Target {
|
|||
}
|
||||
|
||||
public String getVersion() {
|
||||
return "4.7";
|
||||
return "4.7.1";
|
||||
}
|
||||
|
||||
public boolean needsHeader() { return true; }
|
||||
|
|
|
@ -71,7 +71,7 @@ public class GoTarget extends Target {
|
|||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "4.7";
|
||||
return "4.7.1";
|
||||
}
|
||||
|
||||
public Set<String> getBadWords() {
|
||||
|
|
|
@ -51,7 +51,7 @@ public class JavaScriptTarget extends Target {
|
|||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "4.7";
|
||||
return "4.7.1";
|
||||
}
|
||||
|
||||
public Set<String> getBadWords() {
|
||||
|
|
|
@ -94,7 +94,7 @@ public class Python2Target extends Target {
|
|||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "4.7";
|
||||
return "4.7.1";
|
||||
}
|
||||
|
||||
public Set<String> getBadWords() {
|
||||
|
|
|
@ -96,7 +96,7 @@ public class Python3Target extends Target {
|
|||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "4.7";
|
||||
return "4.7.1";
|
||||
}
|
||||
|
||||
/** Avoid grammar symbols in this set to prevent conflicts in gen'd code. */
|
||||
|
|
|
@ -87,7 +87,7 @@ public class SwiftTarget extends Target {
|
|||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "4.7"; // Java and tool versions move in lock step
|
||||
return "4.7.1"; // Java and tool versions move in lock step
|
||||
}
|
||||
|
||||
public Set<String> getBadWords() {
|
||||
|
|
Loading…
Reference in New Issue