Antlr4 PLSQL 错误

问题描述 投票:0回答:1

我正在尝试测试 Antlr4 (Oracle) PLSQL 语法,但确实很困难。我可能会因为遵循 2 或 3 个不同的指南而感到困惑。

我在 Ubuntu 22.04 上执行了以下步骤,从安装开始。

安装软件包,但不确定我最终使用了这些:

sudo apt-get update
sudo apt-get -y install python3-antlr4
sudo apt install python3-pip
pip3 install antlr-plsql
pip3 install antlr4-python3-runtime==4.9.3

然后我切换到另一个指南,它看起来更简单且更独立:

mkdir lib
cd lib
curl -O https://www.antlr.org/download/antlr-4.9.3-complete.jar
cd ..
mkdir grammars
cd grammars
wget https://github.com/antlr/grammars-v4/blob/master/sql/plsql/PlSqlLexer.g4
wget https://github.com/antlr/grammars-v4/blob/master/sql/plsql/PlSqlParser.g4
cd ..
wget https://github.com/antlr/grammars-v4/blob/master/sql/plsql/Python3/PlSqlLexerBase.py
wget https://github.com/antlr/grammars-v4/blob/master/sql/plsql/Python3/PlSqlParserBase.py

这给了我:

├── grammars
│   ├── PlSqlLexer.g4
│   └── PlSqlParser.g4
├── lib
│   └── antlr-4.9.3-complete.jar
├── PlSqlLexerBase.py
├── PlSqlParserBase.py

从语法生成 Python 3 模块:

java -jar ./lib/antlr-4.9.3-complete.jar -Dlanguage=Python3 grammars/*g4

结果是很长的错误消息:

error(50): /home/me/try2/grammars/PlSqlLexer.g4:1:0: syntax error: 
'{"payload":
   {"allShortcutsEnabled":false,"fileTree":
      {"sql/plsql":
          {"items":
             [ {"name":"CSharp","path":"sql/plsql/CSharp","contentType":"directory"},
               {"name":"Cpp","path":"sql/plsql/Cpp","contentType":"directory"},
               {"name":"Dart","path":"sql/plsql/Dart","contentType":"directory"},
.
.
.
"grammars-v4",
"showInvalidCitationWarning":false,
"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files",
"actionsOnboardingTip":null},
"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timed_out":false,"not_analyzed":true,"symbols":[]}},
"copilotInfo":null,
"copilotAccessAllowed":false,
"csrf_tokens":{"/antlr/grammars-v4/branches":{"post":"B-JVTx4hyskRLh-IIK4rWkAi5MsB-02SSXgjgq9nYNzDI1ZfW5iKO2EvjBCRVSAFlOtcSNnBT47ACuB9TmN_KA"},"/repos/preferences":{"post":"GKOXPKaenoTNYzUHdAFAZKMu0-z4ENu8r5KmHmhUiOKs4HBOuNY9PVTbSAMl7rKPVfBwRCJRpTY72nxBH5PotA"}}},
"title":"grammars-v4/sql/plsql/PlSqlParser.g4 at master · antlr/grammars-v4"}'
 came as a complete surprise to me

也尝试过,但得到了相同的结果:

java -Xmx500M -cp "./lib/antlr-4.9.3-complete.jar:$CLASSPATH" org.antlr.v4.Tool -Dlanguage=Python3 grammars/*g4
python parsing plsql antlr4
1个回答
0
投票

我能够得到最终生成的Python文件。

我找到了另一组语法文件集

https://github.com/antlr/grammars-v4/tree/master/sql/plsql.

从这里我下载如下:

wget https://github.com/antlr/grammars-v4/blob/master/sql/plsql/Python3/PlSqlLexerBase.py
wget https://github.com/antlr/grammars-v4/blob/master/sql/plsql/Python3/PlSqlParserBase.py

wget https://github.com/antlr/grammars-v4/blob/master/sql/plsql/PlSqlLexer.g4
wget https://github.com/antlr/grammars-v4/blob/master/sql/plsql/PlSqlParser.g4

mv PlSql*g4 grammars

当我跑步时:

java -jar ./lib/antlr-4.9.3-complete.jar -Dlanguage=Python3 grammars/*g4

我在

grammars
中生成了以下内容:

grammars-v4-master  PlSqlLexer.interp  PlSqlParserBase.py  PlSqlParserListener.py  __pycache__
master.zip          PlSqlLexer.py      PlSqlParser.g4      PlSqlParser.py          runPLSQL.py
PlSqlLexer.g4       PlSqlLexer.tokens  PlSqlParser.interp  PlSqlParser.tokens
© www.soinside.com 2019 - 2024. All rights reserved.