view anagram/guisupport/stexpdc.h @ 21:1c9dac05d040

Add lint-style FALLTHROUGH annotations to fallthrough cases. (in the parse engine and thus the output code) Document this, because the old output causes warnings with gcc10.
author David A. Holland
date Mon, 13 Jun 2022 00:04:38 -0400
parents 13d2b8934445
children
line wrap: on
line source

/*
 * AnaGram, A System for Syntax Directed Programming
 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
 * See the file COPYING for license and usage terms.
 *
 * stexpdc.h
 */

#ifndef STEXPDC_H
#define STEXPDC_H

class state_expansion_dc : public dc {
public:
  static MenuOption *auxTable[];
  virtual MenuOption **getAuxWinMenu(void) { return auxTable; }
  unsigned state_number;
  tsd *expansion;

  state_expansion_dc(unsigned, const AgString, const AgString);
  state_expansion_dc(state_expansion_dc &x)
    : dc(x),
      state_number(x.state_number),
      expansion(x.expansion) {}

  ~state_expansion_dc(void);
  virtual unsigned token(unsigned);
  virtual void getLine(unsigned) const;
  virtual void synchCursor(unsigned) const;

  virtual dc_ref aux_trace(unsigned);
  virtual dc_ref expansion_chain(unsigned);
  virtual dc_ref expansion_rules(unsigned);
  virtual dc_ref previous_states(unsigned);
  virtual dc_ref productions(unsigned ln);
  virtual dc_ref reduction_states(unsigned);
  virtual dc_ref rule_context(unsigned);
  virtual dc_ref set_elements(unsigned);
  virtual dc_ref usage(unsigned);

  virtual int expansion_chain_ok(unsigned);
  virtual int expansion_rules_ok(unsigned);
  virtual int previous_states_ok(unsigned);
  virtual int productions_ok(unsigned ln);
  virtual int reduction_states_ok(unsigned);
  virtual int rule_context_ok(unsigned ln) { return ln != 0; }
  virtual int set_elements_ok(unsigned);
  virtual int usage_ok(unsigned);
};

class expansion_chain_dc : public state_expansion_dc {
public:
  unsigned rule_number;
  expansion_chain_dc(unsigned sn, unsigned rn, AgString foot);
};

dc_ref expansion_chain_window(int,int,int);
dc_ref state_expansion_window(int);

#endif /* STEXPDC_H */