Simple DDL Parser 使用教程
1. 项目的目录结构及介绍
Simple DDL Parser 是一个用于解析 SQL 和 HQL DDL 文件的 Python 库。以下是该项目的目录结构及其介绍:
simple-ddl-parser/
├── docs/
│ └── README.rst
├── simple_ddl_parser/
│ ├── __init__.py
│ ├── ddl_parser.py
│ └── ...
├── tests/
│ ├── __init__.py
│ ├── test_ddl_parser.py
│ └── ...
├── .gitignore
├── LICENSE
├── pyproject.toml
└── README.md
docs/
: 包含项目的文档文件,如README.rst
。simple_ddl_parser/
: 包含项目的主要代码文件,如__init__.py
和ddl_parser.py
。tests/
: 包含项目的测试文件,如__init__.py
和test_ddl_parser.py
。.gitignore
: Git 忽略文件。LICENSE
: 项目的许可证文件。pyproject.toml
: 项目的配置文件。README.md
: 项目的介绍文件。
2. 项目的启动文件介绍
Simple DDL Parser 的启动文件是 simple_ddl_parser/ddl_parser.py
。这个文件包含了主要的解析逻辑和函数。以下是该文件的主要内容:
# simple_ddl_parser/ddl_parser.py
import ply.lex as lex
import ply.yacc as yacc
# 定义词法分析器
tokens = (
'CREATE', 'TABLE', 'PRIMARY', 'KEY', 'FOREIGN', 'KEY', 'CONSTRAINT',
'CHECK', 'NOT', 'NULL', 'UNIQUE', 'INDEX', 'INSERT', 'INTO', 'VALUES',
'SELECT', 'FROM', 'WHERE', 'AND', 'OR', 'ORDER', 'BY', 'GROUP', 'HAVING',
'JOIN', 'ON', 'AS', 'DISTINCT', 'UNION', 'ALL', 'SET', 'UPDATE', 'DELETE',
'ALTER', 'ADD', 'DROP', 'COLUMN', 'TABLE', 'VIEW', 'TRIGGER', 'FUNCTION',
'PROCEDURE', 'BEGIN', 'END', 'DECLARE', 'IF', 'THEN', 'ELSE', 'ELSIF',
'LOOP', 'WHILE', 'FOR', 'IN', 'OUT', 'INOUT', 'RETURN', 'IS', 'ARE',
'TYPE', 'RECORD', 'VARRAY', 'OF', 'UNDER', 'MAP', 'MEMBER', 'SELF',
'CONSTANT', 'SUBTYPE', 'RANGE', 'EXCEPTION', 'RAISE', 'PRAGMA', 'EXECUTE',
'IMMEDIATE', 'OPEN', 'CLOSE', 'FETCH', 'BULK', 'COLLECT', 'INTO', 'LIMIT',
'OFFSET', 'CROSS', 'NATURAL', 'INNER', 'LEFT', 'RIGHT', 'FULL', 'OUTER',
'USING', 'PARTITION', 'BY', 'RANGE', 'INTERVAL', 'OVER', 'WINDOW', 'WITH',
'CASCADE', 'RESTRICT', 'NO', 'ACTION', 'DATA', 'TYPE', 'SCHEMA', 'DATABASE',
'USER', 'ROLE', 'GRANT', 'REVOKE', 'IDENTIFIED', 'BY', 'PASSWORD', 'DEFAULT',
'CURRENT', 'SESSION', 'NEXT', 'VALUE', 'SEQUENCE', 'INCREMENT', 'MINVALUE',
'MAXVALUE', 'START', 'WITH', 'CACHE', 'NOCACHE', 'CYCLE', 'NOCYCLE',
'OWNED', 'BY', 'CASCADE', 'RESTRICT', 'NO', 'ACTION', 'COMMENT', 'ON',
'COLUMN', 'TABLE', 'VIEW', 'INDEX', 'TRIGGER', 'FUNCTION', 'PROCEDURE',
'SCHEMA', 'DATABASE', 'USER', 'ROLE', 'GRANT', 'REVOKE', 'IDENTIFIED',
'BY', 'PASSWORD', 'DEFAULT', 'CURRENT', 'SESSION', 'NEXT', 'VALUE',
'SEQUENCE', 'INCREMENT', 'MINVALUE', 'MAXVALUE', 'START', 'WITH', 'CACHE',
'NOCACHE', 'CYCLE', 'NOCYCLE', 'OWNED', 'BY', 'CASCADE', 'RESTRICT',
'NO', 'ACTION', 'COMMENT', 'ON', 'COLUMN', 'TABLE