本文整理汇总了C++中TokenPtr类的典型用法代码示例。如果您正苦于以下问题:C++ TokenPtr类的具体用法?C++ TokenPtr怎么用?C++ TokenPtr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TokenPtr类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: paramCb
void paramCb(const TokenPtr& msg)
{
if (std::dynamic_pointer_cast<EndOfSequenceMessage const>(msg->getTokenData())) {
return;
}
params_.push_back(msg->getTokenData());
}
示例2: SymbolListPtr
void IOBlock::preprocess() {
// get rid of the beginning and end parens
this->get_unprocessed()->erase(this->get_unprocessed()->begin());
this->get_unprocessed()->erase(this->get_unprocessed()->end() - 1);
if (this->action == IO_WRITE) {
SymbolListPtr pre = SymbolListPtr(new SymbolList());
for (auto i = this->get_unprocessed()->begin();
i != this->get_unprocessed()->end(); i++) {
TokenPtr t = *i;
if (t->get_token() != MP_COMMA) {
SymbolPtr p = translate(t);
pre->push_back(p);
} else {
// reset
this->expressions->push_back(pre);
pre = SymbolListPtr(new SymbolList());
}
}
this->expressions->push_back(pre);
} else if (this->action == IO_READ) {
for (auto i = this->get_unprocessed()->begin();
i != this->get_unprocessed()->end(); i++) {
TokenPtr t = *i;
if (t->get_token() != MP_COMMA) {
SymbolPtr p = translate(t);
this->get_symbol_list()->push_back(p);
}
}
}
}
示例3: assert
void Document::_processBlocksItems(TokenPtr inTokenContainer) {
if (!inTokenContainer->isContainer()) return;
token::Container *tokens=dynamic_cast<token::Container*>(inTokenContainer.get());
assert(tokens!=0);
TokenGroup processed;
for (TokenGroup::const_iterator ii=tokens->subTokens().begin(),
iie=tokens->subTokens().end(); ii!=iie; ++ii)
{
if ((*ii)->text()) {
optional<TokenPtr> subitem;
if (!subitem) subitem=parseHeader(ii, iie);
if (!subitem) subitem=parseHorizontalRule(ii, iie);
if (!subitem) subitem=parseListBlock(ii, iie);
if (!subitem) subitem=parseBlockQuote(ii, iie);
if (!subitem) subitem=parseCodeBlock(ii, iie);
if (subitem) {
_processBlocksItems(*subitem);
processed.push_back(*subitem);
if (ii==iie) break;
continue;
} else processed.push_back(*ii);
} else if ((*ii)->isContainer()) {
_processBlocksItems(*ii);
processed.push_back(*ii);
}
}
tokens->swapSubtokens(processed);
}
示例4: DefineOprt
/** \brief Define a binary operator.
\param a_pCallback Pointer to the callback object
*/
void ParserXBase::DefineOprt(const TokenPtr<IOprtBin> &oprt)
{
if (IsOprtDefined(oprt->GetIdent()))
throw ParserError(ErrorContext(ecFUNOPRT_DEFINED, 0, oprt->GetIdent()));
oprt->SetParent(this);
m_OprtDef[oprt->GetIdent()] = ptr_tok_type(oprt->Clone());
}
示例5: style
/**
* Style text based on the token for the length given
*/
void FbEditor::style(int length, TokenPtr token)
{
if (token->getKind() == TokenKind::Invalid || !token->isValid()) {
SetIndicatorCurrent(ErrorIndicator);
IndicatorFillRange(GetEndStyled(), length);
}
style(length, _tokenStyles[(int)token->getKind()]);
}
示例6: write_raw
void LoopBlock::generate_pre() {
if (this->type == RPTUNTLLOOP) {
write_raw(this->body_label + ":\n");
} else if (this->type == WHILELOOP) {
write_raw(this->cond_label + ":\n");
VarType result = this->generate_expr(this->get_symbol_list());
if (result != BOOLEAN) {
report_error_lc("Semantic Error",
"Conditional expression doesn't evaluate to boolean value.",
(*this->get_symbol_list()->begin())->get_row(),
(*this->get_symbol_list()->begin())->get_col());
}
write_raw("\nBRTS " + this->body_label);
write_raw("BR " + this->exit_label);
write_raw(this->body_label + ":\n");
} else if (this->type == FORLOOP) {
// parse the assignment
// process the assignment
AssignmentBlockPtr assignment = AssignmentBlockPtr(new AssignmentBlock(false));
assignment->set_analyzer(this->get_analyzer());
for (auto i = 0; i < 3; i++) {
assignment->catch_token((*this->get_unprocessed())[i]);
}
// generate its code
assignment->preprocess();
assignment->generate_pre();
assignment->generate_post();
// generate the condition label
write_raw(this->cond_label + ":\n");
// process the ordinal expression
AssignmentBlockPtr ordinal_expr = AssignmentBlockPtr(new AssignmentBlock(true));
ordinal_expr->set_analyzer(this->get_analyzer());
for (unsigned int i = 4; i < this->get_unprocessed()->size(); i++) {
ordinal_expr->catch_token((*this->get_unprocessed())[i]);
}
// get the comparison components for the ordinal expr
TokenPtr incrementer = (*this->get_unprocessed())[3];
if (incrementer->get_token() == MP_TO) {
ordinal_expr->catch_token(TokenPtr(new Token(MP_EQUALS, "=", -1, -1)));
} else if (incrementer->get_token() == MP_DOWNTO) {
ordinal_expr->catch_token(TokenPtr(new Token(MP_EQUALS, "=", -1, -1)));
}
ordinal_expr->catch_token((*this->get_unprocessed())[0]);
if (incrementer->get_token() == MP_TO) {
ordinal_expr->catch_token(TokenPtr(new Token (MP_MINUS, "-", -1, -1)));
ordinal_expr->catch_token(TokenPtr(new Token (MP_INT_LITERAL, "1", -1, -1)));
} else if (incrementer->get_token() == MP_DOWNTO) {
ordinal_expr->catch_token(TokenPtr(new Token (MP_PLUS, "+", -1, -1)));
ordinal_expr->catch_token(TokenPtr(new Token (MP_INT_LITERAL, "1", -1, -1)));
}
// generate its code
ordinal_expr->preprocess();
ordinal_expr->generate_pre();
write_raw("\nBRFS " + this->body_label);
write_raw("BR " + this->exit_label + "\n");
write_raw(this->body_label + ":\n");
}
}
示例7: TEST_F
TEST_F(AutoGenerateTest, ExplicitTypesAreDetected)
{
factory.registerNodeType(GenericNodeFactory::createConstructorFromFunction(f1, "f1"));
UUID node_id = UUIDProvider::makeUUID_without_parent("foobarbaz");
NodeFacadeImplementationPtr node = factory.makeNode("f1", node_id, uuid_provider);
ASSERT_TRUE(node != nullptr);
ASSERT_EQ(node_id, node->getUUID());
ASSERT_EQ(node->getParameters().size(), 1);
ASSERT_EQ(node->getInputs().size(), 2 + node->getParameters().size());
ASSERT_EQ(node->getOutputs().size(), 1 + node->getParameters().size());
GenericValueMessage<int>::Ptr a(new GenericValueMessage<int>);
GenericValueMessage<int>::Ptr b(new GenericValueMessage<int>);
a->value = 23;
b->value = 42;
InputPtr i1 = node->getNodeHandle()->getInput(UUIDProvider::makeDerivedUUID_forced(node_id, "in_0"));
ASSERT_TRUE(i1 != nullptr);
InputPtr i2 = node->getNodeHandle()->getInput(UUIDProvider::makeDerivedUUID_forced(node_id, "in_1"));
ASSERT_TRUE(i2 != nullptr);
TokenPtr ta = std::make_shared<Token>(a);
TokenPtr tb = std::make_shared<Token>(b);
param::ParameterPtr p = node->getParameter("param 2");
ASSERT_TRUE(p != nullptr);
p->set<int>(1337);
param::ValueParameter::Ptr vp = std::dynamic_pointer_cast<param::ValueParameter>(p);
ASSERT_TRUE(vp != nullptr);
i1->setToken(ta);
i2->setToken(tb);
NodePtr n = node->getNode();
n->process(*node->getNodeHandle(), *n);
OutputPtr o = node->getNodeHandle()->getOutput(UUIDProvider::makeDerivedUUID_forced(node_id, "out_0"));
ASSERT_TRUE(o != nullptr);
o->commitMessages(false);
TokenPtr to = o->getToken();
ASSERT_TRUE(to != nullptr);
ASSERT_TRUE(to->getTokenData() != nullptr);
GenericValueMessage<int>::ConstPtr result = std::dynamic_pointer_cast<GenericValueMessage<int> const>(to->getTokenData());
ASSERT_TRUE(result != nullptr);
ASSERT_EQ((a->value + b->value + vp->as<int>()), result->value);
}
示例8: data
void SubgraphNode::deactivation()
{
if (deactivation_event_) {
TokenDataConstPtr data(new connection_types::AnyMessage);
TokenPtr token = std::make_shared<Token>(data);
token->setActivityModifier(ActivityModifier::DEACTIVATE);
deactivation_event_->triggerWith(token);
}
}
示例9: catch_token
void IOBlock::catch_token(TokenPtr token) {
// no filtering, since the capture is for
// comma separated expressions
if (token->get_token() != MP_WRITE
&& token->get_token() != MP_WRITELN
&& token->get_token() != MP_READ
&& token->get_token() != MP_READLN)
this->get_unprocessed()->push_back(token);
}
示例10: DefineInfixOprt
/** \brief Add a user defined operator.
\param a_pOprt Pointer to a unary postfix operator object. The parser will
become the new owner of this object hence will destroy it.
*/
void ParserXBase::DefineInfixOprt(const TokenPtr<IOprtInfix> &oprt)
{
if (IsInfixOprtDefined(oprt->GetIdent()))
throw ParserError(ErrorContext(ecFUNOPRT_DEFINED, 0, oprt->GetIdent()));
// Function is not added yet, add it.
oprt->SetParent(this);
m_InfixOprtDef[oprt->GetIdent()] = ptr_tok_type(oprt->Clone());
}
示例11: initilizeObject
void ParserMixin::initilizeObject(const ParseContextSPtr& context, const TokenPtr& token, ObjectSPtr object)
{
if (!token)
{
initilizeObject(context, object);
return;
}
object->set_sourceId(context->mSourceId);
object->set_line(token->line());
object->set_column(token->beginColumn());
}
示例12: fitnessCb
void fitnessCb(const TokenPtr& data)
{
if (auto val = std::dynamic_pointer_cast<GenericValueMessage<double> const>(data->getTokenData())) {
// std::unique_lock<std::mutex> lock(data_available_mutex_);
fitness_.push_back(val->value);
} else if (std::dynamic_pointer_cast<EndOfSequenceMessage const>(data->getTokenData())) {
} else {
throw std::runtime_error("unkown message recieved: " + data->getTokenData()->typeName());
}
}
示例13: parseProjectStatement
bool ProjectParserMixin::parseProjectStatement(const ProjectParseContextSPtr& context, const CommentSPtr& comment)
{
TokenizerPtr& tokenizer = context->tokenizer;
TokenPtr core;
if (tokenizer->check(Token::TYPE_IDENTIFIER, "core"))
{
core = tokenizer->current();
tokenizer->shift();
skipComments(context);
}
if (tokenizer->check(Token::TYPE_IDENTIFIER, "section"))
{
SectionSPtr section = parseSection(context, comment);
if (section)
{
context->mProject << section;
}
}
else
if (tokenizer->check(Token::TYPE_IDENTIFIER, "package"))
{
if (!core)
{
*context <<= errorMessage(context, Message::p_unknownStatment)
<< Message::Context("package")
<< Message::Options("core");
}
PackageSPtr package = parsePackage(context);
if (!core || !package)
return false;
core.reset();
context->mProject->set_corePackage(package);
}
else
{
*context <<= errorMessage(context, Message::p_unknownStatment)
<< Message::Context("top")
<< Message::Options("section");
tokenizer->shift();
}
return true;
}
示例14: parse
typename parser_result<self_t, Scanner>::type
parse(Scanner const& scan) const
{
if (!scan.at_end())
{
TokenPtr t = *scan;
if(ReferenceCounting::strict_cast<Type> (t) != 0 &&
lexeme_ == t->lexeme ())
{
Iterator save(scan.first);
++scan;
return scan.create_match(1, t, save, scan.first);
}
}
return scan.no_match();
}
示例15: yield_if
void PageTemplate::yield_if(const ArgumentList& arguments, const ArrayArgument::Item* arrayItem, const TokenPtr& token, std::string& result) const
{
const IfToken* iftoken = static_cast<const IfToken*>(token.get());
const std::string& value = get_variable(arguments, arrayItem, iftoken->data);
if (value.empty())
yield_tokens(arguments, arrayItem, iftoken->if_false, result);
else
yield_tokens(arguments, arrayItem, iftoken->if_true, result);
}