4
"pyparsing"을 사용하여 "CREATE TABLE"다음에 세미콜론 (";")을 추가하고 있습니다.파이핑을 사용하여 주석 스캔을 수정하십시오.
CREATE TABLE A (B VARCHAR(255))
--Comment
프로그램은 여기서 의견이처럼 주위에있을 때
CREATE TABLE A (B VARCHAR(255));
문제가 발생 :
CREATE TABLE A (B VARCHAR(255))
프로그램이 다음 출력을 줄 것이다 :이 입력이있는 경우 주는 :
CREATE TABLE A (B VARCHAR(255))
--Comment
;
import pyparsing as par
alphanumsword = par.Word(par.alphanums + "_")
element = "(" + alphanumsword + ")" | alphanumsword
row = par.OneOrMore(element)
rows = row + par.OneOrMore("," + row) | row
semicolon = par.Literal(";")
comment1 = par.Literal("--") + par.restOfLine + par.LineEnd()
createtable = par.CaselessLiteral("create") + par.CaselessLiteral("table")
+ alphanumsword + "(" + rows + ")" + ~semicolon
createtable.ignore(comment1)
createtable.ignore(par.cStyleComment)
text = \
"""
CREATE TABLE PERSON
(
/* Comment */
/*
Comment
*/
ID VARCHAR(255),
NAME VARCHAR(255), -- Comment
--- Comment
ADDRESS VARCHAR(255) NULL, -- Comment
CONSTRAINT PK_PERSON PRIMARY KEY (ID)
)
-- Comment
CREATE TABLE A (B VARCHAR(255))
"""
text_list = list(text)
offset = 0
for t,s,e in createtable.scanString(text):
print "(", t, ",", s, ",", e, ")"
print "||", text[s:e], "||"
text_list.insert(e + offset, ';')
offset += 1
print "".join(text_list)