104 template<
class CharSeq>
132 return !(*
this == other);
146 std::string
const &
id()
const {
167 return lookup().first->second.expansion();
172 return lookup().first->second.eval();
177 return lookup().first->second.reported();
182 return lookup().first->second.complete();
template struct traits::is_random_access_char_sequence<T> exports a static const boolean member value...
bool operator!=(reference const &other) const
Inequality.
reference(symbol::locator loc, reference const *invoker=nullptr)
Construct given a symbol locator.
virtual std::string const & invocation() const
Get a string representation of the reference.
void report()
Report this reference appropriately.
void do_report()
Do reporting of the reference if reportable.
argument_list const & args() const
Get a [const] reference to the argument_list of the reference.
struct symbol::locator encapsulates a symbol table entry.
static iterator lower_bound(std::string const &key)
Get an iteraror to the lower bound of a key in the cache.
symbol::locator const & callee() const
Get a [const] the state of the referenced symbol.
map::iterator iterator
Iterator type on map
bool configured() const
Say whether the symbol is configured.
map::value_type value_type
Value-type of map
Class argument_list encapsulates a list of macro arguments, i.e. the arguments to a macro reference...
bool reportable() const
Say whether this reference is eligible for reporting.
evaluation const & eval()
Get the evaluation of the expansion.
reference_cache::insert_result lookup()
Lookup the reference in the cache.
reference_cache::insert_result insert_result
Type of result from cache insertion.
symbol::locator _referee
The symbol_state of the referenced symbol.
bool complete()
Say whether this reference has been fully expanded.
reference_cache::value_type digest()
Return a cache entry for this reference.
std::string const & id() const
Get the name of the symbol.
void set_invoked(bool value=true)
Mark the symbol as invoked, or not.
reference_cache::iterator lower_bound() const
Get a lower bound to this reference in the reference cache.
reference_cache::entry expand(bool explain)
Expand the reference.
reference(symbol::locator loc, chewer< CharSeq > &chew, reference const *invoker=nullptr)
Construct given a symbol locator, a chewer<CharSeq>, and optional parent reference.
std::string const & expansion()
Get the expansion of the reference.
std::string _key
Key to this reference in the reference cache.
bool reported()
Say whether this reference has been reported.
std::string const & id() const
Get the name of the symbol referenced.
argument_list _args
The argument_list of the reference.
bool operator==(reference const &other) const
Equality.
std::pair< iterator, bool > insert_result
Type of result of insertion.
`template struct chewer<CharSeq> is a cursor-like type that is associated with a character-sequence t...
evaluation validate() const
Diagnose a syntactically invalid reference.
reference(symbol::locator loc, argument_list const &args, reference const *invoker=nullptr)
Construct given a symbol locator argument_list and optional parent reference.
Encapsulates an entry in the reference cache.
reference const * _invoker
Pointer to the reference that invokes this one, if any, else null.
struct evaluation represents the result of evaluating a putative expression.
bool explain() const
Say whether we are to explain this reference.
bool explaining() const
Say whether this reference is to be explained or is descended from one being explained.