Clojure で単純な正規表現を動作させて、いくつかの SQL 予約語 (select、from、where など) の文字列をテストしようとしましたが、動作させることができません:
(defn areserved? [c]
(re-find #"select|from|where|order by|group by" c))
(文字列をスペースで分割してから、すべての単語を調べます)
助けていただければ幸いです。
ありがとう!
編集: 私の最初の目標 (いくつかの例と基本的な Clojure 資料を読んだ後) は、文字列を解析し、その各部分 (つまり、単語) に対して、ステートメント (予約語、文字列など) に含まれる「ジョブ」を返すことです。 )。
私がこれまでに持っているもの:
(use '[clojure.string :only (join split)])
(defn isdigit? [c]
(re-find #"[0-9]" c))
(defn isletter? [c]
(re-find #"[a-zA-Z]" c))
(defn issymbol? [c]
(re-find #"[\(\)\[\]!\.+-><=\?*]" c))
(defn isstring? [c]
(re-find #"[\"']" c))
(defn areserved? [c]
(if (re-find #"select|from|where|order by|group by" c)
true
false))
(defn what-is [token]
(let [c (subs token 0 1)]
(cond
(isletter? c) :word
(areserved? c) :reserved
(isdigit? c) :number
(issymbol? c) :symbol
(isstring? c) :string)))
(defn checkr [token]
{:token token
:type (what-is token)})
(defn goparse [sql-str]
(map checkr (.split sql-str " ")))
みんな助けてくれてありがとう!このような比較的新しい言語に対する多くのサポートを見るのは素晴らしいことです (少なくとも私にとっては :))