feat: custom address/date parser based on rfc5322 abnf

This commit is contained in:
James Houlahan
2020-10-21 13:37:41 +02:00
parent 9e0635a6a4
commit 3496599723
69 changed files with 20607 additions and 185 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,110 @@
U_00=1
U_01_08=2
TAB=3
LF=4
U_0B=5
U_0C=6
CR=7
U_0E_1F=8
SP=9
Exclamation=10
DQuote=11
Hash=12
Dollar=13
Percent=14
Ampersand=15
SQuote=16
LParens=17
RParens=18
Asterisk=19
Plus=20
Comma=21
Minus=22
Period=23
Slash=24
Digit=25
Colon=26
Semicolon=27
Less=28
Equal=29
Greater=30
Question=31
At=32
LBracket=33
Backslash=34
RBracket=35
Caret=36
Underscore=37
Backtick=38
LCurly=39
Pipe=40
RCurly=41
Tilde=42
Delete=43
UTF8NonAscii=44
A=45
B=46
C=47
D=48
E=49
F=50
G=51
H=52
I=53
J=54
K=55
L=56
M=57
N=58
O=59
P=60
Q=61
R=62
S=63
T=64
U=65
V=66
W=67
X=68
Y=69
Z=70
'\u0000'=1
'\t'=3
'\n'=4
'\u000B'=5
'\u000C'=6
'\r'=7
' '=9
'!'=10
'"'=11
'#'=12
'$'=13
'%'=14
'&'=15
'\''=16
'('=17
')'=18
'*'=19
'+'=20
','=21
'-'=22
'.'=23
'/'=24
':'=26
';'=27
'<'=28
'='=29
'>'=30
'?'=31
'@'=32
'['=33
'\\'=34
']'=35
'^'=36
'_'=37
'`'=38
'{'=39
'|'=40
'}'=41
'~'=42
'\u007F'=43

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,110 @@
U_00=1
U_01_08=2
TAB=3
LF=4
U_0B=5
U_0C=6
CR=7
U_0E_1F=8
SP=9
Exclamation=10
DQuote=11
Hash=12
Dollar=13
Percent=14
Ampersand=15
SQuote=16
LParens=17
RParens=18
Asterisk=19
Plus=20
Comma=21
Minus=22
Period=23
Slash=24
Digit=25
Colon=26
Semicolon=27
Less=28
Equal=29
Greater=30
Question=31
At=32
LBracket=33
Backslash=34
RBracket=35
Caret=36
Underscore=37
Backtick=38
LCurly=39
Pipe=40
RCurly=41
Tilde=42
Delete=43
UTF8NonAscii=44
A=45
B=46
C=47
D=48
E=49
F=50
G=51
H=52
I=53
J=54
K=55
L=56
M=57
N=58
O=59
P=60
Q=61
R=62
S=63
T=64
U=65
V=66
W=67
X=68
Y=69
Z=70
'\u0000'=1
'\t'=3
'\n'=4
'\u000B'=5
'\u000C'=6
'\r'=7
' '=9
'!'=10
'"'=11
'#'=12
'$'=13
'%'=14
'&'=15
'\''=16
'('=17
')'=18
'*'=19
'+'=20
','=21
'-'=22
'.'=23
'/'=24
':'=26
';'=27
'<'=28
'='=29
'>'=30
'?'=31
'@'=32
'['=33
'\\'=34
']'=35
'^'=36
'_'=37
'`'=38
'{'=39
'|'=40
'}'=41
'~'=42
'\u007F'=43

View File

@ -0,0 +1,309 @@
// Copyright (c) 2020 Proton Technologies AG
//
// This file is part of ProtonMail Bridge.
//
// ProtonMail Bridge is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ProtonMail Bridge is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
// Code generated from RFC5322Lexer.g4 by ANTLR 4.8. DO NOT EDIT.
package parser
import (
"fmt"
"unicode"
"github.com/antlr/antlr4/runtime/Go/antlr"
)
// Suppress unused import error
var _ = fmt.Printf
var _ = unicode.IsLetter
var serializedLexerAtn = []uint16{
3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 72, 283,
8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7,
9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12,
4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4,
18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23,
9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9,
28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33,
4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4,
39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44,
9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9,
49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54,
4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4,
60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65,
9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9,
70, 4, 71, 9, 71, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6,
3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3,
12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17,
3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 22, 3,
22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27,
3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3,
33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38,
3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3,
43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48,
3, 49, 3, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3,
54, 3, 54, 3, 55, 3, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59,
3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 64, 3,
64, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 69, 3, 69,
3, 70, 3, 70, 3, 71, 3, 71, 2, 2, 72, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13,
8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17,
33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26,
51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35,
69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44,
87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53,
105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61,
121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69,
137, 70, 139, 71, 141, 72, 3, 2, 29, 3, 2, 50, 59, 4, 2, 67, 67, 99, 99,
4, 2, 68, 68, 100, 100, 4, 2, 69, 69, 101, 101, 4, 2, 70, 70, 102, 102,
4, 2, 71, 71, 103, 103, 4, 2, 72, 72, 104, 104, 4, 2, 73, 73, 105, 105,
4, 2, 74, 74, 106, 106, 4, 2, 75, 75, 107, 107, 4, 2, 76, 76, 108, 108,
4, 2, 77, 77, 109, 109, 4, 2, 78, 78, 110, 110, 4, 2, 79, 79, 111, 111,
4, 2, 80, 80, 112, 112, 4, 2, 81, 81, 113, 113, 4, 2, 82, 82, 114, 114,
4, 2, 83, 83, 115, 115, 4, 2, 84, 84, 116, 116, 4, 2, 85, 85, 117, 117,
4, 2, 86, 86, 118, 118, 4, 2, 87, 87, 119, 119, 4, 2, 88, 88, 120, 120,
4, 2, 89, 89, 121, 121, 4, 2, 90, 90, 122, 122, 4, 2, 91, 91, 123, 123,
4, 2, 92, 92, 124, 124, 2, 282, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2,
7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2,
2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2,
2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2,
2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3,
2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45,
3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2,
53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2,
2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2,
2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2,
2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3,
2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91,
3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2,
99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2,
2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113,
3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2,
2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3,
2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2,
135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2,
2, 2, 3, 143, 3, 2, 2, 2, 5, 145, 3, 2, 2, 2, 7, 147, 3, 2, 2, 2, 9, 149,
3, 2, 2, 2, 11, 151, 3, 2, 2, 2, 13, 153, 3, 2, 2, 2, 15, 155, 3, 2, 2,
2, 17, 157, 3, 2, 2, 2, 19, 159, 3, 2, 2, 2, 21, 161, 3, 2, 2, 2, 23, 163,
3, 2, 2, 2, 25, 165, 3, 2, 2, 2, 27, 167, 3, 2, 2, 2, 29, 169, 3, 2, 2,
2, 31, 171, 3, 2, 2, 2, 33, 173, 3, 2, 2, 2, 35, 175, 3, 2, 2, 2, 37, 177,
3, 2, 2, 2, 39, 179, 3, 2, 2, 2, 41, 181, 3, 2, 2, 2, 43, 183, 3, 2, 2,
2, 45, 185, 3, 2, 2, 2, 47, 187, 3, 2, 2, 2, 49, 189, 3, 2, 2, 2, 51, 191,
3, 2, 2, 2, 53, 193, 3, 2, 2, 2, 55, 195, 3, 2, 2, 2, 57, 197, 3, 2, 2,
2, 59, 199, 3, 2, 2, 2, 61, 201, 3, 2, 2, 2, 63, 203, 3, 2, 2, 2, 65, 205,
3, 2, 2, 2, 67, 207, 3, 2, 2, 2, 69, 209, 3, 2, 2, 2, 71, 211, 3, 2, 2,
2, 73, 213, 3, 2, 2, 2, 75, 215, 3, 2, 2, 2, 77, 217, 3, 2, 2, 2, 79, 219,
3, 2, 2, 2, 81, 221, 3, 2, 2, 2, 83, 223, 3, 2, 2, 2, 85, 225, 3, 2, 2,
2, 87, 227, 3, 2, 2, 2, 89, 229, 3, 2, 2, 2, 91, 231, 3, 2, 2, 2, 93, 233,
3, 2, 2, 2, 95, 235, 3, 2, 2, 2, 97, 237, 3, 2, 2, 2, 99, 239, 3, 2, 2,
2, 101, 241, 3, 2, 2, 2, 103, 243, 3, 2, 2, 2, 105, 245, 3, 2, 2, 2, 107,
247, 3, 2, 2, 2, 109, 249, 3, 2, 2, 2, 111, 251, 3, 2, 2, 2, 113, 253,
3, 2, 2, 2, 115, 255, 3, 2, 2, 2, 117, 257, 3, 2, 2, 2, 119, 259, 3, 2,
2, 2, 121, 261, 3, 2, 2, 2, 123, 263, 3, 2, 2, 2, 125, 265, 3, 2, 2, 2,
127, 267, 3, 2, 2, 2, 129, 269, 3, 2, 2, 2, 131, 271, 3, 2, 2, 2, 133,
273, 3, 2, 2, 2, 135, 275, 3, 2, 2, 2, 137, 277, 3, 2, 2, 2, 139, 279,
3, 2, 2, 2, 141, 281, 3, 2, 2, 2, 143, 144, 7, 2, 2, 2, 144, 4, 3, 2, 2,
2, 145, 146, 4, 3, 10, 2, 146, 6, 3, 2, 2, 2, 147, 148, 7, 11, 2, 2, 148,
8, 3, 2, 2, 2, 149, 150, 7, 12, 2, 2, 150, 10, 3, 2, 2, 2, 151, 152, 7,
13, 2, 2, 152, 12, 3, 2, 2, 2, 153, 154, 7, 14, 2, 2, 154, 14, 3, 2, 2,
2, 155, 156, 7, 15, 2, 2, 156, 16, 3, 2, 2, 2, 157, 158, 4, 16, 33, 2,
158, 18, 3, 2, 2, 2, 159, 160, 7, 34, 2, 2, 160, 20, 3, 2, 2, 2, 161, 162,
7, 35, 2, 2, 162, 22, 3, 2, 2, 2, 163, 164, 7, 36, 2, 2, 164, 24, 3, 2,
2, 2, 165, 166, 7, 37, 2, 2, 166, 26, 3, 2, 2, 2, 167, 168, 7, 38, 2, 2,
168, 28, 3, 2, 2, 2, 169, 170, 7, 39, 2, 2, 170, 30, 3, 2, 2, 2, 171, 172,
7, 40, 2, 2, 172, 32, 3, 2, 2, 2, 173, 174, 7, 41, 2, 2, 174, 34, 3, 2,
2, 2, 175, 176, 7, 42, 2, 2, 176, 36, 3, 2, 2, 2, 177, 178, 7, 43, 2, 2,
178, 38, 3, 2, 2, 2, 179, 180, 7, 44, 2, 2, 180, 40, 3, 2, 2, 2, 181, 182,
7, 45, 2, 2, 182, 42, 3, 2, 2, 2, 183, 184, 7, 46, 2, 2, 184, 44, 3, 2,
2, 2, 185, 186, 7, 47, 2, 2, 186, 46, 3, 2, 2, 2, 187, 188, 7, 48, 2, 2,
188, 48, 3, 2, 2, 2, 189, 190, 7, 49, 2, 2, 190, 50, 3, 2, 2, 2, 191, 192,
9, 2, 2, 2, 192, 52, 3, 2, 2, 2, 193, 194, 7, 60, 2, 2, 194, 54, 3, 2,
2, 2, 195, 196, 7, 61, 2, 2, 196, 56, 3, 2, 2, 2, 197, 198, 7, 62, 2, 2,
198, 58, 3, 2, 2, 2, 199, 200, 7, 63, 2, 2, 200, 60, 3, 2, 2, 2, 201, 202,
7, 64, 2, 2, 202, 62, 3, 2, 2, 2, 203, 204, 7, 65, 2, 2, 204, 64, 3, 2,
2, 2, 205, 206, 7, 66, 2, 2, 206, 66, 3, 2, 2, 2, 207, 208, 7, 93, 2, 2,
208, 68, 3, 2, 2, 2, 209, 210, 7, 94, 2, 2, 210, 70, 3, 2, 2, 2, 211, 212,
7, 95, 2, 2, 212, 72, 3, 2, 2, 2, 213, 214, 7, 96, 2, 2, 214, 74, 3, 2,
2, 2, 215, 216, 7, 97, 2, 2, 216, 76, 3, 2, 2, 2, 217, 218, 7, 98, 2, 2,
218, 78, 3, 2, 2, 2, 219, 220, 7, 125, 2, 2, 220, 80, 3, 2, 2, 2, 221,
222, 7, 126, 2, 2, 222, 82, 3, 2, 2, 2, 223, 224, 7, 127, 2, 2, 224, 84,
3, 2, 2, 2, 225, 226, 7, 128, 2, 2, 226, 86, 3, 2, 2, 2, 227, 228, 7, 129,
2, 2, 228, 88, 3, 2, 2, 2, 229, 230, 4, 130, 1, 2, 230, 90, 3, 2, 2, 2,
231, 232, 9, 3, 2, 2, 232, 92, 3, 2, 2, 2, 233, 234, 9, 4, 2, 2, 234, 94,
3, 2, 2, 2, 235, 236, 9, 5, 2, 2, 236, 96, 3, 2, 2, 2, 237, 238, 9, 6,
2, 2, 238, 98, 3, 2, 2, 2, 239, 240, 9, 7, 2, 2, 240, 100, 3, 2, 2, 2,
241, 242, 9, 8, 2, 2, 242, 102, 3, 2, 2, 2, 243, 244, 9, 9, 2, 2, 244,
104, 3, 2, 2, 2, 245, 246, 9, 10, 2, 2, 246, 106, 3, 2, 2, 2, 247, 248,
9, 11, 2, 2, 248, 108, 3, 2, 2, 2, 249, 250, 9, 12, 2, 2, 250, 110, 3,
2, 2, 2, 251, 252, 9, 13, 2, 2, 252, 112, 3, 2, 2, 2, 253, 254, 9, 14,
2, 2, 254, 114, 3, 2, 2, 2, 255, 256, 9, 15, 2, 2, 256, 116, 3, 2, 2, 2,
257, 258, 9, 16, 2, 2, 258, 118, 3, 2, 2, 2, 259, 260, 9, 17, 2, 2, 260,
120, 3, 2, 2, 2, 261, 262, 9, 18, 2, 2, 262, 122, 3, 2, 2, 2, 263, 264,
9, 19, 2, 2, 264, 124, 3, 2, 2, 2, 265, 266, 9, 20, 2, 2, 266, 126, 3,
2, 2, 2, 267, 268, 9, 21, 2, 2, 268, 128, 3, 2, 2, 2, 269, 270, 9, 22,
2, 2, 270, 130, 3, 2, 2, 2, 271, 272, 9, 23, 2, 2, 272, 132, 3, 2, 2, 2,
273, 274, 9, 24, 2, 2, 274, 134, 3, 2, 2, 2, 275, 276, 9, 25, 2, 2, 276,
136, 3, 2, 2, 2, 277, 278, 9, 26, 2, 2, 278, 138, 3, 2, 2, 2, 279, 280,
9, 27, 2, 2, 280, 140, 3, 2, 2, 2, 281, 282, 9, 28, 2, 2, 282, 142, 3,
2, 2, 2, 3, 2, 2,
}
var lexerDeserializer = antlr.NewATNDeserializer(nil)
var lexerAtn = lexerDeserializer.DeserializeFromUInt16(serializedLexerAtn)
var lexerChannelNames = []string{
"DEFAULT_TOKEN_CHANNEL", "HIDDEN",
}
var lexerModeNames = []string{
"DEFAULT_MODE",
}
var lexerLiteralNames = []string{
"", "'\u0000'", "", "'\t'", "'\n'", "'\u000B'", "'\u000C'", "'\r'", "",
"' '", "'!'", "'\"'", "'#'", "'$'", "'%'", "'&'", "'''", "'('", "')'",
"'*'", "'+'", "','", "'-'", "'.'", "'/'", "", "':'", "';'", "'<'", "'='",
"'>'", "'?'", "'@'", "'['", "'\\'", "']'", "'^'", "'_'", "'`'", "'{'",
"'|'", "'}'", "'~'", "'\u007F'",
}
var lexerSymbolicNames = []string{
"", "U_00", "U_01_08", "TAB", "LF", "U_0B", "U_0C", "CR", "U_0E_1F", "SP",
"Exclamation", "DQuote", "Hash", "Dollar", "Percent", "Ampersand", "SQuote",
"LParens", "RParens", "Asterisk", "Plus", "Comma", "Minus", "Period", "Slash",
"Digit", "Colon", "Semicolon", "Less", "Equal", "Greater", "Question",
"At", "LBracket", "Backslash", "RBracket", "Caret", "Underscore", "Backtick",
"LCurly", "Pipe", "RCurly", "Tilde", "Delete", "UTF8NonAscii", "A", "B",
"C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q",
"R", "S", "T", "U", "V", "W", "X", "Y", "Z",
}
var lexerRuleNames = []string{
"U_00", "U_01_08", "TAB", "LF", "U_0B", "U_0C", "CR", "U_0E_1F", "SP",
"Exclamation", "DQuote", "Hash", "Dollar", "Percent", "Ampersand", "SQuote",
"LParens", "RParens", "Asterisk", "Plus", "Comma", "Minus", "Period", "Slash",
"Digit", "Colon", "Semicolon", "Less", "Equal", "Greater", "Question",
"At", "LBracket", "Backslash", "RBracket", "Caret", "Underscore", "Backtick",
"LCurly", "Pipe", "RCurly", "Tilde", "Delete", "UTF8NonAscii", "A", "B",
"C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q",
"R", "S", "T", "U", "V", "W", "X", "Y", "Z",
}
type RFC5322Lexer struct {
*antlr.BaseLexer
channelNames []string
modeNames []string
// TODO: EOF string
}
var lexerDecisionToDFA = make([]*antlr.DFA, len(lexerAtn.DecisionToState))
func init() {
for index, ds := range lexerAtn.DecisionToState {
lexerDecisionToDFA[index] = antlr.NewDFA(ds, index)
}
}
func NewRFC5322Lexer(input antlr.CharStream) *RFC5322Lexer {
l := new(RFC5322Lexer)
l.BaseLexer = antlr.NewBaseLexer(input)
l.Interpreter = antlr.NewLexerATNSimulator(l, lexerAtn, lexerDecisionToDFA, antlr.NewPredictionContextCache())
l.channelNames = lexerChannelNames
l.modeNames = lexerModeNames
l.RuleNames = lexerRuleNames
l.LiteralNames = lexerLiteralNames
l.SymbolicNames = lexerSymbolicNames
l.GrammarFileName = "RFC5322Lexer.g4"
// TODO: l.EOF = antlr.TokenEOF
return l
}
// RFC5322Lexer tokens.
const (
RFC5322LexerU_00 = 1
RFC5322LexerU_01_08 = 2
RFC5322LexerTAB = 3
RFC5322LexerLF = 4
RFC5322LexerU_0B = 5
RFC5322LexerU_0C = 6
RFC5322LexerCR = 7
RFC5322LexerU_0E_1F = 8
RFC5322LexerSP = 9
RFC5322LexerExclamation = 10
RFC5322LexerDQuote = 11
RFC5322LexerHash = 12
RFC5322LexerDollar = 13
RFC5322LexerPercent = 14
RFC5322LexerAmpersand = 15
RFC5322LexerSQuote = 16
RFC5322LexerLParens = 17
RFC5322LexerRParens = 18
RFC5322LexerAsterisk = 19
RFC5322LexerPlus = 20
RFC5322LexerComma = 21
RFC5322LexerMinus = 22
RFC5322LexerPeriod = 23
RFC5322LexerSlash = 24
RFC5322LexerDigit = 25
RFC5322LexerColon = 26
RFC5322LexerSemicolon = 27
RFC5322LexerLess = 28
RFC5322LexerEqual = 29
RFC5322LexerGreater = 30
RFC5322LexerQuestion = 31
RFC5322LexerAt = 32
RFC5322LexerLBracket = 33
RFC5322LexerBackslash = 34
RFC5322LexerRBracket = 35
RFC5322LexerCaret = 36
RFC5322LexerUnderscore = 37
RFC5322LexerBacktick = 38
RFC5322LexerLCurly = 39
RFC5322LexerPipe = 40
RFC5322LexerRCurly = 41
RFC5322LexerTilde = 42
RFC5322LexerDelete = 43
RFC5322LexerUTF8NonAscii = 44
RFC5322LexerA = 45
RFC5322LexerB = 46
RFC5322LexerC = 47
RFC5322LexerD = 48
RFC5322LexerE = 49
RFC5322LexerF = 50
RFC5322LexerG = 51
RFC5322LexerH = 52
RFC5322LexerI = 53
RFC5322LexerJ = 54
RFC5322LexerK = 55
RFC5322LexerL = 56
RFC5322LexerM = 57
RFC5322LexerN = 58
RFC5322LexerO = 59
RFC5322LexerP = 60
RFC5322LexerQ = 61
RFC5322LexerR = 62
RFC5322LexerS = 63
RFC5322LexerT = 64
RFC5322LexerU = 65
RFC5322LexerV = 66
RFC5322LexerW = 67
RFC5322LexerX = 68
RFC5322LexerY = 69
RFC5322LexerZ = 70
)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,435 @@
// Copyright (c) 2020 Proton Technologies AG
//
// This file is part of ProtonMail Bridge.
//
// ProtonMail Bridge is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ProtonMail Bridge is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
// Code generated from RFC5322Parser.g4 by ANTLR 4.8. DO NOT EDIT.
package parser // RFC5322Parser
import "github.com/antlr/antlr4/runtime/Go/antlr"
// BaseRFC5322ParserListener is a complete listener for a parse tree produced by RFC5322Parser.
type BaseRFC5322ParserListener struct{}
var _ RFC5322ParserListener = &BaseRFC5322ParserListener{}
// VisitTerminal is called when a terminal node is visited.
func (s *BaseRFC5322ParserListener) VisitTerminal(node antlr.TerminalNode) {}
// VisitErrorNode is called when an error node is visited.
func (s *BaseRFC5322ParserListener) VisitErrorNode(node antlr.ErrorNode) {}
// EnterEveryRule is called when any rule is entered.
func (s *BaseRFC5322ParserListener) EnterEveryRule(ctx antlr.ParserRuleContext) {}
// ExitEveryRule is called when any rule is exited.
func (s *BaseRFC5322ParserListener) ExitEveryRule(ctx antlr.ParserRuleContext) {}
// EnterQuotedChar is called when production quotedChar is entered.
func (s *BaseRFC5322ParserListener) EnterQuotedChar(ctx *QuotedCharContext) {}
// ExitQuotedChar is called when production quotedChar is exited.
func (s *BaseRFC5322ParserListener) ExitQuotedChar(ctx *QuotedCharContext) {}
// EnterQuotedPair is called when production quotedPair is entered.
func (s *BaseRFC5322ParserListener) EnterQuotedPair(ctx *QuotedPairContext) {}
// ExitQuotedPair is called when production quotedPair is exited.
func (s *BaseRFC5322ParserListener) ExitQuotedPair(ctx *QuotedPairContext) {}
// EnterFws is called when production fws is entered.
func (s *BaseRFC5322ParserListener) EnterFws(ctx *FwsContext) {}
// ExitFws is called when production fws is exited.
func (s *BaseRFC5322ParserListener) ExitFws(ctx *FwsContext) {}
// EnterCtext is called when production ctext is entered.
func (s *BaseRFC5322ParserListener) EnterCtext(ctx *CtextContext) {}
// ExitCtext is called when production ctext is exited.
func (s *BaseRFC5322ParserListener) ExitCtext(ctx *CtextContext) {}
// EnterCcontent is called when production ccontent is entered.
func (s *BaseRFC5322ParserListener) EnterCcontent(ctx *CcontentContext) {}
// ExitCcontent is called when production ccontent is exited.
func (s *BaseRFC5322ParserListener) ExitCcontent(ctx *CcontentContext) {}
// EnterComment is called when production comment is entered.
func (s *BaseRFC5322ParserListener) EnterComment(ctx *CommentContext) {}
// ExitComment is called when production comment is exited.
func (s *BaseRFC5322ParserListener) ExitComment(ctx *CommentContext) {}
// EnterCfws is called when production cfws is entered.
func (s *BaseRFC5322ParserListener) EnterCfws(ctx *CfwsContext) {}
// ExitCfws is called when production cfws is exited.
func (s *BaseRFC5322ParserListener) ExitCfws(ctx *CfwsContext) {}
// EnterAtext is called when production atext is entered.
func (s *BaseRFC5322ParserListener) EnterAtext(ctx *AtextContext) {}
// ExitAtext is called when production atext is exited.
func (s *BaseRFC5322ParserListener) ExitAtext(ctx *AtextContext) {}
// EnterAtom is called when production atom is entered.
func (s *BaseRFC5322ParserListener) EnterAtom(ctx *AtomContext) {}
// ExitAtom is called when production atom is exited.
func (s *BaseRFC5322ParserListener) ExitAtom(ctx *AtomContext) {}
// EnterDotAtom is called when production dotAtom is entered.
func (s *BaseRFC5322ParserListener) EnterDotAtom(ctx *DotAtomContext) {}
// ExitDotAtom is called when production dotAtom is exited.
func (s *BaseRFC5322ParserListener) ExitDotAtom(ctx *DotAtomContext) {}
// EnterQtext is called when production qtext is entered.
func (s *BaseRFC5322ParserListener) EnterQtext(ctx *QtextContext) {}
// ExitQtext is called when production qtext is exited.
func (s *BaseRFC5322ParserListener) ExitQtext(ctx *QtextContext) {}
// EnterQuotedContent is called when production quotedContent is entered.
func (s *BaseRFC5322ParserListener) EnterQuotedContent(ctx *QuotedContentContext) {}
// ExitQuotedContent is called when production quotedContent is exited.
func (s *BaseRFC5322ParserListener) ExitQuotedContent(ctx *QuotedContentContext) {}
// EnterQuotedValue is called when production quotedValue is entered.
func (s *BaseRFC5322ParserListener) EnterQuotedValue(ctx *QuotedValueContext) {}
// ExitQuotedValue is called when production quotedValue is exited.
func (s *BaseRFC5322ParserListener) ExitQuotedValue(ctx *QuotedValueContext) {}
// EnterQuotedString is called when production quotedString is entered.
func (s *BaseRFC5322ParserListener) EnterQuotedString(ctx *QuotedStringContext) {}
// ExitQuotedString is called when production quotedString is exited.
func (s *BaseRFC5322ParserListener) ExitQuotedString(ctx *QuotedStringContext) {}
// EnterWord is called when production word is entered.
func (s *BaseRFC5322ParserListener) EnterWord(ctx *WordContext) {}
// ExitWord is called when production word is exited.
func (s *BaseRFC5322ParserListener) ExitWord(ctx *WordContext) {}
// EnterDateTime is called when production dateTime is entered.
func (s *BaseRFC5322ParserListener) EnterDateTime(ctx *DateTimeContext) {}
// ExitDateTime is called when production dateTime is exited.
func (s *BaseRFC5322ParserListener) ExitDateTime(ctx *DateTimeContext) {}
// EnterDayOfweek is called when production dayOfweek is entered.
func (s *BaseRFC5322ParserListener) EnterDayOfweek(ctx *DayOfweekContext) {}
// ExitDayOfweek is called when production dayOfweek is exited.
func (s *BaseRFC5322ParserListener) ExitDayOfweek(ctx *DayOfweekContext) {}
// EnterDayName is called when production dayName is entered.
func (s *BaseRFC5322ParserListener) EnterDayName(ctx *DayNameContext) {}
// ExitDayName is called when production dayName is exited.
func (s *BaseRFC5322ParserListener) ExitDayName(ctx *DayNameContext) {}
// EnterDay is called when production day is entered.
func (s *BaseRFC5322ParserListener) EnterDay(ctx *DayContext) {}
// ExitDay is called when production day is exited.
func (s *BaseRFC5322ParserListener) ExitDay(ctx *DayContext) {}
// EnterMonth is called when production month is entered.
func (s *BaseRFC5322ParserListener) EnterMonth(ctx *MonthContext) {}
// ExitMonth is called when production month is exited.
func (s *BaseRFC5322ParserListener) ExitMonth(ctx *MonthContext) {}
// EnterYear is called when production year is entered.
func (s *BaseRFC5322ParserListener) EnterYear(ctx *YearContext) {}
// ExitYear is called when production year is exited.
func (s *BaseRFC5322ParserListener) ExitYear(ctx *YearContext) {}
// EnterHour is called when production hour is entered.
func (s *BaseRFC5322ParserListener) EnterHour(ctx *HourContext) {}
// ExitHour is called when production hour is exited.
func (s *BaseRFC5322ParserListener) ExitHour(ctx *HourContext) {}
// EnterMinute is called when production minute is entered.
func (s *BaseRFC5322ParserListener) EnterMinute(ctx *MinuteContext) {}
// ExitMinute is called when production minute is exited.
func (s *BaseRFC5322ParserListener) ExitMinute(ctx *MinuteContext) {}
// EnterSecond is called when production second is entered.
func (s *BaseRFC5322ParserListener) EnterSecond(ctx *SecondContext) {}
// ExitSecond is called when production second is exited.
func (s *BaseRFC5322ParserListener) ExitSecond(ctx *SecondContext) {}
// EnterOffset is called when production offset is entered.
func (s *BaseRFC5322ParserListener) EnterOffset(ctx *OffsetContext) {}
// ExitOffset is called when production offset is exited.
func (s *BaseRFC5322ParserListener) ExitOffset(ctx *OffsetContext) {}
// EnterZone is called when production zone is entered.
func (s *BaseRFC5322ParserListener) EnterZone(ctx *ZoneContext) {}
// ExitZone is called when production zone is exited.
func (s *BaseRFC5322ParserListener) ExitZone(ctx *ZoneContext) {}
// EnterAddress is called when production address is entered.
func (s *BaseRFC5322ParserListener) EnterAddress(ctx *AddressContext) {}
// ExitAddress is called when production address is exited.
func (s *BaseRFC5322ParserListener) ExitAddress(ctx *AddressContext) {}
// EnterMailbox is called when production mailbox is entered.
func (s *BaseRFC5322ParserListener) EnterMailbox(ctx *MailboxContext) {}
// ExitMailbox is called when production mailbox is exited.
func (s *BaseRFC5322ParserListener) ExitMailbox(ctx *MailboxContext) {}
// EnterNameAddr is called when production nameAddr is entered.
func (s *BaseRFC5322ParserListener) EnterNameAddr(ctx *NameAddrContext) {}
// ExitNameAddr is called when production nameAddr is exited.
func (s *BaseRFC5322ParserListener) ExitNameAddr(ctx *NameAddrContext) {}
// EnterAngleAddr is called when production angleAddr is entered.
func (s *BaseRFC5322ParserListener) EnterAngleAddr(ctx *AngleAddrContext) {}
// ExitAngleAddr is called when production angleAddr is exited.
func (s *BaseRFC5322ParserListener) ExitAngleAddr(ctx *AngleAddrContext) {}
// EnterGroup is called when production group is entered.
func (s *BaseRFC5322ParserListener) EnterGroup(ctx *GroupContext) {}
// ExitGroup is called when production group is exited.
func (s *BaseRFC5322ParserListener) ExitGroup(ctx *GroupContext) {}
// EnterDisplayName is called when production displayName is entered.
func (s *BaseRFC5322ParserListener) EnterDisplayName(ctx *DisplayNameContext) {}
// ExitDisplayName is called when production displayName is exited.
func (s *BaseRFC5322ParserListener) ExitDisplayName(ctx *DisplayNameContext) {}
// EnterMailboxList is called when production mailboxList is entered.
func (s *BaseRFC5322ParserListener) EnterMailboxList(ctx *MailboxListContext) {}
// ExitMailboxList is called when production mailboxList is exited.
func (s *BaseRFC5322ParserListener) ExitMailboxList(ctx *MailboxListContext) {}
// EnterAddressList is called when production addressList is entered.
func (s *BaseRFC5322ParserListener) EnterAddressList(ctx *AddressListContext) {}
// ExitAddressList is called when production addressList is exited.
func (s *BaseRFC5322ParserListener) ExitAddressList(ctx *AddressListContext) {}
// EnterGroupList is called when production groupList is entered.
func (s *BaseRFC5322ParserListener) EnterGroupList(ctx *GroupListContext) {}
// ExitGroupList is called when production groupList is exited.
func (s *BaseRFC5322ParserListener) ExitGroupList(ctx *GroupListContext) {}
// EnterAddrSpec is called when production addrSpec is entered.
func (s *BaseRFC5322ParserListener) EnterAddrSpec(ctx *AddrSpecContext) {}
// ExitAddrSpec is called when production addrSpec is exited.
func (s *BaseRFC5322ParserListener) ExitAddrSpec(ctx *AddrSpecContext) {}
// EnterLocalPart is called when production localPart is entered.
func (s *BaseRFC5322ParserListener) EnterLocalPart(ctx *LocalPartContext) {}
// ExitLocalPart is called when production localPart is exited.
func (s *BaseRFC5322ParserListener) ExitLocalPart(ctx *LocalPartContext) {}
// EnterPort is called when production port is entered.
func (s *BaseRFC5322ParserListener) EnterPort(ctx *PortContext) {}
// ExitPort is called when production port is exited.
func (s *BaseRFC5322ParserListener) ExitPort(ctx *PortContext) {}
// EnterDomain is called when production domain is entered.
func (s *BaseRFC5322ParserListener) EnterDomain(ctx *DomainContext) {}
// ExitDomain is called when production domain is exited.
func (s *BaseRFC5322ParserListener) ExitDomain(ctx *DomainContext) {}
// EnterDomainLiteral is called when production domainLiteral is entered.
func (s *BaseRFC5322ParserListener) EnterDomainLiteral(ctx *DomainLiteralContext) {}
// ExitDomainLiteral is called when production domainLiteral is exited.
func (s *BaseRFC5322ParserListener) ExitDomainLiteral(ctx *DomainLiteralContext) {}
// EnterDtext is called when production dtext is entered.
func (s *BaseRFC5322ParserListener) EnterDtext(ctx *DtextContext) {}
// ExitDtext is called when production dtext is exited.
func (s *BaseRFC5322ParserListener) ExitDtext(ctx *DtextContext) {}
// EnterObsNoWSCTL is called when production obsNoWSCTL is entered.
func (s *BaseRFC5322ParserListener) EnterObsNoWSCTL(ctx *ObsNoWSCTLContext) {}
// ExitObsNoWSCTL is called when production obsNoWSCTL is exited.
func (s *BaseRFC5322ParserListener) ExitObsNoWSCTL(ctx *ObsNoWSCTLContext) {}
// EnterObsCtext is called when production obsCtext is entered.
func (s *BaseRFC5322ParserListener) EnterObsCtext(ctx *ObsCtextContext) {}
// ExitObsCtext is called when production obsCtext is exited.
func (s *BaseRFC5322ParserListener) ExitObsCtext(ctx *ObsCtextContext) {}
// EnterObsQtext is called when production obsQtext is entered.
func (s *BaseRFC5322ParserListener) EnterObsQtext(ctx *ObsQtextContext) {}
// ExitObsQtext is called when production obsQtext is exited.
func (s *BaseRFC5322ParserListener) ExitObsQtext(ctx *ObsQtextContext) {}
// EnterObsQP is called when production obsQP is entered.
func (s *BaseRFC5322ParserListener) EnterObsQP(ctx *ObsQPContext) {}
// ExitObsQP is called when production obsQP is exited.
func (s *BaseRFC5322ParserListener) ExitObsQP(ctx *ObsQPContext) {}
// EnterObsFWS is called when production obsFWS is entered.
func (s *BaseRFC5322ParserListener) EnterObsFWS(ctx *ObsFWSContext) {}
// ExitObsFWS is called when production obsFWS is exited.
func (s *BaseRFC5322ParserListener) ExitObsFWS(ctx *ObsFWSContext) {}
// EnterObsZone is called when production obsZone is entered.
func (s *BaseRFC5322ParserListener) EnterObsZone(ctx *ObsZoneContext) {}
// ExitObsZone is called when production obsZone is exited.
func (s *BaseRFC5322ParserListener) ExitObsZone(ctx *ObsZoneContext) {}
// EnterObsAngleAddr is called when production obsAngleAddr is entered.
func (s *BaseRFC5322ParserListener) EnterObsAngleAddr(ctx *ObsAngleAddrContext) {}
// ExitObsAngleAddr is called when production obsAngleAddr is exited.
func (s *BaseRFC5322ParserListener) ExitObsAngleAddr(ctx *ObsAngleAddrContext) {}
// EnterObsRoute is called when production obsRoute is entered.
func (s *BaseRFC5322ParserListener) EnterObsRoute(ctx *ObsRouteContext) {}
// ExitObsRoute is called when production obsRoute is exited.
func (s *BaseRFC5322ParserListener) ExitObsRoute(ctx *ObsRouteContext) {}
// EnterObsDomainList is called when production obsDomainList is entered.
func (s *BaseRFC5322ParserListener) EnterObsDomainList(ctx *ObsDomainListContext) {}
// ExitObsDomainList is called when production obsDomainList is exited.
func (s *BaseRFC5322ParserListener) ExitObsDomainList(ctx *ObsDomainListContext) {}
// EnterObsMboxList is called when production obsMboxList is entered.
func (s *BaseRFC5322ParserListener) EnterObsMboxList(ctx *ObsMboxListContext) {}
// ExitObsMboxList is called when production obsMboxList is exited.
func (s *BaseRFC5322ParserListener) ExitObsMboxList(ctx *ObsMboxListContext) {}
// EnterObsAddrList is called when production obsAddrList is entered.
func (s *BaseRFC5322ParserListener) EnterObsAddrList(ctx *ObsAddrListContext) {}
// ExitObsAddrList is called when production obsAddrList is exited.
func (s *BaseRFC5322ParserListener) ExitObsAddrList(ctx *ObsAddrListContext) {}
// EnterObsGroupList is called when production obsGroupList is entered.
func (s *BaseRFC5322ParserListener) EnterObsGroupList(ctx *ObsGroupListContext) {}
// ExitObsGroupList is called when production obsGroupList is exited.
func (s *BaseRFC5322ParserListener) ExitObsGroupList(ctx *ObsGroupListContext) {}
// EnterObsLocalPart is called when production obsLocalPart is entered.
func (s *BaseRFC5322ParserListener) EnterObsLocalPart(ctx *ObsLocalPartContext) {}
// ExitObsLocalPart is called when production obsLocalPart is exited.
func (s *BaseRFC5322ParserListener) ExitObsLocalPart(ctx *ObsLocalPartContext) {}
// EnterObsDomain is called when production obsDomain is entered.
func (s *BaseRFC5322ParserListener) EnterObsDomain(ctx *ObsDomainContext) {}
// ExitObsDomain is called when production obsDomain is exited.
func (s *BaseRFC5322ParserListener) ExitObsDomain(ctx *ObsDomainContext) {}
// EnterEncodedWord is called when production encodedWord is entered.
func (s *BaseRFC5322ParserListener) EnterEncodedWord(ctx *EncodedWordContext) {}
// ExitEncodedWord is called when production encodedWord is exited.
func (s *BaseRFC5322ParserListener) ExitEncodedWord(ctx *EncodedWordContext) {}
// EnterCharset is called when production charset is entered.
func (s *BaseRFC5322ParserListener) EnterCharset(ctx *CharsetContext) {}
// ExitCharset is called when production charset is exited.
func (s *BaseRFC5322ParserListener) ExitCharset(ctx *CharsetContext) {}
// EnterEncoding is called when production encoding is entered.
func (s *BaseRFC5322ParserListener) EnterEncoding(ctx *EncodingContext) {}
// ExitEncoding is called when production encoding is exited.
func (s *BaseRFC5322ParserListener) ExitEncoding(ctx *EncodingContext) {}
// EnterToken is called when production token is entered.
func (s *BaseRFC5322ParserListener) EnterToken(ctx *TokenContext) {}
// ExitToken is called when production token is exited.
func (s *BaseRFC5322ParserListener) ExitToken(ctx *TokenContext) {}
// EnterTokenChar is called when production tokenChar is entered.
func (s *BaseRFC5322ParserListener) EnterTokenChar(ctx *TokenCharContext) {}
// ExitTokenChar is called when production tokenChar is exited.
func (s *BaseRFC5322ParserListener) ExitTokenChar(ctx *TokenCharContext) {}
// EnterEncodedText is called when production encodedText is entered.
func (s *BaseRFC5322ParserListener) EnterEncodedText(ctx *EncodedTextContext) {}
// ExitEncodedText is called when production encodedText is exited.
func (s *BaseRFC5322ParserListener) ExitEncodedText(ctx *EncodedTextContext) {}
// EnterEncodedChar is called when production encodedChar is entered.
func (s *BaseRFC5322ParserListener) EnterEncodedChar(ctx *EncodedCharContext) {}
// ExitEncodedChar is called when production encodedChar is exited.
func (s *BaseRFC5322ParserListener) ExitEncodedChar(ctx *EncodedCharContext) {}
// EnterCrlf is called when production crlf is entered.
func (s *BaseRFC5322ParserListener) EnterCrlf(ctx *CrlfContext) {}
// ExitCrlf is called when production crlf is exited.
func (s *BaseRFC5322ParserListener) ExitCrlf(ctx *CrlfContext) {}
// EnterWsp is called when production wsp is entered.
func (s *BaseRFC5322ParserListener) EnterWsp(ctx *WspContext) {}
// ExitWsp is called when production wsp is exited.
func (s *BaseRFC5322ParserListener) ExitWsp(ctx *WspContext) {}
// EnterVchar is called when production vchar is entered.
func (s *BaseRFC5322ParserListener) EnterVchar(ctx *VcharContext) {}
// ExitVchar is called when production vchar is exited.
func (s *BaseRFC5322ParserListener) ExitVchar(ctx *VcharContext) {}
// EnterAlpha is called when production alpha is entered.
func (s *BaseRFC5322ParserListener) EnterAlpha(ctx *AlphaContext) {}
// ExitAlpha is called when production alpha is exited.
func (s *BaseRFC5322ParserListener) ExitAlpha(ctx *AlphaContext) {}

View File

@ -0,0 +1,423 @@
// Copyright (c) 2020 Proton Technologies AG
//
// This file is part of ProtonMail Bridge.
//
// ProtonMail Bridge is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ProtonMail Bridge is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
// Code generated from RFC5322Parser.g4 by ANTLR 4.8. DO NOT EDIT.
package parser // RFC5322Parser
import "github.com/antlr/antlr4/runtime/Go/antlr"
// RFC5322ParserListener is a complete listener for a parse tree produced by RFC5322Parser.
type RFC5322ParserListener interface {
antlr.ParseTreeListener
// EnterQuotedChar is called when entering the quotedChar production.
EnterQuotedChar(c *QuotedCharContext)
// EnterQuotedPair is called when entering the quotedPair production.
EnterQuotedPair(c *QuotedPairContext)
// EnterFws is called when entering the fws production.
EnterFws(c *FwsContext)
// EnterCtext is called when entering the ctext production.
EnterCtext(c *CtextContext)
// EnterCcontent is called when entering the ccontent production.
EnterCcontent(c *CcontentContext)
// EnterComment is called when entering the comment production.
EnterComment(c *CommentContext)
// EnterCfws is called when entering the cfws production.
EnterCfws(c *CfwsContext)
// EnterAtext is called when entering the atext production.
EnterAtext(c *AtextContext)
// EnterAtom is called when entering the atom production.
EnterAtom(c *AtomContext)
// EnterDotAtom is called when entering the dotAtom production.
EnterDotAtom(c *DotAtomContext)
// EnterQtext is called when entering the qtext production.
EnterQtext(c *QtextContext)
// EnterQuotedContent is called when entering the quotedContent production.
EnterQuotedContent(c *QuotedContentContext)
// EnterQuotedValue is called when entering the quotedValue production.
EnterQuotedValue(c *QuotedValueContext)
// EnterQuotedString is called when entering the quotedString production.
EnterQuotedString(c *QuotedStringContext)
// EnterWord is called when entering the word production.
EnterWord(c *WordContext)
// EnterDateTime is called when entering the dateTime production.
EnterDateTime(c *DateTimeContext)
// EnterDayOfweek is called when entering the dayOfweek production.
EnterDayOfweek(c *DayOfweekContext)
// EnterDayName is called when entering the dayName production.
EnterDayName(c *DayNameContext)
// EnterDay is called when entering the day production.
EnterDay(c *DayContext)
// EnterMonth is called when entering the month production.
EnterMonth(c *MonthContext)
// EnterYear is called when entering the year production.
EnterYear(c *YearContext)
// EnterHour is called when entering the hour production.
EnterHour(c *HourContext)
// EnterMinute is called when entering the minute production.
EnterMinute(c *MinuteContext)
// EnterSecond is called when entering the second production.
EnterSecond(c *SecondContext)
// EnterOffset is called when entering the offset production.
EnterOffset(c *OffsetContext)
// EnterZone is called when entering the zone production.
EnterZone(c *ZoneContext)
// EnterAddress is called when entering the address production.
EnterAddress(c *AddressContext)
// EnterMailbox is called when entering the mailbox production.
EnterMailbox(c *MailboxContext)
// EnterNameAddr is called when entering the nameAddr production.
EnterNameAddr(c *NameAddrContext)
// EnterAngleAddr is called when entering the angleAddr production.
EnterAngleAddr(c *AngleAddrContext)
// EnterGroup is called when entering the group production.
EnterGroup(c *GroupContext)
// EnterDisplayName is called when entering the displayName production.
EnterDisplayName(c *DisplayNameContext)
// EnterMailboxList is called when entering the mailboxList production.
EnterMailboxList(c *MailboxListContext)
// EnterAddressList is called when entering the addressList production.
EnterAddressList(c *AddressListContext)
// EnterGroupList is called when entering the groupList production.
EnterGroupList(c *GroupListContext)
// EnterAddrSpec is called when entering the addrSpec production.
EnterAddrSpec(c *AddrSpecContext)
// EnterLocalPart is called when entering the localPart production.
EnterLocalPart(c *LocalPartContext)
// EnterPort is called when entering the port production.
EnterPort(c *PortContext)
// EnterDomain is called when entering the domain production.
EnterDomain(c *DomainContext)
// EnterDomainLiteral is called when entering the domainLiteral production.
EnterDomainLiteral(c *DomainLiteralContext)
// EnterDtext is called when entering the dtext production.
EnterDtext(c *DtextContext)
// EnterObsNoWSCTL is called when entering the obsNoWSCTL production.
EnterObsNoWSCTL(c *ObsNoWSCTLContext)
// EnterObsCtext is called when entering the obsCtext production.
EnterObsCtext(c *ObsCtextContext)
// EnterObsQtext is called when entering the obsQtext production.
EnterObsQtext(c *ObsQtextContext)
// EnterObsQP is called when entering the obsQP production.
EnterObsQP(c *ObsQPContext)
// EnterObsFWS is called when entering the obsFWS production.
EnterObsFWS(c *ObsFWSContext)
// EnterObsZone is called when entering the obsZone production.
EnterObsZone(c *ObsZoneContext)
// EnterObsAngleAddr is called when entering the obsAngleAddr production.
EnterObsAngleAddr(c *ObsAngleAddrContext)
// EnterObsRoute is called when entering the obsRoute production.
EnterObsRoute(c *ObsRouteContext)
// EnterObsDomainList is called when entering the obsDomainList production.
EnterObsDomainList(c *ObsDomainListContext)
// EnterObsMboxList is called when entering the obsMboxList production.
EnterObsMboxList(c *ObsMboxListContext)
// EnterObsAddrList is called when entering the obsAddrList production.
EnterObsAddrList(c *ObsAddrListContext)
// EnterObsGroupList is called when entering the obsGroupList production.
EnterObsGroupList(c *ObsGroupListContext)
// EnterObsLocalPart is called when entering the obsLocalPart production.
EnterObsLocalPart(c *ObsLocalPartContext)
// EnterObsDomain is called when entering the obsDomain production.
EnterObsDomain(c *ObsDomainContext)
// EnterEncodedWord is called when entering the encodedWord production.
EnterEncodedWord(c *EncodedWordContext)
// EnterCharset is called when entering the charset production.
EnterCharset(c *CharsetContext)
// EnterEncoding is called when entering the encoding production.
EnterEncoding(c *EncodingContext)
// EnterToken is called when entering the token production.
EnterToken(c *TokenContext)
// EnterTokenChar is called when entering the tokenChar production.
EnterTokenChar(c *TokenCharContext)
// EnterEncodedText is called when entering the encodedText production.
EnterEncodedText(c *EncodedTextContext)
// EnterEncodedChar is called when entering the encodedChar production.
EnterEncodedChar(c *EncodedCharContext)
// EnterCrlf is called when entering the crlf production.
EnterCrlf(c *CrlfContext)
// EnterWsp is called when entering the wsp production.
EnterWsp(c *WspContext)
// EnterVchar is called when entering the vchar production.
EnterVchar(c *VcharContext)
// EnterAlpha is called when entering the alpha production.
EnterAlpha(c *AlphaContext)
// ExitQuotedChar is called when exiting the quotedChar production.
ExitQuotedChar(c *QuotedCharContext)
// ExitQuotedPair is called when exiting the quotedPair production.
ExitQuotedPair(c *QuotedPairContext)
// ExitFws is called when exiting the fws production.
ExitFws(c *FwsContext)
// ExitCtext is called when exiting the ctext production.
ExitCtext(c *CtextContext)
// ExitCcontent is called when exiting the ccontent production.
ExitCcontent(c *CcontentContext)
// ExitComment is called when exiting the comment production.
ExitComment(c *CommentContext)
// ExitCfws is called when exiting the cfws production.
ExitCfws(c *CfwsContext)
// ExitAtext is called when exiting the atext production.
ExitAtext(c *AtextContext)
// ExitAtom is called when exiting the atom production.
ExitAtom(c *AtomContext)
// ExitDotAtom is called when exiting the dotAtom production.
ExitDotAtom(c *DotAtomContext)
// ExitQtext is called when exiting the qtext production.
ExitQtext(c *QtextContext)
// ExitQuotedContent is called when exiting the quotedContent production.
ExitQuotedContent(c *QuotedContentContext)
// ExitQuotedValue is called when exiting the quotedValue production.
ExitQuotedValue(c *QuotedValueContext)
// ExitQuotedString is called when exiting the quotedString production.
ExitQuotedString(c *QuotedStringContext)
// ExitWord is called when exiting the word production.
ExitWord(c *WordContext)
// ExitDateTime is called when exiting the dateTime production.
ExitDateTime(c *DateTimeContext)
// ExitDayOfweek is called when exiting the dayOfweek production.
ExitDayOfweek(c *DayOfweekContext)
// ExitDayName is called when exiting the dayName production.
ExitDayName(c *DayNameContext)
// ExitDay is called when exiting the day production.
ExitDay(c *DayContext)
// ExitMonth is called when exiting the month production.
ExitMonth(c *MonthContext)
// ExitYear is called when exiting the year production.
ExitYear(c *YearContext)
// ExitHour is called when exiting the hour production.
ExitHour(c *HourContext)
// ExitMinute is called when exiting the minute production.
ExitMinute(c *MinuteContext)
// ExitSecond is called when exiting the second production.
ExitSecond(c *SecondContext)
// ExitOffset is called when exiting the offset production.
ExitOffset(c *OffsetContext)
// ExitZone is called when exiting the zone production.
ExitZone(c *ZoneContext)
// ExitAddress is called when exiting the address production.
ExitAddress(c *AddressContext)
// ExitMailbox is called when exiting the mailbox production.
ExitMailbox(c *MailboxContext)
// ExitNameAddr is called when exiting the nameAddr production.
ExitNameAddr(c *NameAddrContext)
// ExitAngleAddr is called when exiting the angleAddr production.
ExitAngleAddr(c *AngleAddrContext)
// ExitGroup is called when exiting the group production.
ExitGroup(c *GroupContext)
// ExitDisplayName is called when exiting the displayName production.
ExitDisplayName(c *DisplayNameContext)
// ExitMailboxList is called when exiting the mailboxList production.
ExitMailboxList(c *MailboxListContext)
// ExitAddressList is called when exiting the addressList production.
ExitAddressList(c *AddressListContext)
// ExitGroupList is called when exiting the groupList production.
ExitGroupList(c *GroupListContext)
// ExitAddrSpec is called when exiting the addrSpec production.
ExitAddrSpec(c *AddrSpecContext)
// ExitLocalPart is called when exiting the localPart production.
ExitLocalPart(c *LocalPartContext)
// ExitPort is called when exiting the port production.
ExitPort(c *PortContext)
// ExitDomain is called when exiting the domain production.
ExitDomain(c *DomainContext)
// ExitDomainLiteral is called when exiting the domainLiteral production.
ExitDomainLiteral(c *DomainLiteralContext)
// ExitDtext is called when exiting the dtext production.
ExitDtext(c *DtextContext)
// ExitObsNoWSCTL is called when exiting the obsNoWSCTL production.
ExitObsNoWSCTL(c *ObsNoWSCTLContext)
// ExitObsCtext is called when exiting the obsCtext production.
ExitObsCtext(c *ObsCtextContext)
// ExitObsQtext is called when exiting the obsQtext production.
ExitObsQtext(c *ObsQtextContext)
// ExitObsQP is called when exiting the obsQP production.
ExitObsQP(c *ObsQPContext)
// ExitObsFWS is called when exiting the obsFWS production.
ExitObsFWS(c *ObsFWSContext)
// ExitObsZone is called when exiting the obsZone production.
ExitObsZone(c *ObsZoneContext)
// ExitObsAngleAddr is called when exiting the obsAngleAddr production.
ExitObsAngleAddr(c *ObsAngleAddrContext)
// ExitObsRoute is called when exiting the obsRoute production.
ExitObsRoute(c *ObsRouteContext)
// ExitObsDomainList is called when exiting the obsDomainList production.
ExitObsDomainList(c *ObsDomainListContext)
// ExitObsMboxList is called when exiting the obsMboxList production.
ExitObsMboxList(c *ObsMboxListContext)
// ExitObsAddrList is called when exiting the obsAddrList production.
ExitObsAddrList(c *ObsAddrListContext)
// ExitObsGroupList is called when exiting the obsGroupList production.
ExitObsGroupList(c *ObsGroupListContext)
// ExitObsLocalPart is called when exiting the obsLocalPart production.
ExitObsLocalPart(c *ObsLocalPartContext)
// ExitObsDomain is called when exiting the obsDomain production.
ExitObsDomain(c *ObsDomainContext)
// ExitEncodedWord is called when exiting the encodedWord production.
ExitEncodedWord(c *EncodedWordContext)
// ExitCharset is called when exiting the charset production.
ExitCharset(c *CharsetContext)
// ExitEncoding is called when exiting the encoding production.
ExitEncoding(c *EncodingContext)
// ExitToken is called when exiting the token production.
ExitToken(c *TokenContext)
// ExitTokenChar is called when exiting the tokenChar production.
ExitTokenChar(c *TokenCharContext)
// ExitEncodedText is called when exiting the encodedText production.
ExitEncodedText(c *EncodedTextContext)
// ExitEncodedChar is called when exiting the encodedChar production.
ExitEncodedChar(c *EncodedCharContext)
// ExitCrlf is called when exiting the crlf production.
ExitCrlf(c *CrlfContext)
// ExitWsp is called when exiting the wsp production.
ExitWsp(c *WspContext)
// ExitVchar is called when exiting the vchar production.
ExitVchar(c *VcharContext)
// ExitAlpha is called when exiting the alpha production.
ExitAlpha(c *AlphaContext)
}