source: _old/app/src/dgp/grammar.hh @ f712e16

Last change on this file since f712e16 was 57728c1, checked in by Mateusz Hromada <ruanda@…>, 15 years ago

Move old files to _old dir.

  • Property mode set to 100644
File size: 1.6 KB
Line 
1#ifndef _GRAMMAR_HH
2#define _GRAMMAR_HH
3
4#include <bitset>
5#include <vector>
6#include <list>
7#include <set>
8
9#include "const.hh"
10#include "thesymbols.hh"
11#include "sgraph.hh"
12
13
14using namespace std;
15
16class Link
17{
18  Role role;
19  FlagSet hflags;
20  FlagSet dflags;
21};
22
23
24class Grammar
25{
26
27 public:
28
29  //  enum CONSTR { SGL, OBL, LEFT, RIGHT, INIT, NONINIT, FIN, NONFIN };
30
31  Grammar() : types_sz(0), cats_sz(0), flags_sz(0) {} ;
32 
33  int types_sz;
34  int cats_sz;
35  int flags_sz;
36
37  vector< vector< Roles > >    connect;
38  RoleSet                      sgl;
39  vector< RoleSet >            obl;
40  RoleSet                      left;
41  RoleSet                      right;
42  vector< RoleSet >            lt;
43  vector< RoleSet >            gt;
44
45
46  //  vector< vector< vector<
47  vector< FlagSet >            set;
48  vector< FlagSet >            pass;
49
50  bool read(FILE* f);
51  void write(FILE* f);
52
53  void add_category(const char* s);
54  void add_type(const char* s);
55  void add_flag(const char* s);
56
57  void set_sgl(Role r)           { sgl.set(r); }
58  void set_obl(Cat c, Role r)    { obl[c].set(r); }
59  void set_left(Role r)          { left.set(r); }
60  void set_right(Role r)         { right.set(r); }
61  void set_order(Role r, Role s) { lt[s].set(r); }
62  void set_connect(Cat c, Cat d, Role r)   { connect[c][d].insert(r); }
63  void set_lt(Role r, Role s);
64  void compute_gt();
65
66
67  bool check_constr(NodeProp& hprop, NodeProp& dprop, int dir, Role role);
68
69};
70
71inline bool Grammar::check_constr(NodeProp& hprop, NodeProp& dprop, int dir, Role role)
72{
73  return 
74    !hprop.forbidden[role] &&
75    ( !right[role] || dir==1 ) &&
76    ( !left[role] || dir==0 )
77    ;
78}
79
80
81#endif
Note: See TracBrowser for help on using the repository browser.