blob: 46234b076886428431a597843ac78c46cff4c908 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#ifndef NT_SPAN_H
#define NT_SPAN_H
#include <iostream>
#include "wordid.h"
#include "tdict.h"
struct Span {
int l,r;
Span() : l(-1) { }
friend inline std::ostream &operator<<(std::ostream &o,Span const& s) {
if (s.l<0)
return o;
return o<<'<'<<s.l<<','<<s.r<<'>';
}
};
struct NTSpan {
Span s;
WordID nt; // awkward: this is a positive index, used in TD. but represented as negative in mixed terminal/NT space in rules/hgs.
NTSpan() : nt(0) { }
// prints as possibly empty name (whatever you set of nt,s will show)
friend inline std::ostream &operator<<(std::ostream &o,NTSpan const& t) {
if (t.nt>0)
o<<TD::Convert(t.nt);
return o << t.s;
}
};
#endif
|