Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
UnrankedPattern.h
Go to the documentation of this file.
1
6#pragma once
7
9#include <core/stringApi.hpp>
10
12
15
16namespace core {
17
18template<class SymbolType >
19struct stringApi < tree::UnrankedPattern < SymbolType > > {
21 static bool first ( ext::istream & input );
22 static void compose ( ext::ostream & output, const tree::UnrankedPattern < SymbolType > & tree );
23};
24
25template<class SymbolType >
27 tree::TreeFromStringLexer::Token token = tree::TreeFromStringLexer::next ( input );
29 throw exception::CommonException ( "Unrecognised UNRANKED_PATTERN token." );
30
31 ext::set < SymbolType > nonlinearVariables;
32
33 bool isPattern = false;
34 bool isExtendedPattern = false;
35
36 ext::tree < SymbolType > content = tree::TreeFromStringParserCommon::parseUnrankedContent < SymbolType > ( input, isPattern, isExtendedPattern, nonlinearVariables );
37
38 if ( ! nonlinearVariables.empty ( ) )
39 throw exception::CommonException ( "Unexpected variables recognised" );
40 if ( isExtendedPattern )
41 throw exception::CommonException ( "Unexpected node wildcards recognised" );
42
43 return tree::UnrankedPattern < SymbolType > ( alphabet::WildcardSymbol::instance < SymbolType > ( ), alphabet::GapSymbol::instance < SymbolType > ( ), content );
44}
45
46template<class SymbolType >
48 tree::TreeFromStringLexer::Token token = tree::TreeFromStringLexer::next ( input );
51 return res;
52}
53
54template<class SymbolType >
56 output << "UNRANKED_PATTERN ";
57 tree::TreeToStringComposerCommon::compose ( output, tree.getSubtreeWildcard ( ), tree.getSubtreeGap ( ), tree.getContent ( ) );
58}
59
60} /* namespace core */
61
Basic exception from which all other exceptions are derived.
Definition: CommonException.h:21
static void putback(ext::istream &input, const Token &token)
Definition: lexer.hpp:61
Definition: istream.h:32
Definition: ostream.h:14
Definition: set.hpp:44
Class introducing a tree with interface trying to be close to the interface of standard library conta...
Definition: tree.hpp:52
static Token next(ext::istream &input)
Definition: TreeFromStringLexer.cpp:10
static void compose(ext::ostream &, const ext::tree< common::ranked_symbol< SymbolType > > &node)
Definition: TreeToStringComposerCommon.h:28
Tree pattern represented in its natural representation. The representation is so called unranked,...
Definition: UnrankedPattern.h:73
return res
Definition: MinimizeByPartitioning.h:145
Definition: normalize.hpp:10
Definition: BackwardOccurrenceTest.h:17
Definition: stringApi.hpp:26