Makefile::AST - AST for (GNU) makefiles
The structure of this (GNU) makefile AST is designed based on GNU make's data base listing output produced by --print-data-base.
--print-data-base
This AST library provides the following classes:
The primary class for ASTs. Provides interface for node adding and querying, such as add_implicit_rule, apply_implicit_rules, add_explicit_rule, apply_explicit_rules, add_var, add_auto_var, get_var, as well as lots of other utility functions, like method eval_var_value for computing the ultimate values of makefile variables, method enter_pad and leave_pad for local variable's scoping pad.
add_implicit_rule
apply_implicit_rules
add_explicit_rule
apply_explicit_rules
add_var
add_auto_var
get_var
eval_var_value
enter_pad
leave_pad
This is the base class for the rule nodes in the AST. It has properties like normal_prereqs, order_prereqs, commands, and colon.
normal_prereqs
order_prereqs
commands
colon
This class represents the de-sugared form of simple rules and implicite rules after application. It inherits from Makefile::AST::Rule::Base, and adds new properties target and other_targets.
target
other_targets
This class represents the implicit rule nodes in the AST. It inherits from Makefile::AST::Rule::Base, and adds new properties targets, match_anything, and is_terminal.
targets
match_anything
is_terminal
This class encapsulates the file pattern matching (file names containing %) and stem substitution algorithms.
%
It represents the makefile variable nodes in the AST, including name, value, flavor, and origin.
name
value
flavor
origin
Used to encapsulate information regarding makefile rule commands (e.g. command body, command modifiers @, -, +, and etc.) as a whole.
@
-
+
Adding support for other flavors' makes into this AST library should make a huge amount of sense. The most interesting candiate is Microsoft's NMAKE.
For the very latest version of this script, check out the source from
http://github.com/agentzh/makefile-parser-pm.
There is anonymous access to all.
Zhang "agentzh" Yichun <agentzh@gmail.com>
<agentzh@gmail.com>
Copyright (c) 2007-2008 by Zhang "agentzh" Yichun (agentzh).
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Makefile::AST::Evaluator, Makefile::Parser::GmakeDB, makesimple, pgmake-db, Makefile::DOM.
To install Makefile::Parser, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Makefile::Parser
CPAN shell
perl -MCPAN -e shell install Makefile::Parser
For more information on module installation, please visit the detailed CPAN module installation guide.