I don't know a neat way to do this. Among other problems, a complete
solution would need to consider that
1. An -if- condition might contain temporary variable names, too. Your
logic seems to hold despite that.
2. An -if- condition could refer to r(), e(), c() and Stata matrices.
Your logic might need some modification there.
Nick
[email protected]
Sergiy Radyakin
how do I get the list of variables used in an if-condition passed to
my Stata program?
obviously all sorts of logical expressions and functions are permitted
in the if-condition.
program foobar
syntax [if]
// ... determine which vars are used in the if-condition and put
them in var_list ...
// ... compute something ...
end
I am looking for an elegant solution, the one that would not involve,
say, dropping vars one
by one and checking if the expression is still computable.
One solution is to replace all the ! ~ ^ + - * / = < > ] and ) to
spaces, then look at the tokens left.
Those with ( immediately following are function names, those with [ or
a space immidetely
following are variables. (and we can use -capture confirm variable- to
check that).
Is there any problem with such an approach? (e.g. factor variables in
Stata 11?)
Is there a better (or a standard/existing) approach to the problem?
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/