29 #ifndef Om_Language_Expression_
31 #define Om_Language_Expression_ \
32 Om::Language::Expression
36 #ifndef Om_Macro_Precompilation_
38 #include "boost/optional.hpp"
42 #define Om_Language_Expression_GetName_() \
66 template <
typename ThisForm>
83 template <
typename TheOperand>
86 template <
typename TheOperator>
89 template <
typename TheProducer>
100 template <
typename TheOperand>
103 template <
typename TheOperator>
106 template <
typename TheProducer>
109 virtual std::auto_ptr<
133 template <
typename TheOperand>
136 template <
typename TheOperator>
139 template <
typename TheProducer>
142 template <
typename TheSeparator>
157 template <
typename TheFormIterator>
160 TheFormIterator theCurrent,
161 TheFormIterator
const theEnd
203 FormDeque::const_iterator
An Element taker; takes at the back.
A partial implementation of Program.
A Program that contains a single elemental item (or none, when IsEmpty() returns true).
An Expression Element range.
FormDeque::const_iterator thisFormEnd
The FormDeque end.
ElementRange(Expression const &)
boost::optional< Form::ElementRange > thisFormElementRange
The Element range for the current Form.
FormDeque::const_iterator thisFormIterator
The FormDeque iterator.
virtual Element const & operator*() const
bool Equals(ElementRange const &) const
virtual bool operator!() const
virtual void Pop()
Pops the current item.
The Expression Program implementation.
void TakeElements(Expression &)
virtual bool IsEmpty() const
static void GiveElements(Consumer &theConsumer, TheFormIterator theCurrent, TheFormIterator const theEnd)
Expression & operator=(Expression)
void BackTakeOperand(TheOperand &)
virtual void GiveElements(Consumer &)
void TakeSeparator(TheSeparator &)
static char const * GetName()
virtual void TakeElements(Producer const &)
This is an overloaded member function, provided for convenience. It differs from the above function o...
virtual void ParseElements(Reader &)
void TakeElements(Expression const &)
void FrontTakeOperand(TheOperand &)
void FrontTakeQuotedProducer(TheProducer &)
virtual std::auto_ptr< Om::Source::Source< Element const > > GetElementRange() const
void FrontGiveTerm(Consumer &)
void TakeQuotedProducer(TheProducer &)
void FrontGiveForm(Consumer &)
void FrontTakeOperator(TheOperator &)
std::deque< Form > FormDeque
virtual void TakeElements(Producer &)
Takes each Element of the argument.
void BackTakeOperator(TheOperator &)
void TakeOperator(TheOperator &)
void TakeOperand(TheOperand &)
virtual void GiveElements(Consumer &) const
void BackTakeQuotedProducer(TheProducer &)
void BackGiveForm(Consumer &)
void BackGiveTerm(Consumer &)
virtual void ParseQuotedElements(Reader &)
An Element giver; gives from the front.
Produces each CodePoint until the end of the Source.
A range over a collection, starting from the front.
A partial implementation of Source.
Any object that items can be pulled from.
bool operator!=(DefaultAtom< TheImplementation > const &, DefaultAtom< TheImplementation > const &)
bool operator==(DefaultAtom< TheImplementation > const &, DefaultAtom< TheImplementation > const &)
void swap(Om::Language::Expression &, Om::Language::Expression &)