diff --git a/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_1.txt b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_1.txt new file mode 100644 index 0000000000..8495e96775 --- /dev/null +++ b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_1.txt @@ -0,0 +1,19 @@ +[type] +Parser + +[grammar] +grammar T; + +program : state*{} EOF ; +state: 'break;' | 'continue;' | 'return;' ; + +[start] +program + +[input] +break;continue;return; + +[output] +"""break;continue;return; +""" + diff --git a/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_2.txt b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_2.txt new file mode 100644 index 0000000000..a753c96544 --- /dev/null +++ b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_2.txt @@ -0,0 +1,19 @@ +[type] +Parser + +[grammar] +grammar T; + +program : sempred*{} EOF ; +sempred: 'break;' | 'continue;' | 'return;' ; + +[start] +program + +[input] +break;continue;return; + +[output] +"""break;continue;return; +""" + diff --git a/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_3.txt b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_3.txt new file mode 100644 index 0000000000..22e528b7bf --- /dev/null +++ b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_3.txt @@ -0,0 +1,19 @@ +[type] +Parser + +[grammar] +grammar T; + +program : action*{} EOF ; +action: 'break;' | 'continue;' | 'return;' ; + +[start] +program + +[input] +break;continue;return; + +[output] +"""break;continue;return; +""" + diff --git a/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_4.txt b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_4.txt new file mode 100644 index 0000000000..86566f8d4d --- /dev/null +++ b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_4.txt @@ -0,0 +1,19 @@ +[type] +Parser + +[grammar] +grammar T; + +program : ruleIndexMap*{} EOF ; +ruleIndexMap: 'break;' | 'continue;' | 'return;' ; + +[start] +program + +[input] +break;continue;return; + +[output] +"""break;continue;return; +""" + diff --git a/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_5.txt b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_5.txt new file mode 100644 index 0000000000..47ac451705 --- /dev/null +++ b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_5.txt @@ -0,0 +1,19 @@ +[type] +Parser + +[grammar] +grammar T; + +program : addErrorListener*{} EOF ; +addErrorListener: 'break;' | 'continue;' | 'return;' ; + +[start] +program + +[input] +break;continue;return; + +[output] +"""break;continue;return; +""" + diff --git a/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_6.txt b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_6.txt new file mode 100644 index 0000000000..0ec82792ef --- /dev/null +++ b/runtime-testsuite/resources/org/antlr/v4/test/runtime/descriptors/ParserExec/Keyword_6.txt @@ -0,0 +1,19 @@ +[type] +Parser + +[grammar] +grammar T; + +program : reset*{} EOF ; +reset: 'break;' | 'continue;' | 'return;' ; + +[start] +program + +[input] +break;continue;return; + +[output] +"""break;continue;return; +""" + diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/PHP/PHP.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/PHP/PHP.stg index b58024b4a2..348a613a66 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/PHP/PHP.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/PHP/PHP.stg @@ -449,7 +449,7 @@ RuleFunction(currentRule,args,code,locals,ruleCtx,altLabelCtxs,namedActions,fina /** * @throws RecognitionException */ - }>public function (): Context\\ + }>public function (): Context\\ { $localContext = new Context\\($this->ctx, $this->getState()}>); @@ -701,7 +701,7 @@ cases(tokens) ::= << InvokeRule(r, argExprsChunks) ::= << $this->setState(); - = }>$this->recursive(,); + = }>$this->recursive(,); >> MatchToken(m) ::= << diff --git a/tool/src/org/antlr/v4/codegen/target/CppTarget.java b/tool/src/org/antlr/v4/codegen/target/CppTarget.java index b45fa91ef9..c0f2cec95c 100644 --- a/tool/src/org/antlr/v4/codegen/target/CppTarget.java +++ b/tool/src/org/antlr/v4/codegen/target/CppTarget.java @@ -48,7 +48,7 @@ public class CppTarget extends Target { "using", "virtual", "void", "volatile", "wchar_t", "while", "xor", "xor_eq", - "rule", "parserRule" + "rule", "parserRule", "reset" )); public CppTarget(CodeGenerator gen) { diff --git a/tool/src/org/antlr/v4/codegen/target/DartTarget.java b/tool/src/org/antlr/v4/codegen/target/DartTarget.java index 30e1209f63..42f0d283a1 100644 --- a/tool/src/org/antlr/v4/codegen/target/DartTarget.java +++ b/tool/src/org/antlr/v4/codegen/target/DartTarget.java @@ -36,7 +36,15 @@ public class DartTarget extends Target { "deferred", "hide", "return", "with", "do", "if", "set", "yield", - "rule", "parserRule" + "rule", "parserRule", + "interpreter", "state", "ruleNames", "vocabulary", "ruleIndexMap", "getTokenType", "grammarFileName", "getATN", + "parseInfo", "getErrorHeader", "addErrorListener", "removeErrorListener", "removeErrorListeners","errorListeners", + "errorListenerDispatch", "sempred", "precpred", "action", "inputStream", "tokenFactory", + + "errorHandler", "context", "buildParseTree", "matchedEOF", "reset", "match", "matchWildcard", "trimParseTree", + "addParseListener", "removeParseListener", "removeParseListeners", "triggerEnterRuleEvent", "triggerExitRuleEvent", + "numberOfSyntaxErrors", "currentToken", "notifyErrorListeners", "consume", "createTerminalNode", "createErrorNode", + "addContextToParseTree", "enterRule", "exitRule", "enterOuterAlt", "precedence", "enterRecursionRule" )); public DartTarget(CodeGenerator gen) { diff --git a/tool/src/org/antlr/v4/codegen/target/GoTarget.java b/tool/src/org/antlr/v4/codegen/target/GoTarget.java index a0311a4eeb..3293ac5a6e 100644 --- a/tool/src/org/antlr/v4/codegen/target/GoTarget.java +++ b/tool/src/org/antlr/v4/codegen/target/GoTarget.java @@ -11,13 +11,13 @@ import org.antlr.v4.parse.ANTLRParser; import org.antlr.v4.tool.Grammar; import org.stringtemplate.v4.ST; -import org.stringtemplate.v4.STGroup; -import org.stringtemplate.v4.StringRenderer; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.util.*; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; public class GoTarget extends Target { protected static final HashSet reservedWords = new HashSet<>(Arrays.asList( @@ -50,7 +50,8 @@ public class GoTarget extends Target { // then clashes with the GetStart() or GetStop() method that is generated by the code gen for the rule. So, we need to // convert it. This is not ideal as it will still probably confuse authors of parse listeners etc. but the code will // compile. This is a proof of Hyrum's law. - "start", "stop", "exception" + "start", "stop", "exception", + "sempred", "precpred", "addErrorListener" )); private static final boolean DO_GOFMT = !Boolean.parseBoolean(System.getenv("ANTLR_GO_DISABLE_GOFMT")) diff --git a/tool/src/org/antlr/v4/codegen/target/JavaScriptTarget.java b/tool/src/org/antlr/v4/codegen/target/JavaScriptTarget.java index ae30501414..f0900a915d 100644 --- a/tool/src/org/antlr/v4/codegen/target/JavaScriptTarget.java +++ b/tool/src/org/antlr/v4/codegen/target/JavaScriptTarget.java @@ -35,7 +35,8 @@ public class JavaScriptTarget extends Target { "null", "true", "false", // misc - "rule", "parserRule" + "rule", "parserRule", + "state", "reset" )); public JavaScriptTarget(CodeGenerator gen) { diff --git a/tool/src/org/antlr/v4/codegen/target/JavaTarget.java b/tool/src/org/antlr/v4/codegen/target/JavaTarget.java index 4b1a12b7c7..5cd4d7f942 100644 --- a/tool/src/org/antlr/v4/codegen/target/JavaTarget.java +++ b/tool/src/org/antlr/v4/codegen/target/JavaTarget.java @@ -9,9 +9,10 @@ import org.antlr.v4.codegen.CodeGenerator; import org.antlr.v4.codegen.Target; import org.stringtemplate.v4.STGroup; -import org.stringtemplate.v4.StringRenderer; -import java.util.*; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; public class JavaTarget extends Target { /** @@ -30,7 +31,7 @@ public class JavaTarget extends Target { "void", "volatile", "while", // misc - "rule", "parserRule" + "rule", "parserRule", "reset" )); public JavaTarget(CodeGenerator gen) { diff --git a/tool/src/org/antlr/v4/codegen/target/PHPTarget.java b/tool/src/org/antlr/v4/codegen/target/PHPTarget.java index 4f9188df3b..d9044de10d 100644 --- a/tool/src/org/antlr/v4/codegen/target/PHPTarget.java +++ b/tool/src/org/antlr/v4/codegen/target/PHPTarget.java @@ -38,7 +38,8 @@ public class PHPTarget extends Target { "__LINE__", "__METHOD__", "__NAMESPACE__", "__TRAIT__", // misc - "rule", "parserRule" + "rule", "parserRule", + "state", "reset", "action", "sempred", "addErrorListener" )); protected static final Map targetCharValueEscape; diff --git a/tool/src/org/antlr/v4/codegen/target/Python3Target.java b/tool/src/org/antlr/v4/codegen/target/Python3Target.java index 768dbc1ef7..56ead8c2c9 100644 --- a/tool/src/org/antlr/v4/codegen/target/Python3Target.java +++ b/tool/src/org/antlr/v4/codegen/target/Python3Target.java @@ -39,7 +39,8 @@ public class Python3Target extends Target { "True", "False", "None", // misc - "rule", "parserRule" + "rule", "parserRule", + "state", "reset" )); protected static final Map targetCharValueEscape; diff --git a/tool/src/org/antlr/v4/codegen/target/TypeScriptTarget.java b/tool/src/org/antlr/v4/codegen/target/TypeScriptTarget.java index c6a6a69ad2..9595e55f1d 100644 --- a/tool/src/org/antlr/v4/codegen/target/TypeScriptTarget.java +++ b/tool/src/org/antlr/v4/codegen/target/TypeScriptTarget.java @@ -6,7 +6,6 @@ import org.antlr.v4.codegen.CodeGenerator; import org.antlr.v4.codegen.Target; -import org.antlr.v4.misc.CharSupport; import java.util.Arrays; import java.util.HashSet; @@ -75,7 +74,8 @@ public class TypeScriptTarget extends Target { "while", "with", "yield", - "of" + "of", + "state", "reset" )); public TypeScriptTarget(CodeGenerator gen) { @@ -86,7 +86,7 @@ public TypeScriptTarget(CodeGenerator gen) { protected Set getReservedWords() { return reservedWords; } - + @Override public int getInlineTestSetWordSize() { return 32;