Re: [問題] 類似SQL的Parser
看板RegExp (正規表示式 Regular Expression)作者charleshu (Analog Engineer)時間15年前 (2010/05/22 16:56)推噓1(1推 0噓 0→)留言1則, 1人參與討論串2/2 (看更多)
※ 引述《Geniusking (真理斯金)》之銘言:
: 我的String是一個像SQL的Query,有sub select:
: select A, B from Table where city in
: ( select id from Table where name in
: ( select name from Table where id=J ))
: 現在用
: preg_match("/SELECT (.+) FROM (.+) WHERE (.+) IN \([\s]*(.+)\)$/i", $q, $m)
: Match的結果是(找到第二個from了):
: 請問要怎麼做才好?謝謝
Regular express 沒有完整的 state 功能, 並不適合作完整的 Parser,
如果你需要作 SQL Parser, 應該用正規的 Parser builder 如 Yacc, bison, ANTLR 或自己寫 Recursive Parser.
Lex & Yacc 2nd 有SQL Parser 的範例, 台灣 Oreilly 有出中文版, 翻譯的不錯.
--
Do not depend on others without effort...
當我年輕時,請教別人問題時常聽到上面那句話. 當時心裏偶而會有些小小抱怨.
當時間過去,我偶而會想到上面那句話, 心中十分感謝當初告訴我那句話的人.
當發現問題時,最有價值的不是問題的答案,
而是找到解決的方向,並在努力的過程裡具備解決問題的能力.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.73.242.205
推
05/23 09:14, , 1F
05/23 09:14, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
RegExp 近期熱門文章
PTT數位生活區 即時熱門文章