Volkan YAZICI <[EMAIL PROTECTED]> writes:
> Ama benim daha güzel bir önerim var. Siz bize kullandığınız Perl
> düzenli ifadelerinin Emacs'te çalışanlarını yollayın (Bunun için
> replace-regexp ile deneme yanılma yaparak işe başlayabilirsiniz.), biz
> de programınızın emacs lisp ile yazılmışını size gönderelim.

Bi biskrem versem?

(defun make-getter-setter (type var)
  (format
   (concat "public %s get%s() { return %s; }\n"
           "public %s set%s(%s %s) { this.%s = %s; }\n")
   type var var                 ; getter line
   type var type var var var))  ; setter line

(defun extract-class-variables (&rest modifiers)
  (let ((regexp
         (concat
          "^\\([ \t]*\\)"
          "\\(" (mapconcat (lambda (m) (format "%S" m)) modifiers "\\|") "\\)"
          "\\([ \t]*\\)"
          "\\([A-Za-z0-9<>]+\\)"
          "\\([ \t]*\\)"
          "\\([a-zA-Z0-9]+\\);$")))
    (save-excursion
      (goto-char (point-min))
      (loop for pos = (search-forward-regexp regexp nil t)
            while pos collect (let ((modifier (match-string 2))
                                    (type (match-string 4))
                                    (name (match-string 6)))
                                (list modifier type name))))))

(defun generate-class-getter-setter (&rest modifiers)
  (insert
   (mapconcat (lambda (var) (apply 'make-getter-setter (rest var)))
              (apply 'extract-class-variables modifiers)
              "\n")))

Test için (generate-class-getter-setter 'private 'public) fonksiyonunu
çağırabilirsiniz. Bundan sonra size kalan iş, bu fonksiyonu bir
kısayol tuşuna atamak. Ama bunun çözümünü bi' biskrem için bile
yapamam.


İyi çalışmalar.

_______________________________________________
cs-lisp mailing list
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap