61 lines
1.9 KiB
Markdown
61 lines
1.9 KiB
Markdown
# Installation
|
|
|
|
Please read carefully: [Getting Started with ANTLR v4](https://raw.githubusercontent.com/antlr/antlr4/master/doc/getting-started.md).
|
|
|
|
## Why can't ANTLR (grun) find my lexer or parser?
|
|
|
|
If you see "Can't load Hello as lexer or parser", it's because you don't have '.' (current directory) in your CLASSPATH.
|
|
|
|
```bash
|
|
$ alias antlr4='java -jar /usr/local/lib/antlr-4.2.2-complete.jar'
|
|
$ alias grun='java org.antlr.v4.runtime.misc.TestRig'
|
|
$ export CLASSPATH="/usr/local/lib/antlr-4.2.2-complete.jar"
|
|
$ antlr4 Hello.g4
|
|
$ javac Hello*.java
|
|
$ grun Hello r -tree
|
|
Can't load Hello as lexer or parser
|
|
$
|
|
```
|
|
|
|
For mac/linux, use:
|
|
|
|
```bash
|
|
export CLASSPATH=".:/usr/local/lib/antlr-4.2.2-complete.jar:$CLASSPATH"
|
|
```
|
|
|
|
or for Windows:
|
|
|
|
```
|
|
SET CLASSPATH=.;C:\Javalib\antlr4-complete.jar;%CLASSPATH%
|
|
```
|
|
|
|
**See the dot at the beginning?** It's critical.
|
|
|
|
## Why can't I run the ANTLR tool?
|
|
|
|
If you get a no class definition found error, you are missing the ANTLR jar in your `CLASSPATH` (or you might only have the runtime jar):
|
|
|
|
```bash
|
|
/tmp $ java org.antlr.v4.Tool Hello.g4
|
|
Exception in thread "main" java.lang.NoClassDefFoundError: org/antlr/v4/Tool
|
|
Caused by: java.lang.ClassNotFoundException: org.antlr.v4.Tool
|
|
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
|
|
at java.security.AccessController.doPrivileged(Native Method)
|
|
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
|
|
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
|
|
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
|
|
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
|
|
```
|
|
|
|
## Why doesn't my parser compile?
|
|
|
|
If you see these kinds of errors, it's because you don't have the runtime or complete ANTLR library in your CLASSPATH.
|
|
|
|
```bash
|
|
/tmp $ javac Hello*.java
|
|
HelloBaseListener.java:3: package org.antlr.v4.runtime does not exist
|
|
import org.antlr.v4.runtime.ParserRuleContext;
|
|
^
|
|
...
|
|
```
|