/* $Id: $ */

/* Copyright (C) 1998 Sverre Hvammen Johansen,
 * Department of Informatics, University of Oslo.
 *
 * This program 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; version 2.
 *
 * This program 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 this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */

#include "dekl.h"
#include "lex.h"

#define is_after_dot(re) (re->up->token==MDOT && re->up->right==re)

/* expbuilder.c */

extern struct EXP *newexp();
extern struct EXP *makeexp();
extern struct EXP *concexp();
extern struct EXP *replacenode(); 
extern struct EXP *elook();
extern remove_dot ();

struct EXP
  {
    int token;
    union val value;
    char type,
      danger,
      konst;
    struct EXP *left,
     *right,
     *up;
    struct DECL *rd;
    struct DECL *qual;
    struct BLOCK *seenthrough;
    long line;
  };

extern int token;
extern int buildLineno;

extern struct EXP *copytree ();

/* sentbuilder.c */

struct SENT
{
  int token, line;
  char nonetest, indextest, stripsideeffects;
  struct BLOCK *cblock;
  struct EXP *iexp;
  struct EXP *exp;
  struct SENT *prev, *next;
  struct SENT *first,*last;
  int lastLine;
};

extern void insert_thunk ();
extern void insertAfterSent ();
extern void insertBeforeSent ();
extern void removeSent ();
struct SENT *newSent();
struct SENT *sbuild();
void setFlag ();

extern char nonetest;
extern char indextest;
extern char stripsideeffects;


syntax highlighted by Code2HTML, v. 0.9.1