var program = <<'EOT' func foo { } func bar { } foo(); foo(); foo() bar(); bar(); EOT var parser = Parser.new # initialize a new parser parser.parse_script( code => program ) # parse the code var data = Perl.to_sidef(parser{:vars}{:main}).flatten data.sort_by { |v| -v{:count} }.first(10).each { |entry| if (entry{:type} == :func) { say ("Function `#{entry{:name}}` (declared at line", " #{entry{:line}}) is used #{entry{:count}} times") } }