Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
fja
eval
Commits
0265e6dc
Commit
0265e6dc
authored
Jun 08, 2021
by
Vladimír Štill
Browse files
lib: Update parser to handle init/final as state names
parent
a9b22c1e
Pipeline
#95038
passed with stage
in 1 minute and 40 seconds
Changes
5
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib/parsing/DFA.g4
View file @
0265e6dc
...
...
@@ -10,7 +10,7 @@ production: LEFT_PARENTHESIS statename COMMA statename RIGHT_PARENTHESIS EQUALS
final: FINAL EQUALS LEFT_BRACKET (statename (COMMA statename)* | ) RIGHT_BRACKET;
statename: (STATE | QUOTE anyvalue+ QUOTE);
statename: (
INIT | FINAL |
STATE | QUOTE anyvalue+ QUOTE);
comment: (HASH anyvalue* | );
...
...
lib/parsing/DFAParser.py
View file @
0265e6dc
...
...
@@ -12,31 +12,32 @@ else:
def
serializedATN
():
with
StringIO
()
as
buf
:
buf
.
write
(
"
\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\17
"
)
buf
.
write
(
"
P
\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b
"
)
buf
.
write
(
"
R
\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b
"
)
buf
.
write
(
"
\t\b\3\2\3\2\7\2\23\n\2\f\2\16\2\26\13\2\3\2\3\2\3\2\3
"
)
buf
.
write
(
"
\3\3\3\3\3\3\3\5\3\37\n\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4
"
)
buf
.
write
(
"
\3\4\3\5\3\5\3\5\3\5\3\5\3\5\7\5
/
\n\5\f\5\16\5\62\13\5
"
)
buf
.
write
(
"
\3\5\5\5\65\n\5\3\5\3\5\3\6\3\6\3\6\6\6
<
\n\6\r\6\16\6
"
)
buf
.
write
(
"=
\3\6\3\6\5\6
B
\n\6\3\7\3\7\7\7
F
\n\7\f\7\16\7
I
\13\7\3\7
"
)
buf
.
write
(
"
\5\7
L
\n\7\3\b\3\b\3\b\2\2\t\2\4\6\b\n\f\16\2\3\4\2\3\f
"
)
buf
.
write
(
"
\17\17\2
P
\2\20\3\2\2\2\4\36\3\2\2\2\6
\3\2\2\2\b
(
\3\2
"
)
buf
.
write
(
"
\2\2\n
A
\3\2\2\2\f
K
\3\2\2\2\16
M
\3\2\2\2\20\24\5\4\3\2\21
"
)
buf
.
write
(
"
\23\5\6\4\2\22\21\3\2\2\2\23\26\3\2\2\2\24\22\3\2\2\2
"
)
buf
.
write
(
"
\24\25\3\2\2\2\25\27\3\2\2\2\26\24\3\2\2\2\27\30\5\b\5
"
)
buf
.
write
(
"
\2\30\31\5\f\7\2\31\3\3\2\2\2\32\33\7\3\2\2\33\34\7\4
"
)
buf
.
write
(
"
\2\2\34\37\5\n\6\2\35\37\3\2\2\2\36\32\3\2\2\2\36\35\3
"
)
buf
.
write
(
"
\2\2\2\37\5\3\2\2\2
!
\7\5\2\2
!
\"\5\n\6\2\"
#
\7\t\2\2
#$"
)
buf
.
write
(
"
\5\n\6\2
$%
\7\6\2\2
%&
\7\4\2\2
&
\'\5\n\6\2\'\7\3\2\2\2
()"
)
buf
.
write
(
"
\7\n\2\2
)*
\7\4\2\2
*
\64\7\7\2\2
+
\60\5\n\6\2
,-
\7\t\2\2
-"
)
buf
.
write
(
"/
\5\n\6\2
.,
\3\2\2\2
/
\62\3\2\2\2\60
.
\3\2\2\2\60\61\3\2
"
)
buf
.
write
(
"
\2\2\61\65\3\2\2\2\62\60\3\2\2\2\63\65\3\2\2\2\64
+
\3\2
"
)
buf
.
write
(
"
\2\2\64\63\3\2\2\2\65\66\3\2\2\2\66\67\7\b\2\2\67\t\3
"
)
buf
.
write
(
"
\2\2\2
8B
\7\13\2\2
9;
\7\r\2\2
:<
\5\16\b\2
;:
\3\2\2\2
<=
\3\2
"
)
buf
.
write
(
"
\2\2
=;
\3\2\2\2
=>
\3\2\2\2
>?
\3\2\2\2
?@
\7\r\2\2
@B
\3\2\2\2
"
)
buf
.
write
(
"A8
\3\2\2\2
A9
\3\2\2\2
B
\13\3\2\2\2
CG
\7\f\2\2
DF
\5\16\b\2
"
)
buf
.
write
(
"ED
\3\2\2\2
FI
\3\2\2\2
GE
\3\2\2\2
GH
\3\2\2\2
HL
\3\2\2\2
IG
\3
"
)
buf
.
write
(
"
\2\2\2
JL
\3\2\2\2
KC
\3\2\2\2
KJ
\3\2\2\2
L
\r\3\2\2\2
MN
\t\2
"
)
buf
.
write
(
"
\2\2
N
\17\3\2\2\2\n\24\36\60\64
=AGK"
)
buf
.
write
(
"
\3\5\5\5\65\n\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\6\6
>
\n\6\r
"
)
buf
.
write
(
"
\6\16\6
?
\3\6\3\6\5\6
D
\n\6\3\7\3\7\7\7
H
\n\7\f\7\16\7
K
\13
"
)
buf
.
write
(
"
\7\3\7\5\7
N
\n\7\3\b\3\b\3\b\2\2\t\2\4\6\b\n\f\16\2\3\4
"
)
buf
.
write
(
"
\2\3\f\17\17\2
T
\2\20\3\2\2\2\4\36\3\2\2\2\6
\3\2\2\2\b
"
)
buf
.
write
(
"(
\3\2\2\2\n
C
\3\2\2\2\f
M
\3\2\2\2\16
O
\3\2\2\2\20\24\5\4
"
)
buf
.
write
(
"
\3\2\21\23\5\6\4\2\22\21\3\2\2\2\23\26\3\2\2\2\24\22\3
"
)
buf
.
write
(
"
\2\2\2\24\25\3\2\2\2\25\27\3\2\2\2\26\24\3\2\2\2\27\30
"
)
buf
.
write
(
"
\5\b\5\2\30\31\5\f\7\2\31\3\3\2\2\2\32\33\7\3\2\2\33\34
"
)
buf
.
write
(
"
\7\4\2\2\34\37\5\n\6\2\35\37\3\2\2\2\36\32\3\2\2\2\36
"
)
buf
.
write
(
"
\35\3\2\2\2\37\5\3\2\2\2
!
\7\5\2\2
!
\"\5\n\6\2\"
#
\7\t\2
"
)
buf
.
write
(
"
\2
#$
\5\n\6\2
$%
\7\6\2\2
%&
\7\4\2\2
&
\'\5\n\6\2\'\7\3\2\2
"
)
buf
.
write
(
"
\2
()
\7\n\2\2
)*
\7\4\2\2
*
\64\7\7\2\2
+
\60\5\n\6\2
,-
\7\t\2
"
)
buf
.
write
(
"
\2
-/
\5\n\6\2
.,
\3\2\2\2
/
\62\3\2\2\2\60
.
\3\2\2\2\60\61\3
"
)
buf
.
write
(
"
\2\2\2\61\65\3\2\2\2\62\60\3\2\2\2\63\65\3\2\2\2\64
+
\3
"
)
buf
.
write
(
"
\2\2\2\64\63\3\2\2\2\65\66\3\2\2\2\66\67\7\b\2\2\67\t
"
)
buf
.
write
(
"
\3\2\2\2
8D
\7\3\2\2
9D
\7\n\2\2
:D
\7\13\2\2
;=
\7\r\2\2
<>
\5
"
)
buf
.
write
(
"
\16\b\2
=<
\3\2\2\2
>?
\3\2\2\2
?=
\3\2\2\2
?@
\3\2\2\2
@A
\3\2
"
)
buf
.
write
(
"
\2\2
AB
\7\r\2\2
BD
\3\2\2\2
C8
\3\2\2\2
C9
\3\2\2\2
C:
\3\2\2\2
"
)
buf
.
write
(
"C;
\3\2\2\2
D
\13\3\2\2\2
EI
\7\f\2\2
FH
\5\16\b\2
GF
\3\2\2\2
"
)
buf
.
write
(
"HK
\3\2\2\2
IG
\3\2\2\2
IJ
\3\2\2\2
JN
\3\2\2\2
KI
\3\2\2\2
LN
\3
"
)
buf
.
write
(
"
\2\2\2
ME
\3\2\2\2
ML
\3\2\2\2
N
\r\3\2\2\2
OP
\t\2\2\2
P
\17\3
"
)
buf
.
write
(
"
\2\2\2\n\24\36\60\64
?CIM"
)
return
buf
.
getvalue
()
...
...
@@ -381,7 +382,7 @@ class DFAParser ( Parser ):
self
.
state
=
50
self
.
_errHandler
.
sync
(
self
)
token
=
self
.
_input
.
LA
(
1
)
if
token
in
[
DFAParser
.
STATE
,
DFAParser
.
QUOTE
]:
if
token
in
[
DFAParser
.
INIT
,
DFAParser
.
FINAL
,
DFAParser
.
STATE
,
DFAParser
.
QUOTE
]:
self
.
state
=
41
self
.
statename
()
self
.
state
=
46
...
...
@@ -420,6 +421,12 @@ class DFAParser ( Parser ):
super
().
__init__
(
parent
,
invokingState
)
self
.
parser
=
parser
def
INIT
(
self
):
return
self
.
getToken
(
DFAParser
.
INIT
,
0
)
def
FINAL
(
self
):
return
self
.
getToken
(
DFAParser
.
FINAL
,
0
)
def
STATE
(
self
):
return
self
.
getToken
(
DFAParser
.
STATE
,
0
)
...
...
@@ -463,29 +470,37 @@ class DFAParser ( Parser ):
self
.
_la
=
0
# Token type
try
:
self
.
enterOuterAlt
(
localctx
,
1
)
self
.
state
=
6
3
self
.
state
=
6
5
self
.
_errHandler
.
sync
(
self
)
token
=
self
.
_input
.
LA
(
1
)
if
token
in
[
DFAParser
.
STATE
]:
if
token
in
[
DFAParser
.
INIT
]:
self
.
state
=
54
self
.
match
(
DFAParser
.
INIT
)
pass
elif
token
in
[
DFAParser
.
FINAL
]:
self
.
state
=
55
self
.
match
(
DFAParser
.
FINAL
)
pass
elif
token
in
[
DFAParser
.
STATE
]:
self
.
state
=
56
self
.
match
(
DFAParser
.
STATE
)
pass
elif
token
in
[
DFAParser
.
QUOTE
]:
self
.
state
=
5
5
self
.
state
=
5
7
self
.
match
(
DFAParser
.
QUOTE
)
self
.
state
=
5
7
self
.
state
=
5
9
self
.
_errHandler
.
sync
(
self
)
_la
=
self
.
_input
.
LA
(
1
)
while
True
:
self
.
state
=
5
6
self
.
state
=
5
8
self
.
anyvalue
()
self
.
state
=
59
self
.
state
=
61
self
.
_errHandler
.
sync
(
self
)
_la
=
self
.
_input
.
LA
(
1
)
if
not
((((
_la
)
&
~
0x3f
)
==
0
and
((
1
<<
_la
)
&
((
1
<<
DFAParser
.
INIT
)
|
(
1
<<
DFAParser
.
EQUALS
)
|
(
1
<<
DFAParser
.
LEFT_PARENTHESIS
)
|
(
1
<<
DFAParser
.
RIGHT_PARENTHESIS
)
|
(
1
<<
DFAParser
.
LEFT_BRACKET
)
|
(
1
<<
DFAParser
.
RIGHT_BRACKET
)
|
(
1
<<
DFAParser
.
COMMA
)
|
(
1
<<
DFAParser
.
FINAL
)
|
(
1
<<
DFAParser
.
STATE
)
|
(
1
<<
DFAParser
.
HASH
)
|
(
1
<<
DFAParser
.
ANYCHAR
)))
!=
0
)):
break
self
.
state
=
6
1
self
.
state
=
6
3
self
.
match
(
DFAParser
.
QUOTE
)
pass
else
:
...
...
@@ -544,19 +559,19 @@ class DFAParser ( Parser ):
self
.
_la
=
0
# Token type
try
:
self
.
enterOuterAlt
(
localctx
,
1
)
self
.
state
=
7
3
self
.
state
=
7
5
self
.
_errHandler
.
sync
(
self
)
token
=
self
.
_input
.
LA
(
1
)
if
token
in
[
DFAParser
.
HASH
]:
self
.
state
=
6
5
self
.
state
=
6
7
self
.
match
(
DFAParser
.
HASH
)
self
.
state
=
69
self
.
state
=
71
self
.
_errHandler
.
sync
(
self
)
_la
=
self
.
_input
.
LA
(
1
)
while
(((
_la
)
&
~
0x3f
)
==
0
and
((
1
<<
_la
)
&
((
1
<<
DFAParser
.
INIT
)
|
(
1
<<
DFAParser
.
EQUALS
)
|
(
1
<<
DFAParser
.
LEFT_PARENTHESIS
)
|
(
1
<<
DFAParser
.
RIGHT_PARENTHESIS
)
|
(
1
<<
DFAParser
.
LEFT_BRACKET
)
|
(
1
<<
DFAParser
.
RIGHT_BRACKET
)
|
(
1
<<
DFAParser
.
COMMA
)
|
(
1
<<
DFAParser
.
FINAL
)
|
(
1
<<
DFAParser
.
STATE
)
|
(
1
<<
DFAParser
.
HASH
)
|
(
1
<<
DFAParser
.
ANYCHAR
)))
!=
0
):
self
.
state
=
6
6
self
.
state
=
6
8
self
.
anyvalue
()
self
.
state
=
7
1
self
.
state
=
7
3
self
.
_errHandler
.
sync
(
self
)
_la
=
self
.
_input
.
LA
(
1
)
...
...
@@ -642,7 +657,7 @@ class DFAParser ( Parser ):
self
.
_la
=
0
# Token type
try
:
self
.
enterOuterAlt
(
localctx
,
1
)
self
.
state
=
7
5
self
.
state
=
7
7
_la
=
self
.
_input
.
LA
(
1
)
if
not
((((
_la
)
&
~
0x3f
)
==
0
and
((
1
<<
_la
)
&
((
1
<<
DFAParser
.
INIT
)
|
(
1
<<
DFAParser
.
EQUALS
)
|
(
1
<<
DFAParser
.
LEFT_PARENTHESIS
)
|
(
1
<<
DFAParser
.
RIGHT_PARENTHESIS
)
|
(
1
<<
DFAParser
.
LEFT_BRACKET
)
|
(
1
<<
DFAParser
.
RIGHT_BRACKET
)
|
(
1
<<
DFAParser
.
COMMA
)
|
(
1
<<
DFAParser
.
FINAL
)
|
(
1
<<
DFAParser
.
STATE
)
|
(
1
<<
DFAParser
.
HASH
)
|
(
1
<<
DFAParser
.
ANYCHAR
)))
!=
0
)):
self
.
_errHandler
.
recoverInline
(
self
)
...
...
lib/parsing/NFA.g4
View file @
0265e6dc
...
...
@@ -12,7 +12,7 @@ stateset: LEFT_BRACKET (statename (COMMA statename)* | ) RIGHT_BRACKET;
final: FINAL EQUALS stateset;
statename: (STATE | QUOTE anyvalue+ QUOTE);
statename: (STATE |
INIT | FINAL |
QUOTE anyvalue+ QUOTE);
comment: (HASH anyvalue* | );
...
...
lib/parsing/NFAParser.py
View file @
0265e6dc
...
...
@@ -12,33 +12,34 @@ else:
def
serializedATN
():
with
StringIO
()
as
buf
:
buf
.
write
(
"
\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\20
"
)
buf
.
write
(
"
W
\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b
"
)
buf
.
write
(
"
Y
\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b
"
)
buf
.
write
(
"
\t\b\4\t\t\t\3\2\3\2\7\2\25\n\2\f\2\16\2\30\13\2\3\2\3
"
)
buf
.
write
(
"
\2\3\2\3\3\3\3\3\3\3\3\5\3
!
\n\3\3\4\3\4\3\4\3\4\3\4\5
"
)
buf
.
write
(
"
\4
(
\n\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\7\5\62\n\5\f\5
"
)
buf
.
write
(
"
\16\5\65\13\5\3\5\5\5
8
\n\5\3\5\3\5\3\6\3\6\3\6\3\6\3\7
"
)
buf
.
write
(
"
\3\7\3\7\6\7
C
\n\7\r\7\16\7
D
\3\7\3\7\5\7
I
\n\7\3\b\3\b\7
"
)
buf
.
write
(
"
\b
M
\n\b\f\b\16\b
P
\13\b\3\b\5\b
S
\n\b\3\t\3\t\3\t\2\2\n
"
)
buf
.
write
(
"
\2\4\6\b\n\f\16\20\2\3\5\2\3\n\f\r\20\20\2
W
\2\22\3\2\2
"
)
buf
.
write
(
"
\2\4
\3\2\2\2\6\"\3\2\2\2\b
-
\3\2\2\2\n
;
\3\2\2\2\f
H
\3\2
"
)
buf
.
write
(
"
\2\2\16
R
\3\2\2\2\20
T
\3\2\2\2\22\26\5\4\3\2\23\25\5\6\4
"
)
buf
.
write
(
"
\2\24\23\3\2\2\2\25\30\3\2\2\2\26\24\3\2\2\2\26\27\3\2
"
)
buf
.
write
(
"
\2\2\27\31\3\2\2\2\30\26\3\2\2\2\31\32\5\n\6\2\32\33\5
"
)
buf
.
write
(
"
\16\b\2\33\3\3\2\2\2\34\35\7\3\2\2\35\36\7\4\2\2\36
!
\5
"
)
buf
.
write
(
"
\f\7\2\37
!
\3\2\2\2
\34\3\2\2\2
\37\3\2\2\2
!
\5\3\2\2\2
"
)
buf
.
write
(
"
\"
#
\7\5\2\2
#$
\5\f\7\2
$
\'\7\t\2\2
%(
\5\f\7\2
&(
\7\13\2\2
"
)
buf
.
write
(
"
\'
%
\3\2\2\2\'
&
\3\2\2\2
()
\3\2\2\2
)*
\7\6\2\2
*+
\7\4\2\2
+"
)
buf
.
write
(
",
\5\b\5\2
,
\7\3\2\2\2
-
\67\7\7\2\2
.
\63\5\f\7\2
/
\60\7\t\2
"
)
buf
.
write
(
"
\2\60\62\5\f\7\2\61
/
\3\2\2\2\62\65\3\2\2\2\63\61\3\2\2
"
)
buf
.
write
(
"
\2\63\64\3\2\2\2\64
8
\3\2\2\2\65\63\3\2\2\2\66
8
\3\2\2\2
"
)
buf
.
write
(
"
\67
.
\3\2\2\2\67\66\3\2\2\2
89
\3\2\2\2
9:
\7\b\2\2
:
\t\3\2
"
)
buf
.
write
(
"
\2\2
;<
\7\n\2\2
<=
\7\4\2\2
=>
\5\b\5\2
>
\13\3\2\2\2
?I
\7\f\2
"
)
buf
.
write
(
"
\2
@B
\7\16\2\2
AC
\5\20\t\2
BA
\3\2\2\2
CD
\3\2\2\2
DB
\3\2\2\2
"
)
buf
.
write
(
"DE
\3\2\2\2
EF
\3\2\2\2
FG
\7\16\2\2
GI
\3\2\2\2
H?
\3\2\2\2
H@"
)
buf
.
write
(
"
\3\2\2\2
I
\r\3\2\2\2
JN
\7\r\2\2
KM
\5\20\t\2
LK
\3\2\2\2
MP
\3
"
)
buf
.
write
(
"
\2\2\2
NL
\3\2\2\2
NO
\3\2\2\2
OS
\3\2\2\2
PN
\3\2\2\2
QS
\3\2\2
"
)
buf
.
write
(
"
\2
RJ
\3\2\2\2
RQ
\3\2\2\2
S
\17\3\2\2\2
TU
\t\2\2\2
U
\21\3\2\2
"
)
buf
.
write
(
"
\2\13\26
\'\63\67
DHNR"
)
buf
.
write
(
"
\3\7\3\7\3\7\3\7\6\7
E
\n\7\r\7\16\7
F
\3\7\3\7\5\7
K
\n\7\3
"
)
buf
.
write
(
"
\b\3\b\7\b
O
\n\b\f\b\16\b
R
\13\b\3\b\5\b
U
\n\b\3\t\3\t\3
"
)
buf
.
write
(
"
\t\2\2\n\2\4\6\b\n\f\16\20\2\3\5\2\3\n\f\r\20\20\2
[
\2
"
)
buf
.
write
(
"
\22\3\2\2\2\4
\3\2\2\2\6\"\3\2\2\2\b
-
\3\2\2\2\n
;
\3\2\2
"
)
buf
.
write
(
"
\2\f
J
\3\2\2\2\16
T
\3\2\2\2\20
V
\3\2\2\2\22\26\5\4\3\2\23
"
)
buf
.
write
(
"
\25\5\6\4\2\24\23\3\2\2\2\25\30\3\2\2\2\26\24\3\2\2\2
"
)
buf
.
write
(
"
\26\27\3\2\2\2\27\31\3\2\2\2\30\26\3\2\2\2\31\32\5\n\6
"
)
buf
.
write
(
"
\2\32\33\5\16\b\2\33\3\3\2\2\2\34\35\7\3\2\2\35\36\7\4
"
)
buf
.
write
(
"
\2\2\36
!
\5\f\7\2\37
!
\3\2\2\2
\34\3\2\2\2
\37\3\2\2\2
!"
)
buf
.
write
(
"
\5\3\2\2\2\"
#
\7\5\2\2
#$
\5\f\7\2
$
\'\7\t\2\2
%(
\5\f\7\2
&"
)
buf
.
write
(
"(
\7\13\2\2\'
%
\3\2\2\2\'
&
\3\2\2\2
()
\3\2\2\2
)*
\7\6\2\2
*"
)
buf
.
write
(
"+
\7\4\2\2
+,
\5\b\5\2
,
\7\3\2\2\2
-
\67\7\7\2\2
.
\63\5\f\7\2
"
)
buf
.
write
(
"/
\60\7\t\2\2\60\62\5\f\7\2\61
/
\3\2\2\2\62\65\3\2\2\2\63
"
)
buf
.
write
(
"
\61\3\2\2\2\63\64\3\2\2\2\64
8
\3\2\2\2\65\63\3\2\2\2\66
"
)
buf
.
write
(
"8
\3\2\2\2\67
.
\3\2\2\2\67\66\3\2\2\2
89
\3\2\2\2
9:
\7\b\2
"
)
buf
.
write
(
"
\2
:
\t\3\2\2\2
;<
\7\n\2\2
<=
\7\4\2\2
=>
\5\b\5\2
>
\13\3\2\2
"
)
buf
.
write
(
"
\2
?K
\7\f\2\2
@K
\7\3\2\2
AK
\7\n\2\2
BD
\7\16\2\2
CE
\5\20\t\2
"
)
buf
.
write
(
"DC
\3\2\2\2
EF
\3\2\2\2
FD
\3\2\2\2
FG
\3\2\2\2
GH
\3\2\2\2
HI
\7
"
)
buf
.
write
(
"
\16\2\2
IK
\3\2\2\2
J?
\3\2\2\2
J@
\3\2\2\2
JA
\3\2\2\2
JB
\3\2
"
)
buf
.
write
(
"
\2\2
K
\r\3\2\2\2
LP
\7\r\2\2
MO
\5\20\t\2
NM
\3\2\2\2
OR
\3\2\2
"
)
buf
.
write
(
"
\2
PN
\3\2\2\2
PQ
\3\2\2\2
QU
\3\2\2\2
RP
\3\2\2\2
SU
\3\2\2\2
T"
)
buf
.
write
(
"L
\3\2\2\2
TS
\3\2\2\2
U
\17\3\2\2\2
VW
\t\2\2\2
W
\21\3\2\2\2
"
)
buf
.
write
(
"
\13\26
\'\63\67
FJPT"
)
return
buf
.
getvalue
()
...
...
@@ -311,7 +312,7 @@ class NFAParser ( Parser ):
self
.
state
=
37
self
.
_errHandler
.
sync
(
self
)
token
=
self
.
_input
.
LA
(
1
)
if
token
in
[
NFAParser
.
STATE
,
NFAParser
.
QUOTE
]:
if
token
in
[
NFAParser
.
INIT
,
NFAParser
.
FINAL
,
NFAParser
.
STATE
,
NFAParser
.
QUOTE
]:
self
.
state
=
35
self
.
statename
()
pass
...
...
@@ -395,7 +396,7 @@ class NFAParser ( Parser ):
self
.
state
=
53
self
.
_errHandler
.
sync
(
self
)
token
=
self
.
_input
.
LA
(
1
)
if
token
in
[
NFAParser
.
STATE
,
NFAParser
.
QUOTE
]:
if
token
in
[
NFAParser
.
INIT
,
NFAParser
.
FINAL
,
NFAParser
.
STATE
,
NFAParser
.
QUOTE
]:
self
.
state
=
44
self
.
statename
()
self
.
state
=
49
...
...
@@ -495,6 +496,12 @@ class NFAParser ( Parser ):
def
STATE
(
self
):
return
self
.
getToken
(
NFAParser
.
STATE
,
0
)
def
INIT
(
self
):
return
self
.
getToken
(
NFAParser
.
INIT
,
0
)
def
FINAL
(
self
):
return
self
.
getToken
(
NFAParser
.
FINAL
,
0
)
def
QUOTE
(
self
,
i
:
int
=
None
):
if
i
is
None
:
return
self
.
getTokens
(
NFAParser
.
QUOTE
)
...
...
@@ -535,29 +542,37 @@ class NFAParser ( Parser ):
self
.
_la
=
0
# Token type
try
:
self
.
enterOuterAlt
(
localctx
,
1
)
self
.
state
=
7
0
self
.
state
=
7
2
self
.
_errHandler
.
sync
(
self
)
token
=
self
.
_input
.
LA
(
1
)
if
token
in
[
NFAParser
.
STATE
]:
self
.
state
=
61
self
.
match
(
NFAParser
.
STATE
)
pass
elif
token
in
[
NFAParser
.
QUOTE
]:
elif
token
in
[
NFAParser
.
INIT
]:
self
.
state
=
62
self
.
match
(
NFAParser
.
INIT
)
pass
elif
token
in
[
NFAParser
.
FINAL
]:
self
.
state
=
63
self
.
match
(
NFAParser
.
FINAL
)
pass
elif
token
in
[
NFAParser
.
QUOTE
]:
self
.
state
=
64
self
.
match
(
NFAParser
.
QUOTE
)
self
.
state
=
6
4
self
.
state
=
6
6
self
.
_errHandler
.
sync
(
self
)
_la
=
self
.
_input
.
LA
(
1
)
while
True
:
self
.
state
=
6
3
self
.
state
=
6
5
self
.
anyvalue
()
self
.
state
=
6
6
self
.
state
=
6
8
self
.
_errHandler
.
sync
(
self
)
_la
=
self
.
_input
.
LA
(
1
)
if
not
((((
_la
)
&
~
0x3f
)
==
0
and
((
1
<<
_la
)
&
((
1
<<
NFAParser
.
INIT
)
|
(
1
<<
NFAParser
.
EQUALS
)
|
(
1
<<
NFAParser
.
LEFT_PARENTHESIS
)
|
(
1
<<
NFAParser
.
RIGHT_PARENTHESIS
)
|
(
1
<<
NFAParser
.
LEFT_BRACKET
)
|
(
1
<<
NFAParser
.
RIGHT_BRACKET
)
|
(
1
<<
NFAParser
.
COMMA
)
|
(
1
<<
NFAParser
.
FINAL
)
|
(
1
<<
NFAParser
.
STATE
)
|
(
1
<<
NFAParser
.
HASH
)
|
(
1
<<
NFAParser
.
ANYCHAR
)))
!=
0
)):
break
self
.
state
=
68
self
.
state
=
70
self
.
match
(
NFAParser
.
QUOTE
)
pass
else
:
...
...
@@ -616,19 +631,19 @@ class NFAParser ( Parser ):
self
.
_la
=
0
# Token type
try
:
self
.
enterOuterAlt
(
localctx
,
1
)
self
.
state
=
8
0
self
.
state
=
8
2
self
.
_errHandler
.
sync
(
self
)
token
=
self
.
_input
.
LA
(
1
)
if
token
in
[
NFAParser
.
HASH
]:
self
.
state
=
7
2
self
.
state
=
7
4
self
.
match
(
NFAParser
.
HASH
)
self
.
state
=
7
6
self
.
state
=
7
8
self
.
_errHandler
.
sync
(
self
)
_la
=
self
.
_input
.
LA
(
1
)
while
(((
_la
)
&
~
0x3f
)
==
0
and
((
1
<<
_la
)
&
((
1
<<
NFAParser
.
INIT
)
|
(
1
<<
NFAParser
.
EQUALS
)
|
(
1
<<
NFAParser
.
LEFT_PARENTHESIS
)
|
(
1
<<
NFAParser
.
RIGHT_PARENTHESIS
)
|
(
1
<<
NFAParser
.
LEFT_BRACKET
)
|
(
1
<<
NFAParser
.
RIGHT_BRACKET
)
|
(
1
<<
NFAParser
.
COMMA
)
|
(
1
<<
NFAParser
.
FINAL
)
|
(
1
<<
NFAParser
.
STATE
)
|
(
1
<<
NFAParser
.
HASH
)
|
(
1
<<
NFAParser
.
ANYCHAR
)))
!=
0
):
self
.
state
=
7
3
self
.
state
=
7
5
self
.
anyvalue
()
self
.
state
=
7
8
self
.
state
=
8
0
self
.
_errHandler
.
sync
(
self
)
_la
=
self
.
_input
.
LA
(
1
)
...
...
@@ -714,7 +729,7 @@ class NFAParser ( Parser ):
self
.
_la
=
0
# Token type
try
:
self
.
enterOuterAlt
(
localctx
,
1
)
self
.
state
=
8
2
self
.
state
=
8
4
_la
=
self
.
_input
.
LA
(
1
)
if
not
((((
_la
)
&
~
0x3f
)
==
0
and
((
1
<<
_la
)
&
((
1
<<
NFAParser
.
INIT
)
|
(
1
<<
NFAParser
.
EQUALS
)
|
(
1
<<
NFAParser
.
LEFT_PARENTHESIS
)
|
(
1
<<
NFAParser
.
RIGHT_PARENTHESIS
)
|
(
1
<<
NFAParser
.
LEFT_BRACKET
)
|
(
1
<<
NFAParser
.
RIGHT_BRACKET
)
|
(
1
<<
NFAParser
.
COMMA
)
|
(
1
<<
NFAParser
.
FINAL
)
|
(
1
<<
NFAParser
.
STATE
)
|
(
1
<<
NFAParser
.
HASH
)
|
(
1
<<
NFAParser
.
ANYCHAR
)))
!=
0
)):
self
.
_errHandler
.
recoverInline
(
self
)
...
...
lib/parsing/__init__.py
View file @
0265e6dc
...
...
@@ -197,7 +197,29 @@ class Parser:
raise
ParsingError
(
e
.
args
)
class
DFABuilder
(
DFAListener
):
class
StateVisitor
:
def
visitStatename
(
self
,
ctx
)
->
str
:
if
ctx
.
STATE
():
return
str
(
ctx
.
STATE
())
elif
ctx
.
FINAL
():
return
"final"
elif
ctx
.
INIT
():
return
"init"
elif
ctx
.
QUOTE
():
name
=
""
i
=
0
while
ctx
.
anyvalue
(
i
)
is
not
None
:
for
attribute
in
self
.
anyvalue_attributes
:
value
=
getattr
(
ctx
.
anyvalue
(
i
),
attribute
)()
if
value
is
not
None
:
name
+=
str
(
value
)
i
+=
1
return
name
assert
False
,
"invalid context in visitStatename"
class
DFABuilder
(
DFAListener
,
StateVisitor
):
# anyvalue possibilities
anyvalue_attributes
=
anyvalue_attributes
(
DFAParser
)
...
...
@@ -215,21 +237,6 @@ class DFABuilder(DFAListener):
self
.
init
=
state
self
.
states
.
add
(
state
)
def
visitStatename
(
self
,
ctx
)
->
str
:
if
ctx
.
STATE
():
return
str
(
ctx
.
STATE
())
elif
ctx
.
QUOTE
():
name
=
""
i
=
0
while
ctx
.
anyvalue
(
i
)
is
not
None
:
for
attribute
in
self
.
anyvalue_attributes
:
value
=
getattr
(
ctx
.
anyvalue
(
i
),
attribute
)()
if
value
is
not
None
:
name
+=
str
(
value
)
i
+=
1
return
name
def
exitProduction
(
self
,
ctx
):
state
=
State
(
self
.
visitStatename
(
ctx
.
statename
(
0
)))
character
=
Character
(
self
.
visitStatename
(
ctx
.
statename
(
1
)))
...
...
@@ -258,7 +265,7 @@ class DFABuilder(DFAListener):
return
None
class
NFABuilder
(
NFAListener
):
class
NFABuilder
(
NFAListener
,
StateVisitor
):
anyvalue_attributes
=
anyvalue_attributes
(
NFAParser
)
def
__init__
(
self
):
...
...
@@ -276,21 +283,6 @@ class NFABuilder(NFAListener):
self
.
init
=
state
self
.
states
.
add
(
state
)
def
visitStatename
(
self
,
ctx
)
->
str
:
if
ctx
.
STATE
():
return
str
(
ctx
.
STATE
())
elif
ctx
.
QUOTE
():
name
=
""
i
=
0
while
ctx
.
anyvalue
(
i
)
is
not
None
:
for
attribute
in
self
.
anyvalue_attributes
:
value
=
getattr
(
ctx
.
anyvalue
(
i
),
attribute
)()
if
value
is
not
None
:
name
+=
str
(
value
)
i
+=
1
return
name
def
exitProduction
(
self
,
ctx
):
state
=
State
(
self
.
visitStatename
(
ctx
.
statename
(
0
)))
self
.
states
.
add
(
state
)
...
...
Vladimír Štill
@xstill
mentioned in issue
#11 (closed)
·
Jun 10, 2021
mentioned in issue
#11 (closed)
mentioned in issue #11
Toggle commit list
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment