Skip to content

Commit e8bf978

Browse files
cyqwparrt
authored andcommitted
rule name 'state' conflict with Python runtime.
Signed-off-by: cyqw <[email protected]>
1 parent 88a0c7a commit e8bf978

File tree

15 files changed

+144
-17
lines changed

15 files changed

+144
-17
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[type]
2+
Parser
3+
4+
[grammar]
5+
grammar T;
6+
7+
program : state*{<writeln("$text")>} EOF ;
8+
state: 'break;' | 'continue;' | 'return;' ;
9+
10+
[start]
11+
program
12+
13+
[input]
14+
break;continue;return;
15+
16+
[output]
17+
"""break;continue;return;
18+
"""
19+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[type]
2+
Parser
3+
4+
[grammar]
5+
grammar T;
6+
7+
program : sempred*{<writeln("$text")>} EOF ;
8+
sempred: 'break;' | 'continue;' | 'return;' ;
9+
10+
[start]
11+
program
12+
13+
[input]
14+
break;continue;return;
15+
16+
[output]
17+
"""break;continue;return;
18+
"""
19+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[type]
2+
Parser
3+
4+
[grammar]
5+
grammar T;
6+
7+
program : action*{<writeln("$text")>} EOF ;
8+
action: 'break;' | 'continue;' | 'return;' ;
9+
10+
[start]
11+
program
12+
13+
[input]
14+
break;continue;return;
15+
16+
[output]
17+
"""break;continue;return;
18+
"""
19+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[type]
2+
Parser
3+
4+
[grammar]
5+
grammar T;
6+
7+
program : ruleIndexMap*{<writeln("$text")>} EOF ;
8+
ruleIndexMap: 'break;' | 'continue;' | 'return;' ;
9+
10+
[start]
11+
program
12+
13+
[input]
14+
break;continue;return;
15+
16+
[output]
17+
"""break;continue;return;
18+
"""
19+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[type]
2+
Parser
3+
4+
[grammar]
5+
grammar T;
6+
7+
program : addErrorListener*{<writeln("$text")>} EOF ;
8+
addErrorListener: 'break;' | 'continue;' | 'return;' ;
9+
10+
[start]
11+
program
12+
13+
[input]
14+
break;continue;return;
15+
16+
[output]
17+
"""break;continue;return;
18+
"""
19+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[type]
2+
Parser
3+
4+
[grammar]
5+
grammar T;
6+
7+
program : reset*{<writeln("$text")>} EOF ;
8+
reset: 'break;' | 'continue;' | 'return;' ;
9+
10+
[start]
11+
program
12+
13+
[input]
14+
break;continue;return;
15+
16+
[output]
17+
"""break;continue;return;
18+
"""
19+

tool/resources/org/antlr/v4/tool/templates/codegen/PHP/PHP.stg

+2-2
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ RuleFunction(currentRule,args,code,locals,ruleCtx,altLabelCtxs,namedActions,fina
449449
/**
450450
* @throws RecognitionException
451451
*/
452-
<if(currentRule.modifiers)><currentRule.modifiers:{f | <f> }><endif>public function <currentRule.name>(<args; separator=",">): Context\\<currentRule.ctxType>
452+
<if(currentRule.modifiers)><currentRule.modifiers:{f | <f> }><endif>public function <currentRule.escapedName>(<args; separator=",">): Context\\<currentRule.ctxType>
453453
{
454454
$localContext = new Context\\<currentRule.ctxType>($this->ctx, $this->getState()<currentRule.args:{a | , $<a.name>}>);
455455

@@ -701,7 +701,7 @@ cases(tokens) ::= <<
701701

702702
InvokeRule(r, argExprsChunks) ::= <<
703703
$this->setState(<r.stateNumber>);
704-
<if(r.labels)><r.labels:{l | <labelref(l)> = }><endif>$this-><if(r.ast.options.p)>recursive<r.name; format="cap"><else><r.name><endif>(<if(r.ast.options.p)><r.ast.options.p><if(argExprsChunks)>,<endif><endif><argExprsChunks>);
704+
<if(r.labels)><r.labels:{l | <labelref(l)> = }><endif>$this-><if(r.ast.options.p)>recursive<r.name; format="cap"><else><r.escapedName><endif>(<if(r.ast.options.p)><r.ast.options.p><if(argExprsChunks)>,<endif><endif><argExprsChunks>);
705705
>>
706706

707707
MatchToken(m) ::= <<

tool/src/org/antlr/v4/codegen/target/CppTarget.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public class CppTarget extends Target {
4848
"using", "virtual", "void", "volatile", "wchar_t", "while",
4949
"xor", "xor_eq",
5050

51-
"rule", "parserRule"
51+
"rule", "parserRule", "reset"
5252
));
5353

5454
public CppTarget(CodeGenerator gen) {

tool/src/org/antlr/v4/codegen/target/DartTarget.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,15 @@ public class DartTarget extends Target {
3636
"deferred", "hide", "return", "with",
3737
"do", "if", "set", "yield",
3838

39-
"rule", "parserRule"
39+
"rule", "parserRule",
40+
"interpreter", "state", "ruleNames", "vocabulary", "ruleIndexMap", "getTokenType", "grammarFileName", "getATN",
41+
"parseInfo", "getErrorHeader", "addErrorListener", "removeErrorListener", "removeErrorListeners","errorListeners",
42+
"errorListenerDispatch", "sempred", "precpred", "action", "inputStream", "tokenFactory",
43+
44+
"errorHandler", "context", "buildParseTree", "matchedEOF", "reset", "match", "matchWildcard", "trimParseTree",
45+
"addParseListener", "removeParseListener", "removeParseListeners", "triggerEnterRuleEvent", "triggerExitRuleEvent",
46+
"numberOfSyntaxErrors", "currentToken", "notifyErrorListeners", "consume", "createTerminalNode", "createErrorNode",
47+
"addContextToParseTree", "enterRule", "exitRule", "enterOuterAlt", "precedence", "enterRecursionRule"
4048
));
4149

4250
public DartTarget(CodeGenerator gen) {

tool/src/org/antlr/v4/codegen/target/GoTarget.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
import org.antlr.v4.parse.ANTLRParser;
1212
import org.antlr.v4.tool.Grammar;
1313
import org.stringtemplate.v4.ST;
14-
import org.stringtemplate.v4.STGroup;
15-
import org.stringtemplate.v4.StringRenderer;
1614

1715
import java.io.File;
1816
import java.io.IOException;
1917
import java.io.InputStream;
20-
import java.util.*;
18+
import java.util.Arrays;
19+
import java.util.HashSet;
20+
import java.util.Set;
2121

2222
public class GoTarget extends Target {
2323
protected static final HashSet<String> reservedWords = new HashSet<>(Arrays.asList(
@@ -50,7 +50,8 @@ public class GoTarget extends Target {
5050
// then clashes with the GetStart() or GetStop() method that is generated by the code gen for the rule. So, we need to
5151
// convert it. This is not ideal as it will still probably confuse authors of parse listeners etc. but the code will
5252
// compile. This is a proof of Hyrum's law.
53-
"start", "stop", "exception"
53+
"start", "stop", "exception",
54+
"sempred", "precpred", "addErrorListener"
5455
));
5556

5657
private static final boolean DO_GOFMT = !Boolean.parseBoolean(System.getenv("ANTLR_GO_DISABLE_GOFMT"))

tool/src/org/antlr/v4/codegen/target/JavaScriptTarget.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ public class JavaScriptTarget extends Target {
3535
"null", "true", "false",
3636

3737
// misc
38-
"rule", "parserRule"
38+
"rule", "parserRule",
39+
"state", "reset"
3940
));
4041

4142
public JavaScriptTarget(CodeGenerator gen) {

tool/src/org/antlr/v4/codegen/target/JavaTarget.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
import org.antlr.v4.codegen.CodeGenerator;
1010
import org.antlr.v4.codegen.Target;
1111
import org.stringtemplate.v4.STGroup;
12-
import org.stringtemplate.v4.StringRenderer;
1312

14-
import java.util.*;
13+
import java.util.Arrays;
14+
import java.util.HashSet;
15+
import java.util.Set;
1516

1617
public class JavaTarget extends Target {
1718
/**
@@ -30,7 +31,7 @@ public class JavaTarget extends Target {
3031
"void", "volatile", "while",
3132

3233
// misc
33-
"rule", "parserRule"
34+
"rule", "parserRule", "reset"
3435
));
3536

3637
public JavaTarget(CodeGenerator gen) {

tool/src/org/antlr/v4/codegen/target/PHPTarget.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ public class PHPTarget extends Target {
3838
"__LINE__", "__METHOD__", "__NAMESPACE__", "__TRAIT__",
3939

4040
// misc
41-
"rule", "parserRule"
41+
"rule", "parserRule",
42+
"state", "reset", "action", "sempred", "addErrorListener"
4243
));
4344

4445
protected static final Map<Character, String> targetCharValueEscape;

tool/src/org/antlr/v4/codegen/target/Python3Target.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ public class Python3Target extends Target {
3939
"True", "False", "None",
4040

4141
// misc
42-
"rule", "parserRule"
42+
"rule", "parserRule",
43+
"state", "reset"
4344
));
4445

4546
protected static final Map<Character, String> targetCharValueEscape;

tool/src/org/antlr/v4/codegen/target/TypeScriptTarget.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import org.antlr.v4.codegen.CodeGenerator;
88
import org.antlr.v4.codegen.Target;
9-
import org.antlr.v4.misc.CharSupport;
109

1110
import java.util.Arrays;
1211
import java.util.HashSet;
@@ -75,7 +74,8 @@ public class TypeScriptTarget extends Target {
7574
"while",
7675
"with",
7776
"yield",
78-
"of"
77+
"of",
78+
"state", "reset"
7979
));
8080

8181
public TypeScriptTarget(CodeGenerator gen) {
@@ -86,7 +86,7 @@ public TypeScriptTarget(CodeGenerator gen) {
8686
protected Set<String> getReservedWords() {
8787
return reservedWords;
8888
}
89-
89+
9090
@Override
9191
public int getInlineTestSetWordSize() {
9292
return 32;

0 commit comments

Comments
 (0)