gogrep
1.0.0
GO111MODULE=on go get mvdan.cc/gogrep
ค้นหาโค้ด Go โดยใช้แผนผังไวยากรณ์
gogrep -x 'if $x != nil { return $x, $*_ }'
โปรดทราบว่าโครงการนี้ ไม่ได้รับการพัฒนาอีกต่อไป ดู #64 สำหรับรายละเอียดเพิ่มเติม
usage: gogrep commands [packages]
คำสั่งจะอยู่ในรูปแบบ "-A pattern" โดยที่ -A คือหนึ่งใน:
-x find all nodes matching a pattern
-g discard nodes not matching a pattern
-v discard nodes matching a pattern
-a filter nodes by certain attributes
-s substitute with a given syntax tree
-w write source back to disk or stdout
รูปแบบคือส่วนหนึ่งของโค้ด Go ซึ่งอาจรวมถึงไวด์การ์ด มันสามารถ:
a statement (many if split by semicolons)
an expression (many if split by commas)
a type expression
a top-level declaration (var, func, const)
an entire file
สัญลักษณ์แทนประกอบด้วย $
และชื่อ ไวด์การ์ดทั้งหมดที่มีชื่อเดียวกันภายในนิพจน์จะต้องตรงกับโหนดเดียวกัน ยกเว้น "_" ตัวอย่าง:
$x.$_ = $x // assignment of self to a field in self
หาก *
อยู่หน้าชื่อ จะจับคู่โหนดจำนวนเท่าใดก็ได้ ตัวอย่าง:
fmt.Fprintf(os.Stdout, $*_) // all Fprintfs on stdout
*
ยังสามารถใช้เพื่อจับคู่โหนดเสริมได้ เช่น:
for $*_ { $*_ } // will match all for loops
if $*_; $b { $*_ } // will match all ifs with condition $b
โหนดที่เกิดจากการใช้คำสั่งจะถูกพิมพ์ทีละบรรทัดไปยังเอาต์พุตมาตรฐาน
ต่อไปนี้เป็นตัวอย่างง่ายๆ 2 ตัวอย่างของ -a operand:
gogrep -x '$x + $y' // will match both numerical and string "+" operations
gogrep -x '$x + $y' -a 'type(string)' // matches only string concatenations