X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=fml%2Ffmlp.h;h=d926466a032525c371aa54b6df7f71a2e4951397;hb=8467171ebdb5f018740de8d82149c8ccc53d2815;hp=5b0aa3457e00633f349cc7dd80b9b1f0be9acaec;hpb=345de2254e0c2f8c5f40951d0509e8f5ddbc11a9;p=egate.git diff --git a/fml/fmlp.h b/fml/fmlp.h index 5b0aa34..d926466 100644 --- a/fml/fmlp.h +++ b/fml/fmlp.h @@ -2,12 +2,49 @@ * FML interpreter. Europagate, 1995 * * $Log: fmlp.h,v $ - * Revision 1.1 1995/02/06 13:48:09 adam - * Initial revision + * Revision 1.10 1995/02/23 08:32:06 adam + * Changed header. + * + * Revision 1.8 1995/02/10 18:15:52 adam + * FML function 'strcmp' implemented. This function can be used to + * test for existence of MARC fields. + * + * Revision 1.7 1995/02/10 15:50:56 adam + * MARC interface implemented. Minor bugs fixed. fmltest can + * be used to format single MARC records. New function '\list' + * implemented. + * + * Revision 1.6 1995/02/09 16:06:07 adam + * FML can be called from the outside multiple times by the functions: + * fml_exec_call and fml_exec_call_str. + * An interactive parameter (-i) to fmltest starts a shell-like + * interface to FML by using the fml_exec_call_str function. + * + * Revision 1.5 1995/02/09 14:37:19 adam + * Removed .depend from cvs. Removed function fml_mk_list. + * + * Revision 1.4 1995/02/09 14:33:37 adam + * Split source fml.c and define relevant build-in functions in separate + * files. New operators mult, div, not, llen implemented. + * + * Revision 1.3 1995/02/09 13:07:15 adam + * Nodes are freed now. Many bugs fixed. + * + * Revision 1.2 1995/02/07 16:09:23 adam + * The \ character is no longer INCLUDED when terminating a token. + * Major changes in tokenization routines. Bug fixes in expressions + * with lists (fml_sub0). + * + * Revision 1.1.1.1 1995/02/06 13:48:10 adam + * First version of the FML interpreter. It's slow and memory isn't + * freed properly. In particular, the FML nodes aren't released yet. * */ -#include "fml.h" +#include + +#ifndef FMLP_H +#define FMLP_H #define FML_MAX_TOKEN 2048 @@ -29,13 +66,14 @@ struct fml_atom *fml_atom_alloc (Fml fml, char *str); int fml_atom_str (struct fml_atom *a, char *str); void fml_atom_strx (struct fml_atom *a, char *str, int max); int fml_atom_val (struct fml_atom *a); -struct fml_node *fml_mk_list (Fml fml, struct fml_node *fn); void fml_node_delete (Fml fml, struct fml_node *fn); struct fml_node *fml_node_copy (Fml fml, struct fml_node *fn); +struct fml_node *fml_mk_node_val (Fml fml, int val); +int fml_atom_cmp (Fml fml, struct fml_atom *a1, struct fml_atom *a2); struct token { int kind; - int after_char; + int separate; int maxbuf; int offset; char *atombuf; @@ -70,6 +108,7 @@ void fml_sym_push (struct fml_sym_tab *tab); void fml_sym_pop (struct fml_sym_tab *tab, void(*ph)(struct fml_sym_info *i)); void fml_pr_list (struct fml_node *p); +void fml_node_stat (Fml fml); #define FML_FUNC 1 #define FML_IF 2 @@ -85,4 +124,16 @@ void fml_pr_list (struct fml_node *p); #define FML_BINARY 12 #define FML_BIN 13 - +void fml_rel_init (Fml fml); +void fml_arit_init (Fml fml); +void fml_list_init (Fml fml); +void fml_str_init (Fml fml); +void fml_lr_values (Fml fml, struct fml_node *l, int *left_val, + struct fml_node *r, int *right_val); +void fml_cmd_lex (struct fml_node **np, struct token *tp); +void fml_init_token (struct token *tp, Fml fml); +void fml_del_token (struct token *tp, Fml fml); +struct fml_node *fml_expr_term (Fml fml, struct fml_node **lp, + struct token *tp); +struct fml_node *fml_exec_group (struct fml_node *list, Fml fml); +#endif