parent
cf461fced1
commit
d286e75897
1 changed files with 34 additions and 0 deletions
@ -0,0 +1,34 @@ |
|||||||
|
(setq regex-1 ".*?mul(\\([[:digit:]]\\{1,3\\}\\),\\([[:digit:]]\\{1,3\\}\\))") |
||||||
|
|
||||||
|
(setq regex-2-1 ".*?\\(mul([[:digit:]]\\{1,3\\},[[:digit:]]\\{1,3\\})\\|don't()\\|do()\\)") |
||||||
|
|
||||||
|
(defun try-regex-part1 () |
||||||
|
(replace-regexp regex-1 "\n(* \\1 \\2);")) |
||||||
|
|
||||||
|
(defun try-regex-part2 () |
||||||
|
(interactive) |
||||||
|
(goto-char (point-min)) |
||||||
|
(replace-regexp regex-2-1 "\n\\1") ;remove most of the broken code |
||||||
|
(kill-line) ;remove the rest of the broken code |
||||||
|
(goto-char (point-min)) |
||||||
|
(replace-regexp "do()" "do") |
||||||
|
(goto-char (point-min)) |
||||||
|
(replace-regexp "don't()" "dont") |
||||||
|
(goto-char (point-min)) |
||||||
|
(replace-regexp regex-1 "(* \\1 \\2)") |
||||||
|
(goto-char (point-min)) |
||||||
|
(insert "(") |
||||||
|
(goto-char (point-max)) |
||||||
|
(insert ")") |
||||||
|
) |
||||||
|
|
||||||
|
;; the above turns the input into some pseudo lisp code. the code is then executed by the sexp below |
||||||
|
|
||||||
|
(-reduce-from (lambda (i e) (cond |
||||||
|
((eq e 'do) `(t ,(cadr i))) |
||||||
|
((eq e 'dont) `(nil ,(cadr i))) |
||||||
|
(t (if (car i) `(t ,(+ (cadr i) (eval e))) |
||||||
|
`(t ,(cadr i)))))) |
||||||
|
'(t 0) code)) |
||||||
|
|
||||||
|
; this is quite horrible, and probably there is a more efficient way |
||||||
Loading…
Reference in new issue