用pegjs重写sql分割方法
This commit is contained in:
@ -1,9 +1,14 @@
|
||||
|
||||
|
||||
{
|
||||
let lines=[];
|
||||
let isSplit=false;
|
||||
}
|
||||
|
||||
start
|
||||
= union_stmt:union_stmt
|
||||
{
|
||||
return union_stmt;
|
||||
return {lines,text:union_stmt};
|
||||
}
|
||||
|
||||
|
||||
@ -11,10 +16,24 @@ union_stmt
|
||||
=stmt:
|
||||
(
|
||||
words:(!kw_start word:. {return word})*
|
||||
stmt:(comment:comment {return ''}/quote:quote {return quote})
|
||||
{return words.join("")+stmt}
|
||||
stmt:(comment:comment {return ''}/quote:quote {return quote}/";" {isSplit=true;return ";"})
|
||||
{
|
||||
const text=words.join("")+stmt;
|
||||
let index=Math.max(lines.length-1,0);
|
||||
lines[index]=(lines[index]||'')+text;
|
||||
if(isSplit){
|
||||
isSplit=false;
|
||||
lines.push('');
|
||||
}
|
||||
return text;
|
||||
}
|
||||
)* other:.*
|
||||
{return stmt.join("")+other.join("")}
|
||||
{
|
||||
const text=stmt.join("")+other.join("")
|
||||
let index=Math.max(lines.length-1,0);
|
||||
lines[index]=lines[index]+other.join("");
|
||||
return text;
|
||||
}
|
||||
|
||||
comment
|
||||
=comment:(multiLine/singleLine)
|
||||
@ -57,7 +76,7 @@ quote
|
||||
|
||||
|
||||
|
||||
kw_start=KW_SINGLE_LINE_START/KW_MULTI_LINE_START/"\""/"'"
|
||||
kw_start=KW_SINGLE_LINE_START/KW_MULTI_LINE_START/"\""/"'"/";"
|
||||
|
||||
|
||||
KW_SINGLE_LINE_START = "--";
|
||||
|
Reference in New Issue
Block a user