aboutsummaryrefslogtreecommitdiff
path: root/src/hyper/parse-types.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2008-03-07 15:19:01 +0000
committerdos-reis <gdr@axiomatics.org>2008-03-07 15:19:01 +0000
commit8531f4c74274b8aa99168d220738227557a9c418 (patch)
treec50b77870e432317be8f99c248e1339f74b51661 /src/hyper/parse-types.pamphlet
parent33949ff2e6e5b5abe8d22c5604f42a6c9371079a (diff)
downloadopen-axiom-8531f4c74274b8aa99168d220738227557a9c418.tar.gz
* hyper/: De-pamphletize.
Diffstat (limited to 'src/hyper/parse-types.pamphlet')
-rw-r--r--src/hyper/parse-types.pamphlet821
1 files changed, 0 insertions, 821 deletions
diff --git a/src/hyper/parse-types.pamphlet b/src/hyper/parse-types.pamphlet
deleted file mode 100644
index 8f3902ce..00000000
--- a/src/hyper/parse-types.pamphlet
+++ /dev/null
@@ -1,821 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/parse-types}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{parse-types.h}
-<<parse-types.h>>=
-<<license>>
-#ifndef _PARSE_TYPES_H_
-#define _PARSE_TYPES_H_ 1
-
-#include "hyper.h"
-
-extern boolean gInButton;
-extern boolean gInIf;
-extern boolean gInItems;
-extern boolean gInOptional;
-
-
-#endif
-@
-\section{parse-types.c}
-<<parse-types.c>>=
-/******************************************************************************
- *
- * parse-types.h: HyperDoc parsing routines for node types.
- *
- * Copyright The Numerical Algorithms Group Limited 1991, 1992, 1993.
- *
- ****************************************************************************/
-#define _PARSE_TYPES_C
-#include "axiom-c-macros.h"
-#include "useproto.h"
-#include "debug.h"
-
-#include "parse.h"
-#include "parse-aux.h"
-#include "parse-types.h"
-#include "cond.h"
-#include "lex.h"
-#include "mem.h"
-#include "extent.h"
-#include "hterror.h"
-
-#include "all_hyper_proto.H1"
-
-boolean gInButton = FALSE;
-boolean gInIf = FALSE;
-boolean gInItems = FALSE;
-boolean gInOptional = FALSE;
-
-void
-parse_ifcond(void)
-{
- TextNode *ifnode = curr_node;
- TextNode *endif;
- TextNode *condnode;
-
- /*
- * parse a conditional. At first I am just going to parse if
- * <hypertext> fi
- */
- if (gInIf) {
- curr_node->type = Noop;
- fprintf(stderr, "\\if found within \\if \n");
- longjmp(jmpbuf, 1);
- fprintf(stderr, "Longjump failed, Exiting\n");
- exit(-1);
- }
- gInIf++;
- curr_node->type = Ifcond;
- curr_node->space = token.id[-1];
- curr_node->data.ifnode = alloc_ifnode();
- /* Now get the cond node I hope */
-
- condnode = curr_node->data.ifnode->cond = alloc_node();
- curr_node = condnode;
- parse_condnode();
-
- endif = alloc_node();
- endif->type = Endif;
- ifnode->data.ifnode->thennode = alloc_node();
- curr_node = ifnode->data.ifnode->thennode;
- parse_HyperDoc();
- if (token.type == Fi) {
- curr_node->type = Fi;
- curr_node->next = endif;
- ifnode->data.ifnode->elsenode = endif;
- }
- else if (token.type == Else) {
- /* first finish up the then part */
- curr_node->type = Fi;
- curr_node->next = endif;
- /* the go and parse the else part */
- ifnode->data.ifnode->elsenode = alloc_node();
- curr_node = ifnode->data.ifnode->elsenode;
- parse_HyperDoc();
- if (token.type != Fi) {
- token_name(token.type);
- curr_node->type = Noop;
- fprintf(stderr, "Expected a \\fi not a %s", ebuffer);
- longjmp(jmpbuf, 1);
- fprintf(stderr, "Longjump failed, Exiting\n");
- exit(-1);
- }
- curr_node->type = Fi;
- curr_node->next = endif;
- }
- else {
- curr_node->type = Noop;
- token_name(token.type);
- fprintf(stderr, "Expected a \\fi not a %s", ebuffer);
- longjmp(jmpbuf, 1);
- fprintf(stderr, "Longjump failed, Exiting\n");
- exit(-1);
- }
- ifnode->next = ifnode->data.ifnode->thennode;
- ifnode->width = -1; /* A flag for compute if extents */
- curr_node = endif;
- gInIf--;
-}
-
-static void
-parse_condnode(void)
-{
- get_token();
-
- switch (token.type) {
- case Cond:
- curr_node->type = Cond;
- curr_node->data.text = alloc_string(token.id);
- break;
- case Haslisp:
- case Hasreturn:
- case Lastwindow:
- case Hasup:
- curr_node->type = token.type;
- break;
- case Boxcond:
- curr_node->type = Boxcond;
- curr_node->data.text = alloc_string(token.id);
- break;
- case Hasreturnto:
- parse_hasreturnto();
- break;
- default:
- {
- char eb[128];
- token_name(token.type);
- sprintf(eb, "Unexpected Token %s\n", eb);
- htperror(eb, HTCONDNODE);
- }
- break;
- }
-}
-
-static void
-parse_hasreturnto(void)
-{
- TextNode *hrt = curr_node, *arg_node = alloc_node();
-
- curr_node->type = Hasreturnto;
- curr_node = arg_node;
- get_expected_token(Lbrace);
- parse_HyperDoc();
- curr_node->type = Endarg;
- hrt->data.node = arg_node;
- curr_node = hrt;
-}
-
-void
-parse_newcond(void)
-{
- char label[256];
-
- get_expected_token(Lbrace);
- get_expected_token(Unkeyword);
- strcpy(label, token.id);
- get_expected_token(Rbrace);
- insert_cond(label, "0");
- curr_node->type = Noop;
-}
-
-void
-parse_setcond(void)
-{
- char label[256], cond[256];
-
- get_expected_token(Lbrace);
- get_expected_token(Cond);
- strcpy(label, token.id);
- get_expected_token(Rbrace);
- get_expected_token(Lbrace);
- get_expected_token(Word);
- strcpy(cond, token.id);
- get_expected_token(Rbrace);
- change_cond(label, cond);
- curr_node->type = Noop;
-}
-
-void
-parse_begin_items(void)
-{
- TextNode *bi = curr_node;
-
- /*
- * This procedure parses a begin item. It sets the current
- * node and sees if there is an optional argument for the itemspace
- */
-
- bi->type = token.type;
- get_token();
- if (token.type == Lsquarebrace) {
- bi->data.node = alloc_node();
- curr_node = bi->data.node;
- gInOptional++;
- parse_HyperDoc();
- gInOptional--;
- curr_node->type = Enddescription;
- if (token.type != Rsquarebrace) {
- fprintf(stderr, "(HyperDoc) Optional arguments must end with ].\n");
- print_next_ten_tokens();
- print_page_and_filename();
- jump();
- }
- curr_node = bi;
- }
- else
- unget_token();
- gInItems++;
-}
-
-void
-parse_item(void)
-{
- if (!gInItems) {
- fprintf(stderr, "\\item found outside an items environment\n");
- print_page_and_filename();
- print_next_ten_tokens();
- jump();
- }
- curr_node->type = Item;
- get_token();
- if (token.type == Lsquarebrace) {
- /* I should parse the optional argument */
- curr_node->next = alloc_node();
- curr_node = curr_node->next;
- curr_node->type = Description;
- curr_node->next = alloc_node();
- curr_node = curr_node->next;
- gInOptional++;
- parse_HyperDoc();
- gInOptional--;
- curr_node->type = Enddescription;
- if (token.type != Rsquarebrace) {
- fprintf(stderr, "(HyperDoc) Optional arguments must end with ].\n");
- print_next_ten_tokens();
- print_page_and_filename();
- jump();
- }
- }
- else {
- unget_token();
- }
-}
-
-void
-parse_mitem(void)
-{
- if (!gInItems) {
- fprintf(stderr, "\\mitem found outside an items environment\n");
- print_page_and_filename();
- print_next_ten_tokens();
- jump();
- }
- curr_node->type = Mitem;
-}
-
-char *vbuf = NULL;
-int vbuf_size = 0;
-
-#define VbufSlop 10
-#define resizeVbuf()\
- if (size == vbuf_size) { \
- vbuf = resizeBuffer(size + VbufSlop, vbuf, &vbuf_size); \
- vb = vbuf + size; \
- }
-
-#define new_verb_node() \
- resizeVbuf(); \
- *vb = '\0'; \
- curr_node->data.text = alloc_string(vbuf); \
- curr_node->next = alloc_node(); \
- curr_node = curr_node->next; \
- curr_node->type = Newline; \
- curr_node->next = alloc_node(); \
- curr_node = curr_node->next; \
- curr_node->type = type; \
- if (*end_string == '\n') es = end_string+1; \
- else es = end_string; \
- size = 0; \
- vb = vbuf;
-
-void
-parse_verbatim(int type)
-{
- int size = 0, c;
- char *end_string, *vb = vbuf, *es;
-
- curr_node->type = type;
- if (token.id[-1])
- curr_node->space = 1;
- if (type == Spadsrctxt) {
- es = end_string = "\n\\end{spadsrc}";
- }
- else if (type == Math)
- es = end_string = "$";
- else
- es = end_string = "\\end{verbatim}";
- while ((c = get_char()) != EOF) {
- resizeVbuf();
- size++;
- if (c == '\n') {
- new_verb_node();
- continue;
- }
- *vb++ = c;
- if (*es++ != c)
- es = end_string;
- if (!*es)
- break;
- }
- if (c == EOF) {
- fprintf(stderr, "parse_verbatim: Unexpected EOF found\n");
- longjmp(jmpbuf, 1);
- }
- resizeVbuf();
- if (*end_string == '\n')
- es = end_string + 1;
- else
- es = end_string;
- vbuf[size - strlen(es)] = '\0';
- if (*vbuf) {
- curr_node->data.text = alloc_string(vbuf);
- curr_node->next = alloc_node();
- curr_node = curr_node->next;
- }
- if (type == Spadsrctxt)
- curr_node->type = Endspadsrc;
- else if (type == Math)
- curr_node->type = Endmath;
- else
- curr_node->type = Endverbatim;
-}
-
-void
-parse_input_pix(void)
-{
- TextNode *pixnode;
- char *filename;
-
- pixnode = curr_node;
- pixnode->type = token.type;
- pixnode->space = token.id[-1];
- pixnode->width = -1;
- get_expected_token(Lbrace);
- filename = get_input_string();
- pixnode->data.text = alloc_string(filename);
- curr_node = pixnode;
- if (pixnode->type == Inputimage) {
- char f[256];
- char *p;
-
- if ((gXDisplay && DisplayPlanes(gXDisplay, gXScreenNumber) == 1) || gSwitch_to_mono ==1) {
- pixnode->type = Inputbitmap;
- strcpy(f, pixnode->data.text);
- strcat(f, ".bm");
- p=pixnode->data.text;
- pixnode->data.text = alloc_string(f);
- free(p);
- }
- else {
- pixnode->type = Inputpixmap;
- strcpy(f, pixnode->data.text);
-#ifdef OLD
- strcat(f, ".pm");
-#endif
- strcat(f, ".xpm.Z");
- p=pixnode->data.text;
- pixnode->data.text = alloc_string(f);
- free(p);
- }
- }
-}
-
-void
-parse_centerline(void)
-{
- curr_node->type = token.type;
- curr_node->space = token.id[-1];
- curr_node->width = -1;
- curr_node->next = alloc_node();
- curr_node = curr_node->next;
- get_expected_token(Lbrace);
- parse_HyperDoc();
- if (token.type != Rbrace) {
- curr_node->type = Noop;
- fprintf(stderr, "(HyperdDoc) \\centerline was expecting a }\n");
- print_page_and_filename();
- print_next_ten_tokens();
- longjmp(jmpbuf, 1);
- }
- curr_node->type = Endcenter;
-}
-
-void
-parse_command(void)
-{
- TextNode *link_node, *save_node, *arg_node;
-
- gInButton++;
- if (gParserMode == SimpleMode) {
- curr_node->type = Noop;
- fprintf(stderr, "Parser Error token %s unexpected\n",
- token_table[token.type]);
- longjmp(jmpbuf, 1);
- }
- gStringValueOk = 1;
-
- /* set the values for the current node */
- curr_node->type = token.type;
- curr_node->space = token.id[-1];
-
- /* now parse for the label */
- link_node = curr_node;
- curr_node->next = alloc_node();
- curr_node = curr_node->next;
- get_expected_token(Lbrace);
- parse_HyperDoc();
- curr_node->type = Endbutton;
- save_node = curr_node;
- arg_node = alloc_node();
- curr_node = arg_node;
- get_expected_token(Lbrace);
- parse_HyperDoc();
- curr_node->type = Endarg;
- link_node->link = make_link_window(arg_node, link_node->type, 0);
- gStringValueOk = 0;
- curr_node = save_node;
- gInButton--;
-}
-
-void
-parse_button(void)
-{
- TextNode *link_node, *save_node;
-
- gInButton++;
- if (gParserMode == SimpleMode) {
- curr_node->type = Noop;
- fprintf(stderr, "Parser Error token %s unexpected\n",
- token_table[token.type]);
- longjmp(jmpbuf, 1);
- }
- /* fill the node */
- curr_node->type = token.type;
- curr_node->space = token.id[-1];
-
- /* the save the current node for creating the link and stuff */
- link_node = curr_node;
-
- /* then parse the label */
- curr_node->next = alloc_node();
- curr_node = curr_node->next;
- get_expected_token(Lbrace);
- parse_HyperDoc();
- curr_node->type = Endbutton;
-
- /* now try to get the argument node */
- save_node = curr_node;
- get_expected_token(Lbrace);
- save_node->data.node = alloc_node();
- curr_node = save_node->data.node;
- parse_HyperDoc();
- curr_node->type = Endarg;
-
- /*
- * buffer[0] = '\0'; print_to_string(arg_node, buffer + 1);
- */
- link_node->link =
- make_link_window(save_node->data.node, link_node->type, 0);
- curr_node = save_node;
- gInButton--;
-}
-
-extern int example_number;
-
-void
-parse_spadcommand(TextNode *spad_node)
-{
- /*TextNode *node = NULL;*/
-
- example_number++;
- gInButton++;
- spad_node->type = token.type;
- spad_node->space = token.id[-1];
- get_expected_token(Lbrace);
- cur_spadcom = curr_node;
-
- spad_node->next = alloc_node();
- curr_node = spad_node->next;
- parse_HyperDoc();
- curr_node->type = Endspadcommand;
- cur_spadcom = NULL;
- spad_node->link = make_link_window(spad_node->next, spad_node->type, 1);
- gInButton--;
-}
-
-void
-parse_spadsrc(TextNode *spad_node)
-{
- char buf[512], *c = buf;
- int ch, start_opts = 0;
- /*TextNode *node = NULL;*/
-
- example_number++;
- gInButton++;
- gInSpadsrc++;
- spad_node->type = Spadsrc;
- spad_node->space = token.id[-1];
-
- cur_spadcom = curr_node;
- spad_node->next = alloc_node();
- curr_node = spad_node->next;
-
- do {
- ch = get_char();
- if (ch == ']')
- start_opts = 0;
- if (start_opts)
- *c++ = ch;
- if (ch == '[')
- start_opts = 1;
- } while (ch != '\n');
- *c = '\0';
- parse_verbatim(Spadsrctxt);
- parse_from_string(buf);
-
- curr_node->type = Endspadsrc;
- cur_spadcom = NULL;
- spad_node->link = make_link_window(spad_node->next, Spadsrc, 1);
- gInButton--;
- gInSpadsrc--;
-}
-
-void
-parse_env(TextNode *node)
-{
- char *env;
- char buff[256];
- char *buff_pntr = &buff[1];
- int noEnv = 0;
-
- get_expected_token(Lbrace);
- get_expected_token(Word);
- env = getenv(token.id);
-
- if (env == NULL) {
- /** The environment variable was not found **/
-
- fprintf(stderr, "(HyperDoc) Warning: environment variable \'%s\' was not found.\n",
- token.id);
-
- env = halloc(1, "string");
- env[0] = '\0';
- noEnv = 1;
- }
-
- buff[0] = token.id[-1];
- strcpy(buff_pntr, env);
-
- if (noEnv)
- free(env);
-
- node->data.text = alloc_string(buff_pntr);
- node->type = Word;
-
- get_expected_token(Rbrace);
-}
-
-/*
- * This parse_value routine accepts an empty {} but makes it a zero instead
- * of a one. Thus \indent{} is equivelant to \indent{0}
- */
-
-void
-parse_value1(void)
-{
- TextNode *value_node, *ocn = curr_node;
- char *s;
-
- curr_node->type = token.type;
- curr_node->space = token.id[-1];
-
- value_node = alloc_node();
- value_node->type = Word;
- curr_node->data.node = value_node;
- get_expected_token(Lbrace);
- s = get_input_string();
- if (!is_number(s)) {
- fprintf(stderr,
- "Parser Error: parse for value was expecting a numeric value\n");
- strcpy(value_node->data.text, "0");
- }
- else {
- value_node->data.text = alloc_string(s);
- }
- curr_node = ocn;
-}
-
-/*
- * This command accepts an empty argument command. Thus \space{} is
- * equivelant \space{1}
- */
-
-void
-parse_value2(void)
-{
- TextNode *value_node, *ocn = curr_node;
- char *s;
-
- curr_node->type = token.type;
- curr_node->space = token.id[-1];
-
- value_node = alloc_node();
- value_node->type = Word;
- curr_node->data.node = value_node;
- get_expected_token(Lbrace);
- s = get_input_string();
- if (!is_number(s)) {
- fprintf(stderr,
- "Parser Error: parse for value was expecting a numeric value\n");
- strcpy(value_node->data.text, "1");
- }
- else {
- value_node->data.text = alloc_string(s);
- }
- curr_node = ocn;
-}
-
-
-/* parse a \table sommand */
-
-void
-parse_table(void)
-{
- TextNode *tn = curr_node;
-
- if (gParserMode != AllMode) {
- curr_node->type = Noop;
- fprintf(stderr, "Parser Error token %s unexpected\n",
- token_table[token.type]);
- longjmp(jmpbuf, 1);
- }
- curr_node->type = Table;
- get_expected_token(Lbrace);
- curr_node->next = alloc_node();
- curr_node = curr_node->next;
-
- get_token();
- if (token.type == Lbrace) {
- while (token.type != Rbrace) {
- curr_node->type = Tableitem;
- curr_node->next = alloc_node();
- curr_node = curr_node->next;
- parse_HyperDoc();
- curr_node->type = Endtableitem;
- curr_node->next = alloc_node();
- curr_node = curr_node->next;
- get_token();
- }
- curr_node->type = Endtable;
- }
- else { /* a patch for SG for empty tables */
- if (token.type != Rbrace) {
- token_name(token.type);
- fprintf(stderr,
- "Unexpected Token %s found while parsing a table\n",
- ebuffer);
- print_page_and_filename();
- jump();
- }
- tn->type = Noop;
- tn->next = NULL;
- free(curr_node);
- curr_node = tn;
- }
-}
-
-void
-parse_box(void)
-{
- curr_node->type = token.type;
- curr_node->space = token.id[-1];
- curr_node->width = -1;
- curr_node->next = alloc_node();
- curr_node = curr_node->next;
- get_expected_token(Lbrace);
- parse_HyperDoc();
- curr_node->type = Endbox;
-}
-
-void
-parse_mbox(void)
-{
- curr_node->type = token.type;
- curr_node->space = token.id[-1];
- curr_node->width = -1;
- curr_node->next = alloc_node();
- curr_node = curr_node->next;
- get_expected_token(Lbrace);
- parse_HyperDoc();
- curr_node->type = Endbox;
-}
-
-void
-parse_free(void)
-{
- TextNode *free_node = curr_node;
-
- curr_node->type = token.type;
- curr_node->space = token.id[-1];
- curr_node->width = -1;
- curr_node->data.node = alloc_node();
- curr_node = curr_node->data.node;
- get_expected_token(Lbrace);
- parse_HyperDoc();
- curr_node->type = Endarg;
- curr_node = free_node;
-}
-
-void
-parse_help(void)
-{
- curr_node->type = Noop;
- get_token();
- if (token.type != Lbrace) {
- token_name(token.type);
- fprintf(stderr, "\\helppage was expecting a { and not a %s\n", ebuffer);
- print_page_and_filename();
- jump();
- }
-
-/* before we clobber this pointer we better free the contents (cf. alloc_page) */
- free(gPageBeingParsed->helppage);
- gPageBeingParsed->helppage = alloc_string(get_input_string());
-
- if (token.type != Rbrace) {
- token_name(token.type);
- fprintf(stderr, "\\helppage was expecting a } and not a %s\n",
- ebuffer);
- print_page_and_filename();
- jump();
- }
-}
-@
-\section{License}
-<<license>>=
-/*
-Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-@
-<<*>>=
-<<license>>
-<<parse-types.c>>
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
-
-
-
-