cpp

Coverage Report

Created: 2024-03-13 14:13

/home/andy/git/oilshell/oil/cpp/osh_tdop.h
Line
Count
Source (jump to first uncovered line)
1
// Replacement for osh/arith_parse
2
3
#ifndef FRONTEND_TDOP_H
4
#define FRONTEND_TDOP_H
5
6
#include "_gen/frontend/id_kind.asdl.h"
7
#include "_gen/frontend/syntax.asdl.h"
8
9
using id_kind_asdl::Id_t;
10
using syntax_asdl::arith_expr_t;
11
using syntax_asdl::word_t;
12
13
namespace tdop {
14
15
class TdopParser;  // forward declaration
16
17
typedef arith_expr_t* (*LeftFunc)(TdopParser*, word_t*, arith_expr_t*, int);
18
typedef arith_expr_t* (*NullFunc)(TdopParser*, word_t*, int);
19
20
struct LeftInfo {
21
  LeftFunc led;
22
  int lbp;
23
  int rbp;
24
25
  DISALLOW_COPY_AND_ASSIGN(LeftInfo)
26
};
27
28
struct NullInfo {
29
  NullFunc nud;
30
  int bp;
31
32
  DISALLOW_COPY_AND_ASSIGN(NullInfo)
33
};
34
35
class ParserSpec {
36
 public:
37
  // No fields
38
1
  ParserSpec() {
39
1
  }
40
  LeftInfo* LookupLed(Id_t id);
41
  NullInfo* LookupNud(Id_t id);
42
43
0
  static constexpr ObjHeader obj_header() {
44
0
    return ObjHeader::ClassFixed(kZeroMask, sizeof(ParserSpec));
45
0
  }
46
47
  DISALLOW_COPY_AND_ASSIGN(ParserSpec)
48
};
49
50
}  // namespace tdop
51
52
#endif  // FRONTEND_TDOP_H