Syntax-Erkennungs Problem

Beatsleigher

Bekanntes Mitglied
Moin,, moin.

Ich arbeite an einem kleinen Nebenprojekt für Universal Android Toolkit, namens Eddy (Ein Editor für Edify-Scripts).

Ich habe das grundlegende fertig, und auch (so weit wie ich Antworten im Netz finden konnte) die Syntax-Erkennung eingebaut, aber er erkennt nur Anführungszeichen, aber dann ist gleich der restliche Text in rot.

Die anderen zu-erkennenden Teile erkennt er zwar, schmeißt dann aber eine IllegalStateException.

Edit: Ich markiere die IllegalStateExceptions mit einem ←
Java:
    private void jTextPane1KeyTyped(java.awt.event.KeyEvent evt) {                                    
        
        new Thread() {
            @Override
            public void run() {
                String text = jTextPane1.getText();
                String line = null;
                BufferedReader reader = null;
                try {
                    reader = new BufferedReader(new StringReader(text));
                    while ((line = reader.readLine()) != null) {
                        Matcher stringMatcher = stringPattern.matcher(line);
                        Matcher commentMatcher = commentPattern.matcher(line);
                        Matcher keyWordMatcher = keyWordPattern.matcher(line);
                        Matcher numberMatcher = numberPattern.matcher(line);
                        Matcher operatorMatcher = operatorPattern.matcher(line);
                        Matcher methodMatcher = methodPattern.matcher(line);
                        
                        if (stringMatcher.matches()) {
                            int start = stringMatcher.start(); // ← 
                            int end = stringMatcher.end(); // ←
                            styledDocument.setCharacterAttributes(start, end, stringStyle, true);
                        }
                        stringMatcher.reset();
                        
                        if (commentMatcher.find()) {
                            System.out.println("Match found: " + commentMatcher.group());
                            int start = stringMatcher.toMatchResult().start(); // ←
                            int end = stringMatcher.toMatchResult().end(); // ←
                            styledDocument.setCharacterAttributes(start, end, commentStyle, true);
                        }
                        //commentMatcher.reset();
                        
                        if (keyWordMatcher.matches()) {
                            int start = stringMatcher.start(); // ←
                            int end = stringMatcher.end(); // ←
                            styledDocument.setCharacterAttributes(start, end, keyWordStyle, true);
                        }
                        keyWordMatcher.reset();
                        
                        if (numberMatcher.matches()) {
                            int start = stringMatcher.start(); // ←
                            int end = stringMatcher.end(); // ←
                            styledDocument.setCharacterAttributes(start, end, numberStyle, true);
                        }
                        numberMatcher.reset();
                        
                        if (operatorMatcher.matches()) {
                            int start = stringMatcher.start(); // ←
                            int end = stringMatcher.end(); // ←
                            styledDocument.setCharacterAttributes(start, end, operatorStyle, true);
                        }
                        operatorMatcher.reset();
                        
                        if (methodMatcher.matches()) {
                            int start = stringMatcher.start(); // ←
                            int end = stringMatcher.end(); // ←
                            styledDocument.setCharacterAttributes(start, end, methodStyle, true);
                        }
                        methodMatcher.reset();
                        
                    }
                    reader.close();
                } catch (IOException ex) {
                    System.err.println("An error occurred while highlighting the syntax! " + ex.toString());
                    ex.printStackTrace(System.err);
                }
            }
        }.start();
                
    }

↑ Damit soll die Syntax erkannt werden.

Java:
private final Pattern stringPattern;
    private final Pattern commentPattern;
    private final Pattern keyWordPattern;
    private final Pattern numberPattern;
    private final Pattern operatorPattern;
    private final Pattern methodPattern;
    private final StyledDocument styledDocument;
    
    //<editor-fold defaultstate="collapsed" desc="Strings (Regex)">
    // Colour: Blue
    private static final String keyWords = "(if)|else|then|endif"; 
    
    // Colour: Cyan
    private static final String numbers = "[0-9]"; 
    
    // Colour: Gray
    private static final String operators = "[!=&+]";
    
    // Colour: Dark Gray
    private static final String diskOperations = "format|mount|unmount|is_mounted";
        
    // Colour: Dark Gray
    private static final String imageOperations = "write_raw_image|write_firmware_image";
        
    // Colour: Dark Gray
    private static final String fileOperations = "package_extract_file|package_extract_dir|delete|delete_recursive|symlink|"
            + "set_perm|set_perm_recursive|getprop|file_getprop";
            
    // Colour: Dark Gray
    private static final String patchingOperations = "apply_patch|apply_patch_check|apply_patch_space|run_program";
        
    
    // Colour: Dark Gray
    private static final String control = "assert|abort|ifelse";
        
    // Colour: Dark Gray
    private static final String predicates = "ls_substring|less_than_int|greater_than_int";
            
    // Colour: Dark Gray
    private static final String userFeedback = "show_progress|set_progress|ui_print|sleep";
    //</editor-fold>
    
    private final Style stringStyle;
    private final Style commentStyle;
    private final Style keyWordStyle;
    private final Style numberStyle;
    private final Style operatorStyle;
    private final Style methodStyle;
    
    public Eddy() {
        stringPattern = Pattern.compile("\"(.*)\"");
        commentPattern = Pattern.compile("^(#*)");
        keyWordPattern = Pattern.compile(keyWords);
        numberPattern = Pattern.compile(numbers);
        operatorPattern = Pattern.compile(operators);
        methodPattern = Pattern.compile(diskOperations + "|" + imageOperations + "|" + fileOperations + "|" + patchingOperations + "|" + control + "|" + predicates + "|" + userFeedback);
        styledDocument = (StyledDocument) new DefaultStyledDocument();
        initComponents();
        stringStyle = jTextPane1.addStyle("StringStyle", null);
        commentStyle = jTextPane1.addStyle("CommentStyle", null);
        keyWordStyle = jTextPane1.addStyle("KeyWordStyle", null);
        numberStyle = jTextPane1.addStyle("NumberStyle", null);
        operatorStyle = jTextPane1.addStyle("OperatorStyle", null);
        methodStyle = jTextPane1.addStyle("MethodStyle", null);
        StyleConstants.setForeground(stringStyle, Color.red);
        StyleConstants.setForeground(commentStyle, Color.green);
        StyleConstants.setForeground(keyWordStyle, Color.blue);
        StyleConstants.setForeground(numberStyle, Color.cyan);
        StyleConstants.setForeground(operatorStyle, Color.gray);
        StyleConstants.setForeground(methodStyle, Color.darkGray);
        this.setLocationRelativeTo(null);
        this.setIconImage(new ImageIcon(this.getClass().getResource("/eu/m4gkbeatz/androidtoolkit/resources/eddy/icon.png")).getImage());
        this.setTitle("Eddy - Edify Code Editor");
    }

↑ Das sind die RegEx-en.

Ich weiß nicht wo ich den Fehler eingebaut habe.

Jede Hilfe mit diesem Problem wird begrüßt.

Danke im Voraus,
Beats
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Ähnliche Java Themen
  Titel Forum Antworten Datum
Tommy135 Syntax Highlighting Allgemeine Java-Themen 3
Elyt Compiler-Fehler Datei kann nicht erstellt werden. Die Syntax für den Dateinamen etc. ist falsch. Allgemeine Java-Themen 2
W JavaCC to create my only syntax Allgemeine Java-Themen 5
H Syntax ProcessBuilder Allgemeine Java-Themen 7
B Syntax-Highlighting abspeichern Allgemeine Java-Themen 7
T Parseerror bei richtiger Syntax Allgemeine Java-Themen 5
M Syntax Highlighter für MS Word? Allgemeine Java-Themen 2
H Pattern.compile Syntax Allgemeine Java-Themen 15
S Mail Adressen Syntax prüfen Allgemeine Java-Themen 22
C Syntax printf Allgemeine Java-Themen 5
S Eine Collection von Objekten mit LDAP Syntax filtern Allgemeine Java-Themen 5
P JTextPane mit Java (eclipse) Syntax Highlighting Allgemeine Java-Themen 4
D Kompakte Syntax für Funktionen Allgemeine Java-Themen 7
G Syntax für den Dateinamen Allgemeine Java-Themen 1
R Syntax Error, der keiner sein sollte Allgemeine Java-Themen 12
G Java Syntax Allgemeine Java-Themen 7
T Syntax Error Allgemeine Java-Themen 9
F Plugin damit M$ Word Java syntax versteht? Allgemeine Java-Themen 12
D Die <> Syntax Allgemeine Java-Themen 8
W Syntax - Frage Allgemeine Java-Themen 6
padde479 jEdit Syntax Highlighting Allgemeine Java-Themen 3
G Syntax-Fehler beim aufrufen von generischen Klassenmethoden Allgemeine Java-Themen 4
V syntax problem Allgemeine Java-Themen 6
S Syntax Error, insert "AssignmentOperator Expression&amp Allgemeine Java-Themen 3
F log4j XML-Syntax Allgemeine Java-Themen 4
B Syntax error on token ,VariableDeclaratorId expected after. Allgemeine Java-Themen 3
G Syntax Übersicht Suche Allgemeine Java-Themen 7
A gültige syntax einer ip-adresse? Allgemeine Java-Themen 2
S java syntax zusammenfassung Allgemeine Java-Themen 1
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
Javafan02 Problem mit if-clause Allgemeine Java-Themen 17
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
kodela Event Handling Problem mit der Alt-Taste Allgemeine Java-Themen 16
W Threads Problem Allgemeine Java-Themen 15
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
S jserialcomm Problem Allgemeine Java-Themen 1
Flynn Thread-Problem... Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben