Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (import sys re)
- (defmacro proplist [obj &rest props]
- (list (map (fn [prop]
- `(. ~obj ~prop))
- props)))
- (defclass Tableline [object]
- [target-pos 0
- traj-speed 0
- zprivod 0
- error 0
- real-speed 0
- ready False
- rules
- [(, "Axis 2 point:.* calculated: (-?[1234567890]+)" [(, int "target_pos")])
- (, "At point: azimuth speed = (-?[1234567890]+);" [(, int "traj_speed")])
- (, "Tracking axis 2: Zprivod = (-?[1234567890]+), error = (-?[1234567890]+)"
- [(, int "zprivod") (, int "error")])
- (, "Axis 2 real speed: (-?[1234567890.]+)" [(, float "real_speed")])]]
- (defn get-rule [self]
- (while True
- (setv (. self ready) False)
- (for [r (butlast (. self rules))]
- (yield r)
- (else (do
- (setv (. self ready) True)
- (yield (last (. self rules))))))))
- (defn --str-- [self]
- (let [fstring "{}; {}; {}; {}; {};\n"]
- (apply fstring.format
- (proplist self
- target-pos
- traj-speed
- zprivod
- error
- real-speed)))))
- (defmain [&rest args]
- (setv inname (get args 1))
- (setv outname (get args 2))
- (with [ifile (open inname 'r')]
- (with [ofile (open outname 'w')]
- (setv tl (Tableline))
- (setv irule (iter (.get-rule tl)))
- (setv rule (.next irule))
- (for [line ifile]
- (setv match (re.match (get rule 0) line))
- (when match
- (for [(, group-num attr-data) (enumerate (get rule 1))]
- (setattr tl (get attr-data 1) (apply (get attr-data 0)
- [(.group match (inc group-num))])))
- (if (. tl ready) (write ofile (str tl)))
- (setv rule (.next irule)))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement