Skip to content

Commit 3d02af3

Browse files
authored
Merge branch 'master' into patch-1
2 parents 4004c09 + 0e49cf9 commit 3d02af3

29 files changed

+1404
-1060
lines changed

ANTLR.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# ANTLR
22

3-
*grule-rule-engine* is heavily using ANTLR4 lexer/parser to parse GRL rule. The parser
3+
*grule-rule-engine* is heavily using ANTLR4 lexer/parser to parse GRL rules. The parser
44
`.go` files were generated by ANTLR4 tools program.
55

66
## Download ANTLR4 tools
77

8-
The latest version can be downloaded [here (antlr-4.9.2-complete.jar)](https://www.antlr.org/download/antlr-4.9.2-complete.jar)
9-
Or you can always go to [ANTLR4 download page](https://www.antlr.org/download.html)
8+
The version currently used can be downloaded [here (antlr-4.13.1-complete.jar)](https://github.com/antlr/website-antlr4/blob/gh-pages/download/antlr-4.13.1-complete.jar).
9+
Or you can always go to [ANTLR4 download page](https://www.antlr.org/download.html).
1010

1111
Download the `.jar` file and place it somewhere a directory.
1212

@@ -16,7 +16,7 @@ Install java and you're ready to work with ANTLR4.
1616
## Making ANTLR alias.
1717

1818
```bash
19-
alias antlr='java -jar /path/to/downloaded/antlr-4.9.2-complete.jar'
19+
alias antlr='java -jar /path/to/downloaded/antlr-4.13.1-complete.jar'
2020
```
2121

2222
## Executing ANTLR
@@ -28,3 +28,13 @@ have your antlr4 grammar `.g4` file. And then execute the following command.
2828
antlr -Dlanguage=Go -o parser -package grulev3 -lib . -listener -visitor grulev3.g4
2929
```
3030

31+
With GNU Make installed, it is also possible to use the Makefile in the `antlr`
32+
directory.
33+
34+
The command `make clean` can be used to remove the generated content of the
35+
`antlr/parser/grulev3` directory.
36+
Then, it is possible to generate the parser code with:
37+
```bash
38+
make ANTLR="java -jar /path/to/downloaded/antlr-4.13.1-complete.jar"
39+
```
40+

antlr/GruleParserV3Listener.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
"strconv"
2222
"strings"
2323

24-
"github.com/antlr/antlr4/runtime/Go/antlr"
24+
"github.com/antlr4-go/antlr/v4"
2525
"github.com/hyperjumptech/grule-rule-engine/antlr/parser/grulev3"
2626
"github.com/hyperjumptech/grule-rule-engine/ast"
2727
"github.com/hyperjumptech/grule-rule-engine/logger"
@@ -35,7 +35,7 @@ var (
3535
"struct": "GruleParserV3Listener",
3636
}
3737

38-
// LoggerV3 is a logger instance twith default fields for grule
38+
// LoggerV3 is a logger instance with default fields for grule
3939
LoggerV3 = logger.Log.WithFields(loggerV3Fields)
4040
)
4141

antlr/GruleParserV3_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ package antlr
1616

1717
import (
1818
"fmt"
19-
"io/ioutil"
19+
"os"
2020
"reflect"
2121
"testing"
2222

23-
"github.com/antlr/antlr4/runtime/Go/antlr"
23+
"github.com/antlr4-go/antlr/v4"
2424
parser "github.com/hyperjumptech/grule-rule-engine/antlr/parser/grulev3"
2525
"github.com/hyperjumptech/grule-rule-engine/ast"
2626
"github.com/hyperjumptech/grule-rule-engine/pkg"
@@ -105,7 +105,7 @@ type GrandChild struct {
105105
}
106106

107107
func TestV3Lexer(t *testing.T) {
108-
data, err := ioutil.ReadFile("./sample4.grl")
108+
data, err := os.ReadFile("./sample4.grl")
109109
if err != nil {
110110
t.Fatal(err)
111111
} else {
@@ -129,7 +129,7 @@ func TestV3Lexer(t *testing.T) {
129129

130130
func TestV3Parser(t *testing.T) {
131131
// logrus.SetLevel(logrus.TraceLevel)
132-
data, err := ioutil.ReadFile("./sample4.grl")
132+
data, err := os.ReadFile("./sample4.grl")
133133
if err != nil {
134134
t.Fatal(err)
135135
} else {

antlr/Makefile

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# GNU Make >= 4.3
2+
3+
## Configuration (See ../ANTLR.md)
4+
5+
OUTPUT_DIR = parser/grulev3
6+
7+
ANTLR = antlr4
8+
ANTLRFLAGS = -Dlanguage=Go -o '${OUTPUT_DIR}' -package '$(notdir ${OUTPUT_DIR})'
9+
10+
GRAMMAR = grulev3.g4
11+
12+
## Rules
13+
14+
PREFIX = ${OUTPUT_DIR}/$(basename ${GRAMMAR})
15+
tokens = $(addsuffix .interp,$(1)) $(addsuffix .tokens,$(1))
16+
17+
TOKENS = $(call tokens,${PREFIX}Lexer) $(call tokens,${PREFIX})
18+
LEXER = ${PREFIX}_lexer.go
19+
PARSER = ${PREFIX}_parser.go ${PREFIX}_listener.go ${PREFIX}_base_listener.go ${PREFIX}_visitor.go ${PREFIX}_base_visitor.go
20+
21+
.PHONY: clean all
22+
.DELETE_ON_ERROR:
23+
24+
all: ${TOKENS} ${LEXER} ${PARSER}
25+
26+
${TOKENS} ${LEXER} ${PARSER} &: ${GRAMMAR}
27+
$(ANTLR) ${ANTLRFLAGS} -visitor $^
28+
29+
clean:
30+
rm -f ${TOKENS} ${LEXER} ${PARSER}

antlr/parser/grulev3/grulev3.interp

100755100644
File mode changed.

antlr/parser/grulev3/grulev3.tokens

100755100644
Lines changed: 80 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,80 @@
1-
T__0=1
2-
PLUS=2
3-
MINUS=3
4-
DIV=4
5-
MUL=5
6-
MOD=6
7-
DOT=7
8-
SEMICOLON=8
9-
LR_BRACE=9
10-
RR_BRACE=10
11-
LR_BRACKET=11
12-
RR_BRACKET=12
13-
LS_BRACKET=13
14-
RS_BRACKET=14
15-
RULE=15
16-
WHEN=16
17-
THEN=17
18-
AND=18
19-
OR=19
20-
TRUE=20
21-
FALSE=21
22-
NIL_LITERAL=22
23-
NEGATION=23
24-
SALIENCE=24
25-
EQUALS=25
26-
ASSIGN=26
27-
PLUS_ASIGN=27
28-
MINUS_ASIGN=28
29-
DIV_ASIGN=29
30-
MUL_ASIGN=30
31-
GT=31
32-
LT=32
33-
GTE=33
34-
LTE=34
35-
NOTEQUALS=35
36-
BITAND=36
37-
BITOR=37
38-
SIMPLENAME=38
39-
DQUOTA_STRING=39
40-
SQUOTA_STRING=40
41-
DECIMAL_FLOAT_LIT=41
42-
DECIMAL_EXPONENT=42
43-
HEX_FLOAT_LIT=43
44-
HEX_EXPONENT=44
45-
DEC_LIT=45
46-
HEX_LIT=46
47-
OCT_LIT=47
48-
SPACE=48
49-
COMMENT=49
50-
LINE_COMMENT=50
51-
','=1
52-
'+'=2
53-
'-'=3
54-
'/'=4
55-
'*'=5
56-
'%'=6
57-
'.'=7
58-
';'=8
59-
'{'=9
60-
'}'=10
61-
'('=11
62-
')'=12
63-
'['=13
64-
']'=14
65-
'&&'=18
66-
'||'=19
67-
'!'=23
68-
'=='=25
69-
'='=26
70-
'+='=27
71-
'-='=28
72-
'/='=29
73-
'*='=30
74-
'>'=31
75-
'<'=32
76-
'>='=33
77-
'<='=34
78-
'!='=35
79-
'&'=36
80-
'|'=37
1+
T__0=1
2+
PLUS=2
3+
MINUS=3
4+
DIV=4
5+
MUL=5
6+
MOD=6
7+
DOT=7
8+
SEMICOLON=8
9+
LR_BRACE=9
10+
RR_BRACE=10
11+
LR_BRACKET=11
12+
RR_BRACKET=12
13+
LS_BRACKET=13
14+
RS_BRACKET=14
15+
RULE=15
16+
WHEN=16
17+
THEN=17
18+
AND=18
19+
OR=19
20+
TRUE=20
21+
FALSE=21
22+
NIL_LITERAL=22
23+
NEGATION=23
24+
SALIENCE=24
25+
EQUALS=25
26+
ASSIGN=26
27+
PLUS_ASIGN=27
28+
MINUS_ASIGN=28
29+
DIV_ASIGN=29
30+
MUL_ASIGN=30
31+
GT=31
32+
LT=32
33+
GTE=33
34+
LTE=34
35+
NOTEQUALS=35
36+
BITAND=36
37+
BITOR=37
38+
SIMPLENAME=38
39+
DQUOTA_STRING=39
40+
SQUOTA_STRING=40
41+
DECIMAL_FLOAT_LIT=41
42+
DECIMAL_EXPONENT=42
43+
HEX_FLOAT_LIT=43
44+
HEX_EXPONENT=44
45+
DEC_LIT=45
46+
HEX_LIT=46
47+
OCT_LIT=47
48+
SPACE=48
49+
COMMENT=49
50+
LINE_COMMENT=50
51+
','=1
52+
'+'=2
53+
'-'=3
54+
'/'=4
55+
'*'=5
56+
'%'=6
57+
'.'=7
58+
';'=8
59+
'{'=9
60+
'}'=10
61+
'('=11
62+
')'=12
63+
'['=13
64+
']'=14
65+
'&&'=18
66+
'||'=19
67+
'!'=23
68+
'=='=25
69+
'='=26
70+
'+='=27
71+
'-='=28
72+
'/='=29
73+
'*='=30
74+
'>'=31
75+
'<'=32
76+
'>='=33
77+
'<='=34
78+
'!='=35
79+
'&'=36
80+
'|'=37

antlr/parser/grulev3/grulev3Lexer.interp

100755100644
File mode changed.

0 commit comments

Comments
 (0)