diff options
author | Eduardo Julian | 2018-01-28 12:55:27 -0400 |
---|---|---|
committer | Eduardo Julian | 2018-01-28 12:55:27 -0400 |
commit | 04ec239d095b0e1f62a9f1261587b5bfbc6fb457 (patch) | |
tree | 819ef38ab8786f3c7f8aa28e188146aeb7317646 /luxc/src/lux/reader.clj | |
parent | fb14b2eb168377820b3af399c44dc2c4b6973f5a (diff) |
- Fixed some parsing errors affecting JVM interface analysis/compilation.
Diffstat (limited to '')
-rw-r--r-- | luxc/src/lux/reader.clj | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/luxc/src/lux/reader.clj b/luxc/src/lux/reader.clj index 6fea32c16..5f4aa8afe 100644 --- a/luxc/src/lux/reader.clj +++ b/luxc/src/lux/reader.clj @@ -63,6 +63,20 @@ (&/T [(&/T [file-name line-num column-num*]) line])))) ($No (str "[Reader Error] Pattern failed: " regex)))))) +(defn read-regex? [regex] + "(-> Regex (Reader (Maybe Text)))" + (with-line + (fn [file-name line-num column-num ^String line] + (if-let [^String match (re-find! regex column-num line)] + (let [match-length (.length match) + column-num* (+ column-num match-length)] + (if (= column-num* (.length line)) + ($Done (&/T [(&/T [file-name line-num column-num]) true (&/$Some match)])) + ($Yes (&/T [(&/T [file-name line-num column-num]) false (&/$Some match)]) + (&/T [(&/T [file-name line-num column-num*]) line])))) + ($Yes (&/T [(&/T [file-name line-num column-num]) false &/$None]) + (&/T [(&/T [file-name line-num column-num]) line])))))) + (defn read-regex+ [regex] (with-lines (fn [reader] |