--- /dev/null
+#ifndef astlib_h\r
+#define astlib_h\r
+\r
+/*\r
+ * astlib.h -- C ast_* library header\r
+ *\r
+ * SOFTWARE RIGHTS\r
+ *\r
+ * We reserve no LEGAL rights to SORCERER -- SORCERER is in the public\r
+ * domain. An individual or company may do whatever they wish with\r
+ * source code distributed with SORCERER or the code generated by\r
+ * SORCERER, including the incorporation of SORCERER, or its output, into\r
+ * commerical software.\r
+ *\r
+ * We encourage users to develop software with SORCERER. However, we do\r
+ * ask that credit is given to us for developing SORCERER. By "credit",\r
+ * we mean that if you incorporate our source code into one of your\r
+ * programs (commercial product, research project, or otherwise) that you\r
+ * acknowledge this fact somewhere in the documentation, research report,\r
+ * etc... If you like SORCERER and have developed a nice tool with the\r
+ * output, please mention that you developed it using SORCERER. In\r
+ * addition, we ask that this header remain intact in our source code.\r
+ * As long as these guidelines are kept, we expect to continue enhancing\r
+ * this system and expect to make other tools available as they are\r
+ * completed.\r
+ *\r
+ * SORCERER 1.00B\r
+ * Terence Parr\r
+ * AHPCRC, University of Minnesota\r
+ * 1992-1994\r
+ */\r
+#include <setjmp.h>\r
+#include "sorcerer.h"\r
+#include "sorlist.h"\r
+\r
+#define MaxTreeStackDepth 400\r
+\r
+#ifdef __USE_PROTOS\r
+extern SORAST *ast_make(SORAST *rt, ...);\r
+extern SORAST *ast_find_all(SORAST *t, SORAST *u, SORAST **cursor);\r
+extern int ast_match(SORAST *t, SORAST *u);\r
+extern void ast_insert_after(SORAST *a, SORAST *b);\r
+extern void ast_append(SORAST *a, SORAST *b);\r
+extern SORAST *ast_tail(SORAST *a);\r
+extern SORAST *ast_bottom(SORAST *a);\r
+extern SORAST *ast_cut_between(SORAST *a, SORAST *b);\r
+extern SList *ast_to_slist(SORAST *t);\r
+extern SORAST *slist_to_ast(SList *list);\r
+extern void ast_free(SORAST *t);\r
+extern int ast_scan(char *template, SORAST *tree, ...);\r
+extern int ast_nsiblings(SORAST *t);\r
+extern SORAST *ast_sibling_index(SORAST *t, int i);\r
+extern int ast_match_partial(SORAST *t, SORAST *u);\r
+#else\r
+extern SORAST *ast_make();\r
+extern SORAST *ast_find_all();\r
+extern int ast_match();\r
+extern void ast_insert_after();\r
+extern void ast_append();\r
+extern SORAST *ast_tail();\r
+extern SORAST *ast_bottom();\r
+extern SORAST *ast_cut_between();\r
+extern SList *ast_to_slist();\r
+extern SORAST *slist_to_ast();\r
+extern void ast_free();\r
+extern int ast_scan();\r
+extern int ast_nsiblings();\r
+extern SORAST *ast_sibling_index();\r
+extern int ast_match_partial();\r
+#endif\r
+\r
+#endif\r