ANTLRSQLDEMO.docx
- 文档编号:7404659
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:38
- 大小:21.34KB
ANTLRSQLDEMO.docx
《ANTLRSQLDEMO.docx》由会员分享,可在线阅读,更多相关《ANTLRSQLDEMO.docx(38页珍藏版)》请在冰豆网上搜索。
ANTLRSQLDEMO
importorg.antlr.runtime.*;
importjava.util.Stack;
importjava.util.List;
importjava.util.ArrayList;
importorg.antlr.runtime.tree.*;
publicclassHinaQLParserextendsParser{
publicstaticfinalString[]tokenNames=newString[]{
"
};
publicstaticfinalintFIELD_NAME=11;
publicstaticfinalintT__29=29;
publicstaticfinalintT__28=28;
publicstaticfinalintT__27=27;
publicstaticfinalintT__26=26;
publicstaticfinalintT__25=25;
publicstaticfinalintINSERT_STATEMENT=5;
publicstaticfinalintT__24=24;
publicstaticfinalintT__23=23;
publicstaticfinalintINSERT_TABLE=7;
publicstaticfinalintT__22=22;
publicstaticfinalintT__21=21;
publicstaticfinalintCOMPARE_ITEM=12;
publicstaticfinalintT__20=20;
publicstaticfinalintINT=15;
publicstaticfinalintEOF=-1;
publicstaticfinalintIdentifier=16;
publicstaticfinalintCONSTANT_STR=13;
publicstaticfinalintSELECT_STATEMENT=6;
publicstaticfinalintT__19=19;
publicstaticfinalintT__30=30;
publicstaticfinalintT__31=31;
publicstaticfinalintT__32=32;
publicstaticfinalintWS=17;
publicstaticfinalintT__33=33;
publicstaticfinalintT__34=34;
publicstaticfinalintT__18=18;
publicstaticfinalintDDL_STATEMEMT=4;
publicstaticfinalintSELECT_LIST=8;
publicstaticfinalintTABLE_LIST=9;
publicstaticfinalintWHERE_CONDITION=10;
publicstaticfinalintSTRING=14;
//delegates
//delegators
publicHinaQLParser(TokenStreaminput){
this(input,newRecognizerSharedState());
}
publicHinaQLParser(TokenStreaminput,RecognizerSharedStatestate){
super(input,state);
}
protectedTreeAdaptoradaptor=newCommonTreeAdaptor();
publicvoidsetTreeAdaptor(TreeAdaptoradaptor){
this.adaptor=adaptor;
}
publicTreeAdaptorgetTreeAdaptor(){
returnadaptor;
}
publicString[]getTokenNames(){returnHinaQLParser.tokenNames;}
publicStringgetGrammarFileName(){return"D:
\\E盘文档\\jobs\\hina\\HinaQL.g";}
publicstaticclassselectStatement_returnextendsParserRuleReturnScope{
Objecttree;
publicObjectgetTree(){returntree;}
};
//$ANTLRstart"selectStatement"
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
15:
1:
selectStatement:
selectClausefromClause(whereClause)?
->^(SELECT_STATEMENTselectClausefromClause(whereClause)?
);
publicfinalHinaQLParser.selectStatement_returnselectStatement()throwsRecognitionException{
HinaQLParser.selectStatement_returnretval=newHinaQLParser.selectStatement_return();
retval.start=input.LT
(1);
Objectroot_0=null;
HinaQLParser.selectClause_returnselectClause1=null;
HinaQLParser.fromClause_returnfromClause2=null;
HinaQLParser.whereClause_returnwhereClause3=null;
RewriteRuleSubtreeStreamstream_whereClause=newRewriteRuleSubtreeStream(adaptor,"rulewhereClause");
RewriteRuleSubtreeStreamstream_selectClause=newRewriteRuleSubtreeStream(adaptor,"ruleselectClause");
RewriteRuleSubtreeStreamstream_fromClause=newRewriteRuleSubtreeStream(adaptor,"rulefromClause");
try{
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
15:
17:
(selectClausefromClause(whereClause)?
->^(SELECT_STATEMENTselectClausefromClause(whereClause)?
))
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
15:
19:
selectClausefromClause(whereClause)?
{
pushFollow(FOLLOW_selectClause_in_selectStatement77);
selectClause1=selectClause();
state._fsp--;
stream_selectClause.add(selectClause1.getTree());
pushFollow(FOLLOW_fromClause_in_selectStatement79);
fromClause2=fromClause();
state._fsp--;
stream_fromClause.add(fromClause2.getTree());
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
15:
43:
(whereClause)?
intalt1=2;
intLA1_0=input.LA
(1);
if((LA1_0==22)){
alt1=1;
}
switch(alt1){
case1:
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
15:
43:
whereClause
{
pushFollow(FOLLOW_whereClause_in_selectStatement81);
whereClause3=whereClause();
state._fsp--;
stream_whereClause.add(whereClause3.getTree());
}
break;
}
//ASTREWRITE
//elements:
whereClause,fromClause,selectClause
//tokenlabels:
//rulelabels:
retval
//tokenlistlabels:
//rulelistlabels:
//wildcardlabels:
retval.tree=root_0;
RewriteRuleSubtreeStreamstream_retval=newRewriteRuleSubtreeStream(adaptor,"ruleretval",retval!
=null?
retval.tree:
null);
root_0=(Object)adaptor.nil();
//16:
10:
->^(SELECT_STATEMENTselectClausefromClause(whereClause)?
)
{
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
16:
13:
^(SELECT_STATEMENTselectClausefromClause(whereClause)?
)
{
Objectroot_1=(Object)adaptor.nil();
root_1=(Object)adaptor.becomeRoot((Object)adaptor.create(SELECT_STATEMENT,"SELECT_STATEMENT"),root_1);
adaptor.addChild(root_1,stream_selectClause.nextTree());
adaptor.addChild(root_1,stream_fromClause.nextTree());
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
16:
56:
(whereClause)?
if(stream_whereClause.hasNext()){
adaptor.addChild(root_1,stream_whereClause.nextTree());
}
stream_whereClause.reset();
adaptor.addChild(root_0,root_1);
}
}
retval.tree=root_0;
}
retval.stop=input.LT(-1);
retval.tree=(Object)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree,retval.start,retval.stop);
}
catch(RecognitionExceptionre){
reportError(re);
recover(input,re);
retval.tree=(Object)adaptor.errorNode(input,retval.start,input.LT(-1),re);
}
finally{
}
returnretval;
}
//$ANTLRend"selectStatement"
publicstaticclassselectClause_returnextendsParserRuleReturnScope{
Objecttree;
publicObjectgetTree(){returntree;}
};
//$ANTLRstart"selectClause"
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
17:
1:
selectClause:
'SELECT'('*'->^(SELECT_LIST'*')|fieldName(','fieldName)*->^(SELECT_LIST(fieldName)+));
publicfinalHinaQLParser.selectClause_returnselectClause()throwsRecognitionException{
HinaQLParser.selectClause_returnretval=newHinaQLParser.selectClause_return();
retval.start=input.LT
(1);
Objectroot_0=null;
Tokenstring_literal4=null;
Tokenchar_literal5=null;
Tokenchar_literal7=null;
HinaQLParser.fieldName_returnfieldName6=null;
HinaQLParser.fieldName_returnfieldName8=null;
Objectstring_literal4_tree=null;
Objectchar_literal5_tree=null;
Objectchar_literal7_tree=null;
RewriteRuleTokenStreamstream_20=newRewriteRuleTokenStream(adaptor,"token20");
RewriteRuleTokenStreamstream_19=newRewriteRuleTokenStream(adaptor,"token19");
RewriteRuleTokenStreamstream_18=newRewriteRuleTokenStream(adaptor,"token18");
RewriteRuleSubtreeStreamstream_fieldName=newRewriteRuleSubtreeStream(adaptor,"rulefieldName");
try{
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
17:
14:
('SELECT'('*'->^(SELECT_LIST'*')|fieldName(','fieldName)*->^(SELECT_LIST(fieldName)+)))
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
17:
16:
'SELECT'('*'->^(SELECT_LIST'*')|fieldName(','fieldName)*->^(SELECT_LIST(fieldName)+))
{
string_literal4=(Token)match(input,18,FOLLOW_18_in_selectClause112);
stream_18.add(string_literal4);
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
17:
25:
('*'->^(SELECT_LIST'*')|fieldName(','fieldName)*->^(SELECT_LIST(fieldName)+))
intalt3=2;
intLA3_0=input.LA
(1);
if((LA3_0==19)){
alt3=1;
}
elseif((LA3_0==Identifier)){
alt3=2;
}
else{
NoViableAltExceptionnvae=
newNoViableAltException("",3,0,input);
thrownvae;
}
switch(alt3){
case1:
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
17:
26:
'*'
{
char_literal5=(Token)match(input,19,FOLLOW_19_in_selectClause115);
stream_19.add(char_literal5);
//ASTREWRITE
//elements:
19
//tokenlabels:
//rulelabels:
retval
//tokenlistlabels:
//rulelistlabels:
//wildcardlabels:
retval.tree=root_0;
RewriteRuleSubtreeStreamstream_retval=newRewriteRuleSubtreeStream(adaptor,"ruleretval",retval!
=null?
retval.tree:
null);
root_0=(Object)adaptor.nil();
//17:
30:
->^(SELECT_LIST'*')
{
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
17:
33:
^(SELECT_LIST'*')
{
Objectroot_1=(Object)adaptor.nil();
root_1=(Object)adaptor.becomeRoot((Object)adaptor.create(SELECT_LIST,"SELECT_LIST"),root_1);
adaptor.addChild(root_1,stream_19.nextNode());
adaptor.addChild(root_0,root_1);
}
}
retval.tree=root_0;
}
break;
case2:
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
18:
14:
fieldName(','fieldName)*
{
pushFollow(FOLLOW_fieldName_in_selectClause138);
fieldName6=fieldName();
state._fsp--;
stream_fieldName.add(fieldName6.getTree());
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
18:
24:
(','fieldName)*
loop2:
do{
intalt2=2;
intLA2_0=input.LA
(1);
if((LA2_0==20)){
alt2=1;
}
switch(alt2){
case1:
//D:
\\E盘文档\\jobs\\hina\\HinaQL.g:
18:
25:
','fieldName
{
char_literal7=(Token)match(input,20,FOLLOW_20_in_selectClause141);
stream_20.add(char_literal7);
pushFollow(FOLLOW_fieldName_in_selectClause143);
fieldName8=fieldName();
state._fsp--;
stream_fieldName.add(fieldName8.getTree());
}
break;
default:
breakloop2;
}
}while(true);
//ASTREWRITE
//elements:
fieldName
//tokenlabels:
//rulelabels:
retval
//tokenlistlabels:
//rulelistlabels:
//wildcardlabels:
retval.tree=root_0;
RewriteRuleSubtreeStreamstream_retval=newRewriteRuleSubtreeStream(adaptor,"ruleretval",retval!
=null?
retval.tree:
null);
root_0=(Object)adaptor.nil();
//18:
41:
->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ANTLRSQLDEMO