aboutsummaryrefslogtreecommitdiff
path: root/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/other/GrammarLetterGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to 'javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/other/GrammarLetterGenerator.java')
-rw-r--r--javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/other/GrammarLetterGenerator.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/other/GrammarLetterGenerator.java b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/other/GrammarLetterGenerator.java
new file mode 100644
index 000000000..9d50bc676
--- /dev/null
+++ b/javaparser-core-generators/src/main/java/com/github/javaparser/generator/core/other/GrammarLetterGenerator.java
@@ -0,0 +1,53 @@
+package com.github.javaparser.generator.core.other;
+
+import java.util.function.Function;
+
+/**
+ * Prints the LETTER and PART_LETTER tokens. They should be inserted into the grammar manually.
+ */
+public class GrammarLetterGenerator {
+ public static void main(String[] args) {
+ generate("LETTER", c -> Character.isJavaIdentifierStart(c) || Character.isHighSurrogate((char) (int) c) || Character.isLowSurrogate((char) (int) c));
+ generate("PART_LETTER", c -> Character.isJavaIdentifierPart(c) || Character.isHighSurrogate((char) (int) c) || Character.isLowSurrogate((char) (int) c));
+ }
+
+ private static void generate(String tokenName, Function<Integer, Boolean> f) {
+ final String indent = " ";
+ System.out.println(" < #" + tokenName + ": [");
+ System.out.print(indent);
+ int nltime = 0;
+ int i = 0;
+ while (i < 0x10000) {
+ while (!f.apply(i) && i < 0x10000) {
+ i++;
+ }
+ String start = format(i);
+ while (f.apply(i) && i < 0x10000) {
+ i++;
+ }
+ String end = format(i - 1);
+ if (i >= 0x10000) {
+ break;
+ }
+ if (start.equals(end)) {
+ nltime++;
+ System.out.print(start + ", ");
+ } else {
+ nltime += 2;
+ System.out.print(start + "-" + end + ", ");
+ }
+ if (nltime >= 10) {
+ nltime = 0;
+ System.out.println();
+ System.out.print(indent);
+ }
+ }
+ // Too lazy to remove the final illegal comma.
+ System.out.println("]");
+ System.out.println(" >");
+ }
+
+ private static String format(int i) {
+ return String.format("\"\\u%04x\"", i);
+ }
+}