P4C
The P4 Compiler
Loading...
Searching...
No Matches
syntacticEquivalence.h
1/*
2 * Copyright 2016 VMware, Inc.
3 * SPDX-FileCopyrightText: 2016 VMware, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef FRONTENDS_P4_TYPECHECKING_SYNTACTICEQUIVALENCE_H_
9#define FRONTENDS_P4_TYPECHECKING_SYNTACTICEQUIVALENCE_H_
10
11#include "frontends/common/resolveReferences/referenceMap.h"
12#include "frontends/p4/typeMap.h"
13#include "ir/ir.h"
14
15namespace P4 {
16
17// Check if two expressions are syntactically equivalent
18class SameExpression {
19 const DeclarationLookup *refMap;
20 const TypeMap *typeMap;
21
22 public:
23 explicit SameExpression(const DeclarationLookup *refMap, const TypeMap *typeMap)
24 : refMap(refMap), typeMap(typeMap) {
25 CHECK_NULL(refMap);
26 CHECK_NULL(typeMap);
27 }
28 bool sameType(const IR::Type *left, const IR::Type *right) const;
29 bool sameExpression(const IR::Expression *left, const IR::Expression *right) const;
30 bool sameExpressions(const IR::Vector<IR::Expression> *left,
31 const IR::Vector<IR::Expression> *right) const;
32 bool sameExpressions(const IR::Vector<IR::Argument> *left,
33 const IR::Vector<IR::Argument> *right) const;
34};
35
36} // namespace P4
37
38#endif /* FRONTENDS_P4_TYPECHECKING_SYNTACTICEQUIVALENCE_H_ */
Definition referenceMap.h:57
Definition ir/vector.h:59
Definition typeMap.h:32
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13