|
|
| |
Makefile::AST(3) |
User Contributed Perl Documentation |
Makefile::AST(3) |
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".
This AST library provides the following classes:
- Makefile::AST
- 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.
- Makefile::AST::Rule::Base
- This is the base class for the rule nodes in the AST. It has properties
like "normal_prereqs",
"order_prereqs",
"commands", and
"colon".
- Makefile::AST::Rule
- 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".
- Makefile::AST::Rule::Implicit
- 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".
- Makefile::AST::StemMatch
- This class encapsulates the file pattern matching (file names containing
"%") and stem substitution
algorithms.
- Makefile::AST::Variable
- It represents the makefile variable nodes in the AST, including
"name",
"value",
"flavor", and
"origin".
- Makefile::AST::Command
- 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>"
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.
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. |