blob: a8e9c4a0e518a0d0fcae2029b0dd070a1688f879 [file] [log] [blame]
/* parse.h */
/*
Copyright (C) 2003 Unique Software Designs
This file is part of the program "lambda".
The program "lambda" is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
The program "lambda" is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with "lambda"; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A copy of the GNU General Public License may also be found at:
http://www.gnu.org/copyleft/gpl.html
*/
extern int trace_lambda;
extern int step_lambda;
extern int print_symbols;
extern int applicative_order;
extern int reduce_body;
extern int brief_print;
extern int step_thru;
extern int reduce_fully;
class lambda_expression_parser
{
public:
lambda_expression_parser(token_stream* tokstr=0);
~lambda_expression_parser();
exp_node* expression(arglst_node** penv=0);
exp_node* application();
exp_node* lambda();
exp_node* alist();
exp_node* atom();
public:
arglst_node* definition(arglst_node** penv);
arglst_node* load(arglst_node** penv);
public:
exp_node* extraction(arglst_node** penv,int inp=0);
public:
void set_tok_str(token_stream* tokstr);
void reset();
void dderrmsg(char* format,...);
private:
token_stream* tokstr_v;
int paren_nest_level_v;
};