1. A computer-implemented method comprising: storing a matching library comprising code for matching a plurality of predicates in a first procedural programming language against nodes of an abstract syntax tree (AST); obtaining an input AST corresponding to computer program code to analyze; obtaining, from a user, analysis code comprising a predicate expression query referencing the matching library and action code performing an action with respect to the computer program code, wherein the computer program code, the predicate expression query, and the action code are specified in the same first procedural programming language; identifying nodes of the input AST that match the predicate expression query by executing code of the matching library; executing the action code against the identified nodes of the input AST that match the predicate expression query; and outputting a result of the execution of the action code.
1. A computer-implemented method comprising: storing a matching library comprising code for matching a plurality of predicates in a first procedural programming language against nodes of an abstract syntax tree (AST); obtaining an input AST corresponding to computer program code to analyze; obtaining, from a user, analysis code comprising a predicate expression query referencing the matching library and action code performing an action with respect to the computer program code, wherein the computer program code, the predicate expression query, and the action code are specified in the same first procedural programming language; identifying nodes of the input AST that match the predicate expression query by executing code of the matching library; executing the action code against the identified nodes of the input AST that match the predicate expression query; and outputting a result of the execution of the action code. 11. The computer-implemented method of claim 1 , wherein the plurality of predicates includes a predicate that accepts a plurality of sub-predicates and that is satisfied if and only if each of the sub-predicates is satisfied.