Teuchos - Trilinos Tools Package Version of the Day
Loading...
Searching...
No Matches
Teuchos_Grammar.hpp
1// @HEADER
2// *****************************************************************************
3// Teuchos: Common Tools Package
4//
5// Copyright 2004 NTESS and the Teuchos contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef TEUCHOS_GRAMMAR_HPP
11#define TEUCHOS_GRAMMAR_HPP
12
13#include <string>
14#include <vector>
15
16#include <Teuchos_RCP.hpp>
17
18namespace Teuchos {
19
20/* convention: symbols are numbered with all
21 terminal symbols first, all non-terminal symbols after */
22
23struct Grammar {
24 typedef std::vector<int> RHS;
25 struct Production {
26 int lhs;
27 RHS rhs;
28 };
29 typedef std::vector<Production> Productions;
30 int nsymbols;
31 int nterminals;
32 Productions productions;
33 std::vector<std::string> symbol_names;
34};
35
36typedef RCP<const Grammar> GrammarPtr;
37
38int get_nnonterminals(Grammar const& g);
39bool is_terminal(Grammar const& g, int symbol);
40bool is_nonterminal(Grammar const& g, int symbol);
41int as_nonterminal(Grammar const& g, int symbol);
42int find_goal_symbol(Grammar const& g);
43void add_end_terminal(Grammar& g);
44int get_end_terminal(Grammar const& g);
45void add_accept_production(Grammar& g);
46int get_accept_production(Grammar const& g);
47int get_accept_nonterminal(Grammar const& g);
48
49std::ostream& operator<<(std::ostream& os, Grammar const& g);
50
51}
52
53#endif
Reference-counted pointer class and non-member templated function implementations.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...