通过提升业力重用已解析的变量

2024-01-10

我有一个与下面的代码相当的代码库。 我尝试生成一个文本文件,其内容是变量的两倍。 我觉得答案在于语义动作以及 _a 和 _val 但即使有文档也无法完成。

您将如何做才能拥有: str 中的“toto” 和输出: 托托一些东西托托

即如何在业力中重用已解析的变量?

struct data
 {
  std::string str;
 };

BOOST_FUSION_ADAPT_STRUCT(
                      data,
                      (std::string, str)
                      )

template <typename Iterator>
struct data: karma::grammar<Iterator, data() >
{
    data():data::base_type(start)
    {
        start = karma::string << karma::lit("some stuff") << karma::string; //Second string is in fact the first one 
    }
    karma::rule<Iterator, data()> start;
};

解决方案(根据下面的帖子:)

#include <iostream>
#include <string>
#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/spirit/include/karma.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_fusion.hpp>
#include <boost/spirit/include/phoenix_stl.hpp>
#include <boost/spirit/include/phoenix_object.hpp>
#include <boost/spirit/include/support_istream_iterator.hpp>
#include <boost/spirit/include/support_iso8859_1.hpp>

namespace ast
{
    struct data
    {
        std::string str;
    };
}

BOOST_FUSION_ADAPT_STRUCT(
                          ast::data,
                          (std::string, str)
                          )

namespace karma = boost::spirit::karma;

namespace parser
{

    template <typename Iterator>
    struct data: karma::grammar<Iterator, ast::data() >
    {
        data():data::base_type(start)
        {
            start =
                karma::string[karma::_1 =  boost::phoenix::at_c<0>(karma::_val)] <<
                karma::lit("some stuff") <<
                karma::string[karma::_1 =  boost::phoenix::at_c<0>(karma::_val)]
                ;
        }
        karma::rule<Iterator, ast::data()> start;
    };
}

main()
{
    ast::data d;
    d.str = "toto";
    std::string generated;
    typedef std::back_insert_iterator<std::string> iterator_type;
    parser::data<iterator_type> d_p;
    iterator_type sink(generated);
    karma::generate(sink, d_p, d);
    std::cout << generated << std::endl;
}

这应该可以解决问题:

start = karma::string[karma::_1 = karma::_val] 
    << karma::lit("some stuff") 
    << karma::string[karma::_1 = karma::_val]; 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过提升业力重用已解析的变量 的相关文章

  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi

随机推荐

  • 如何在 Handlebar 模板中使用注释?

    我使用 Handlebar js 作为我的模板引擎 现在我想注释掉车把模板中的一些块 但后来我意识到 Handlebar 不会忽略 Handlebar 注释块内的表达式 有什么解决方法吗 最新版本的 Handlebars 支持块注释 com
  • Visual Studio 2013 中没有 MVC 5 模板

    我使用的是 Visual Studio Professional 2013 当我不想创建 MVC 5 项目 使用 NET Framework 4 5 1 或 4 5 时 我转到 新建项目 gt 已安装 gt 模板 gt Visual C g
  • 为什么在 C 程序中 main() 返回 0? [复制]

    这个问题在这里已经有答案了 当编写 C C 程序时 特别是使用最新的编译器时 为什么我们需要从 main 方法返回一个整数 就像 int main 一样 我们从中返回 return 0 那么这背后的具体原因是什么呢 main 的返回值成为进
  • 没有 try 和 catch 的 finally 块是否有效?

    我尝试使用finally 块而不使用try catch 块 但在Eclipse 中出现错误 我可以使用finally 块而不使用try catch 块吗 finally应该至少有一个try block catch是可选的 finally 块
  • MVC3 - 如何将新创建的子对象链接到其父对象?

    我是 MVC 的新手 似乎无法理解一个非常基本的概念 我有一个父对象 其中包含子对象的集合 我想创建一个新的子对象 并将其链接到父对象 通过 EF4 保存在数据库中 public class Parent public int Id get
  • 如何调试 jquery AJAX 调用?

    我一直在努力尝试让 AJAX 与 Jquery 一起使用 到目前为止 我最大的问题是我真的不知道如何找出我在哪里犯了错误 我确实没有调试 AJAX 调用的好方法 我正在尝试设置一个管理页面 其中我想要实现的功能之一是更改 SQL 数据库中的
  • C# 日期时间解析

    我尝试解析 DateTime TryParse 30 05 2010 它抛出异常 因为它接受 MMddyyyy 而我需要 ddMMyyyy 格式 如何更改 TryParse 格式 thanks Dani 您可以使用日期时间 TryParse
  • anaconda ipython 的路径是否已损坏?

    我希望使用 ipython 的 anaconda 发行版 但是输入ipython在终端产生一条错误消息 Traceback most recent call last File usr local bin ipython line 5 in
  • javascript:读取html标签中的lang属性

    In 标签我有属性lang 我如何使用 js 达到它 我想使用包含的 lang 作为变量 据我了解 应该从var lang 在 jQuery 中 var theLanguage html attr lang alert theLanguag
  • Java:如何使用 Thread.join

    我是线程新手 我怎样才能得到t join工作 调用它的线程会等待 t 执行完毕 这段代码只会冻结程序 因为线程正在等待自己死亡 对吧 public static void main String args throws Interrupte
  • Android fastboot 等待设备

    我正在尝试在我的 NVIDIA 测试 git 上加载自定义内核 我输入了fastboot boot myImage之后我得到
  • 为什么我不能从 ruby​​ 中选定的键创建新的哈希值?

    这已经困扰我一段时间了 这不是一件困难的事情 但我不知道为什么已经没有简单的方法可以做到这一点 我敢打赌有 但我没有看到它 我只想进行哈希处理 如下所示 cars bob gt Pontiac fred gt Chrysler lisa g
  • 从文本文件读取数据到 numpy 数组

    我有一个包含一些元数据的文件 然后是一些由两列和标题组成的实际数据 在 numpy 中使用 genfromtxt 之前是否需要分离两种类型的数据 或者我可以以某种方式分割数据吗 将文件指针放在标题上方的行尾 然后从那里尝试 genfromt
  • Android - 双击WebView检测

    我正在创建一个带有 WebView 和页面顶部菜单的应用程序 我使该菜单不可见 并且仅在单击按钮时才会出现 这工作正常 但该按钮无法很好地适应任何地方 因此我没有单击按钮 而是在双击屏幕时出现菜单 所以问题就在这里 双击仅适用于空白区域 但
  • 除了 Haxe 之外,还有其他针对 PHP 的编程语言吗?

    PHP 并没有得到太多的喜爱 但在易于部署 对于廉价托管 方面仍然是赢家 有没有任何编程语言 除了Haxe http haxe org 那个目标 PHP 用这种语言编写应用程序 然后将其翻译成 PHP 就像某些语言以 C 作为中间语言一样
  • 如何使用 NHibernate 插入或更新(或覆盖)记录?

    我需要将一行写入数据库 无论它是否已经存在 在使用 NHibernate 之前 这是通过存储过程完成的 该过程将尝试更新 如果没有行被修改 它将回退到插入 这很有效 因为应用程序并不关心记录是否存在 对于 NHibernate 我发现的解决
  • 如何访问 Galaxy S5 心率传感器?

    In the 三星的编程指南 http img developer samsung com contents cmm SHealth SDK Package ProgrammingGuide 2 Bio Physiology eng v1
  • 如何使用数组包含元素创建 NSPredicate

    我只是有Address有财产的实体favourites类型的 String Address objc Address class Address NSManagedObject Observer NSManaged var favourit
  • 在反应中一次导入多个图像文件的任何简单方法

    我输入以下内容来导入图像 需要一个简短的方法来做到这一点 import banner1 from imgs Banners banner1 jpg import banner2 from imgs Banners banner2 jpg i
  • 通过提升业力重用已解析的变量

    我有一个与下面的代码相当的代码库 我尝试生成一个文本文件 其内容是变量的两倍 我觉得答案在于语义动作以及 a 和 val 但即使有文档也无法完成 您将如何做才能拥有 str 中的 toto 和输出 托托一些东西托托 即如何在业力中重用已解析