diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ChomskyChecker.java b/src/ChomskyChecker.java
index ddbd855..65c44cc 100644
--- a/src/ChomskyChecker.java
+++ b/src/ChomskyChecker.java
@@ -16,7 +16,6 @@ public class ChomskyChecker {
return "Unrestricted";
}
}
-
}
return "Unknown";
}
diff --git a/src/Lexer.java b/src/Lexer.java
new file mode 100644
index 0000000..cb0f4ba
--- /dev/null
+++ b/src/Lexer.java
@@ -0,0 +1,102 @@
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Stack;
+
+public class Lexer {
+ public enum TokenType {
+ NUMBER,
+ OPERATOR,
+ LPAREN,
+ RPAREN,
+ FUNCTION,
+ COMMA,
+ EOF
+ }
+
+ public static class Token {
+ public TokenType type;
+ public String value;
+
+ public Token(TokenType type, String value) {
+ this.type = type;
+ this.value = value;
+ }
+ }
+
+ public static List tokenize(String input) {
+ List tokens = new ArrayList<>();
+ input = input.replaceAll("\\s", "");
+ int i = 0;
+ while (i < input.length()) {
+ char ch = input.charAt(i);
+ if (Character.isDigit(ch)) {
+ StringBuilder sb = new StringBuilder();
+ while (i < input.length() && (Character.isDigit(input.charAt(i)) || input.charAt(i) == '.')) {
+ sb.append(input.charAt(i));
+ i++;
+ }
+ tokens.add(new Token(TokenType.NUMBER, sb.toString()));
+ } else if (Character.isLetter(ch)) {
+ StringBuilder sb = new StringBuilder();
+ while (i < input.length() && Character.isLetter(input.charAt(i))) {
+ sb.append(input.charAt(i));
+ i++;
+ }
+ tokens.add(new Token(TokenType.FUNCTION, sb.toString()));
+ } else {
+ switch (ch) {
+ case '(':
+ tokens.add(new Token(TokenType.LPAREN, "("));
+ i++;
+ break;
+ case ')':
+ tokens.add(new Token(TokenType.RPAREN, ")"));
+ i++;
+ break;
+ case ',':
+ tokens.add(new Token(TokenType.COMMA, ","));
+ i++;
+ break;
+ default:
+ tokens.add(new Token(TokenType.OPERATOR, String.valueOf(ch)));
+ i++;
+ break;
+ }
+ }
+ }
+
+ tokens.add(new Token(TokenType.EOF, ""));
+
+ if (!areParenthesesBalanced(tokens)) {
+ throw new RuntimeException("Parentheses are not balanced.");
+ }
+
+ return tokens;
+ }
+
+ private static boolean areParenthesesBalanced(List tokens) {
+ Stack stack = new Stack<>();
+ for (Token token : tokens) {
+ if (token.type == TokenType.LPAREN) {
+ stack.push(TokenType.LPAREN);
+ } else if (token.type == TokenType.RPAREN) {
+ if (stack.isEmpty() || stack.pop() != TokenType.LPAREN) {
+ return false;
+ }
+ }
+ }
+ return stack.isEmpty();
+ }
+
+ public static void main(String[] args) {
+ String input = "(3 + 5) * sqrt(16)";
+ try {
+ List tokens = tokenize(input);
+ for (Token token : tokens) {
+ System.out.println(token.type + " : " + token.value);
+ }
+ } catch (RuntimeException e) {
+ System.err.println(e.getMessage());
+ }
+ }
+}
diff --git a/src/RegexGenerator.java b/src/RegexGenerator.java
new file mode 100644
index 0000000..0c69991
--- /dev/null
+++ b/src/RegexGenerator.java
@@ -0,0 +1,149 @@
+import java.util.Random;
+
+public class RegexGenerator {
+ public static String[] generateRandomNr1(int numStrings) {
+ String[] randomStrings = new String[numStrings];
+ Random random = new Random();
+
+ System.out.println("=========================");
+
+ for (int i = 0; i < numStrings; i++) {
+ System.out.println("String Nr. " + (i+1));
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("O");
+ System.out.println(sb);
+
+ int length = random.nextInt(1,5);
+ for (int j = 0; j < length; j++) {
+ sb.append(randomChar("PQR"));
+ System.out.println(sb);
+ }
+
+ sb.append("2");
+ System.out.println(sb);
+
+ sb.append(randomChar("34"));
+ System.out.println(sb);
+
+ randomStrings[i] = sb.toString();
+ System.out.println("=========================");
+ }
+
+ return randomStrings;
+ }
+
+ public static String[] generateRandomNr2(int numStrings) {
+ String[] randomStrings = new String[numStrings];
+ Random random = new Random();
+
+ System.out.println("=========================");
+
+ for (int i = 0; i < numStrings; i++) {
+ System.out.println("String Nr. " + (i+1));
+ StringBuilder sb = new StringBuilder();
+
+ int length1 = random.nextInt(6);
+ for (int j = 0; j < length1; j++) {
+ sb.append(randomChar("A"));
+ System.out.println(sb);
+ }
+
+ sb.append("B");
+ System.out.println(sb);
+
+ sb.append(randomChar("CDE"));
+ System.out.println(sb);
+
+ sb.append("F");
+ System.out.println(sb);
+
+ char chr = randomChar("GHI");
+ sb.append(chr);
+ System.out.println(sb);
+
+ sb.append(chr);
+ System.out.println(sb);
+
+ randomStrings[i] = sb.toString();
+ System.out.println("=========================");
+ }
+
+ return randomStrings;
+ }
+
+ public static String[] generateRandomNr3(int numStrings) {
+ String[] randomStrings = new String[numStrings];
+ Random random = new Random();
+
+ System.out.println("=========================");
+
+ for (int i = 0; i < numStrings; i++) {
+ System.out.println("String Nr. " + (i+1));
+ StringBuilder sb = new StringBuilder();
+
+ int length1 = random.nextInt(1,6);
+ for (int j = 0; j < length1; j++) {
+ sb.append("J");
+ System.out.println(sb);
+ }
+
+ sb.append("K");
+ System.out.println(sb);
+
+ length1 = random.nextInt(6);
+ for (int j = 0; j < length1; j++) {
+ sb.append(randomChar("LMN"));
+ System.out.println(sb);
+ }
+
+ length1 = random.nextInt(2);
+ for (int j = 0; j < length1; j++) {
+ sb.append("O");
+ System.out.println(sb);
+ }
+
+ length1 = 3;
+ char chr = randomChar("PQ");
+ for (int j = 0; j < length1; j++) {
+ sb.append(chr);
+ System.out.println(sb);
+ }
+
+
+ randomStrings[i] = sb.toString();
+ System.out.println("=========================");
+ }
+
+ return randomStrings;
+ }
+
+ private static char randomChar(String characters) {
+ Random random = new Random();
+ int index = random.nextInt(characters.length());
+ return characters.charAt(index);
+ }
+
+ public static void main(String[] args) {
+ String[] randomStrings1 = generateRandomNr1(5);
+ System.out.println("All Strings Nr1: ");
+ for (String str : randomStrings1) {
+ System.out.println(str);
+ }
+ System.out.println("=========================");
+
+ String[] randomStrings2 = generateRandomNr2(5);
+ System.out.println("All Strings Nr2: ");
+ for (String str : randomStrings2) {
+ System.out.println(str);
+ }
+ System.out.println("=========================");
+
+ String[] randomStrings3 = generateRandomNr3(5);
+ System.out.println("All Strings Nr3: ");
+ for (String str : randomStrings3) {
+ System.out.println(str);
+ }
+ System.out.println("=========================");
+ }
+}