Skip to content

Latest commit

 

History

History
97 lines (68 loc) · 4.17 KB

File metadata and controls

97 lines (68 loc) · 4.17 KB

MySQL Syntax Analyzer

Screenshot Java App

MySQL syntax analyzer built with Java and ANTLR 4. Parses SQL statements, generates parse trees, and detects syntax errors with line and column positions. Includes a Swing GUI with SQL syntax highlighting (RSyntaxTextArea) and interactive parse tree visualization (ANTLR TreeViewer).

The grammar files (MySqlLexer.g4 and MySqlParser.g4) are sourced from the ANTLR grammars-v4 repository by Positive Technologies.

How It Works

The user writes or pastes a MySQL query in the editor and clicks "Run Parser". ANTLR tokenizes the input through the lexer, then the parser validates the grammatical structure and builds a parse tree. If syntax errors are found, a custom error listener captures them with line/column details and displays them in the log panel. The parse tree is rendered visually using ANTLR's TreeViewer.

Example

Input:

SELECT * FROM employees LIMIT 10^2;

Output:

*** Syntax Error ***
line 2:8 no viable alternative at input 'SELECT * FROM employees\nLIMIT 10^'

*** Parse Tree ***
(root (sqlStatements (sqlStatement (dmlStatement (selectStatement
(querySpecification SELECT * FROM employees LIMIT 10 ^ 2)))) ;) <EOF>)

Project Structure

├── src/
│   ├── App.java                    # Entry point and test methods
│   ├── Program.java                # Swing GUI (RSyntaxTextArea + TreeViewer)
│   ├── AntlrErrorListener.java     # Custom error listener for syntax errors
│   ├── MySqlLexer.g4               # ANTLR lexer grammar for MySQL
│   ├── MySqlParser.g4              # ANTLR parser grammar for MySQL
│   ├── MySqlLexer.java             # Generated lexer
│   ├── MySqlParser.java            # Generated parser
│   ├── MySqlParserListener.java    # Generated listener
│   └── MySqlParserBaseListener.java
├── lib/
│   ├── antlr/                      # ANTLR 4.13.2
│   └── rsyntaxtextarea-3.5.1.jar   # SQL syntax highlighting
└── bin/                            # Compiled .class files

Requirements

  • Java 22+ (JDK)
  • Libraries included in lib/

Build and Run

Generate lexer and parser from grammars (only needed if .g4 files are modified):

java -jar lib/antlr/antlr-4.13.2-complete.jar -Dlanguage=Java -o src src/MySqlLexer.g4
java -jar lib/antlr/antlr-4.13.2-complete.jar -Dlanguage=Java -o src src/MySqlParser.g4

Compile:

javac -cp "lib/rsyntaxtextarea-3.5.1.jar:lib/antlr/antlr-4.13.2-complete.jar" -d bin -sourcepath src src/App.java

Run:

java -cp "bin:lib/rsyntaxtextarea-3.5.1.jar:lib/antlr/antlr-4.13.2-complete.jar" App

Note: On Windows, replace : with ; in the classpath separator.

Libraries

References


Originally developed on 27 October 2024.