Scroll to navigation

Makefile::AST(3) User Contributed Perl Documentation Makefile::AST(3)

NAME

Makefile::AST - AST for (GNU) makefiles

DESCRIPTION

The structure of this (GNU) makefile AST is designed based on GNU make's data base listing output produced by "--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.
This is the base class for the rule nodes in the AST. It has properties like "normal_prereqs", "order_prereqs", "commands", and "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".
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".
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".
Used to encapsulate information regarding makefile rule commands (e.g. command body, command modifiers "@", "-", "+", and etc.) as a whole.

LIMITATIONS AND TODO

Adding support for other flavors' makes into this AST libary should make a huge amount of sense. The most interesting candiate is Microsoft's NMAKE.

SVN REPOSITORY

For the very latest version of this script, check out the source from

<http://svn.openfoundry.org/makefileparser/branches/gmake-db>.

There is anonymous access to all.

AUTHOR

Agent Zhang "<agentzh@yahoo.cn>"

COPYRIGHT AND LICENSE

Copyright (c) 2007-2008 by Agent Zhang (agentzh).

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Makefile::AST::Evaluator, Makefile::Parser::GmakeDB, makesimple, pgmake-db, Makefile::DOM.

2008-03-16 perl v5.10.1