小编O'N*_*eil的帖子

有没有办法将spirit :: lex字符串标记的内容与spirit :: qi语法中的文字进行匹配

我正在编写DSL并使用Boost Spirit词法分析器来标记我的输入.在我的语法中,我想要一个类似于此的规则(tok词法分析器在哪里):

header_block =
    tok.name >> ':' >> tok.stringval > ';' >>
    tok.description >> ':' >> tok.stringval > ';'
  ;
Run Code Online (Sandbox Code Playgroud)

而不是为语言指定保留字(例如"name","description")并处理词法分析器和语法之间的同步,我想只是将匹配的所有内容标记[a-zA-Z_]\w*为单个标记类型(例如tok.symbol),并让语法梳理出来.如果我没有使用词法分析器,我可能会这样做:

stringval = lexeme['"' >> *(char_ - '"') >> '"'];
header_block =
    lit("name") >> ':' >> stringval > ';' >>
    lit("description") >> ':' >> stringval > ';'
  ;
Run Code Online (Sandbox Code Playgroud)

使用词法分析器,我可以编译以下规则,但当然它匹配的比我想要的多 - 它不关心特定的符号值"name"和"description":

header_block =
    tok.symbol >> ':' >> tok.stringval > ';' >>
    tok.symbol >> ':' >> tok.stringval > ';'
  ;
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是这样的:

header_block = …
Run Code Online (Sandbox Code Playgroud)

c++ dsl boost-spirit boost-spirit-qi boost-spirit-lex

3
推荐指数
1
解决办法
529
查看次数

如何在onclick函数html中传递字符串

我尝试过旧问题,他们将 js 中的值传递给 js。但我想将字符串从 html 传递给 javascript。但它给

未捕获的引用错误

我的html

<a href="#" onclick="test(TEST123)">
Run Code Online (Sandbox Code Playgroud)

而我的javascript是,

function test(p){
   alert(p)
}
Run Code Online (Sandbox Code Playgroud)

我如何传递字符串>

html javascript

3
推荐指数
1
解决办法
3万
查看次数

如何解决此错误“从const_iterator转换为非标量类型”?

有人可以解释该错误的含义:

从'std :: vector <int,std :: allocator <int>> :: const_iterator {aka __gnu_cxx :: __ normal_iterator <const int *,std :: vector <int,std :: allocator <int> >>}'转换到非标量类型'std :: vector <int,std :: allocator <int>> :: iterator {aka __gnu_cxx :: __ normal_iterator <int *,std :: vector <int,std :: allocator <int>>> }'请求

给定以下类别:

#include <vector>
#include <iostream>

using std::vector;
using std::ostream;

template<class T>
class Gen {
    vector<T> array;
public:
    explicit Gen(int size);
    template<class S>
    friend ostream& operator<<(ostream& os, const Gen<S>& g);
};

template<class T>
Gen<T>::Gen(int …
Run Code Online (Sandbox Code Playgroud)

c++ iterator vector c++11

3
推荐指数
1
解决办法
2682
查看次数

如何在统一中等待特定的秒数

我想通过每1秒实例化7个立方体来制作统一2d游戏中的加载条.我使用: yield WaitForSeconds(1); 在每个实例化语句后的函数更新中,但它不起作用:((我得到一个错误:

脚本错误:Update()不能是协程.

还有其他想法吗?

我创建了一个新的场景并将其命名为"lost"然后我编写了这个脚本并将其附加到主摄像头:

#pragma strict

//var loadingBar: Transform;
var loading_bar : GameObject;

function Update()
{
    Instantiate(loadingBar,Vector3(-1.849,-2.9371,2),Quaternion.identity);

    gameTimer();


    Instantiate(loadingBar,Vector3(-1.2909,-2.937,2),Quaternion.identity);

    gameTimer();

    Instantiate(loadingBar,Vector3(-0.5566,-2.93711,2),Quaternion.identity);

    gameTimer();

    Instantiate(loadingBar,Vector3(0.148236,-2.93711,2),Quaternion.identity);

    gameTimer();

    Instantiate(loadingBar,Vector3(0.823772,-2.93711,2),Quaternion.identity);

    gameTimer();

    Instantiate(loadingBar,Vector3(1.440567,-2.93711,2),Quaternion.identity);

    gameTimer();

    Instantiate(loadingBar,Vector3(2.057361,-2.93711,2),Quaternion.identity);

    loadingTimer();

    Application.LoadLevel(1);
}


function OnGUI()
{
    GUI.color = Color.green;
    GUI.Label(Rect(400,350,500,500),"<color=green><size=100>Lose</size></color>");
}

function loadingTimer()
{
    yield WaitForSeconds(1);
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我希望这些立方体能够在1秒后相互显示,所以它看起来像一个加载栏......

我这样解决了这个问题::

#pragma strict

var loadingBar: Transform;
var finished : boolean = false;

function Update()
{
    loadingTimer();

    if (finished == true)
    {
        Application.LoadLevel(1);
        finished= false;
    }
}


function OnGUI()
{
    GUI.color …
Run Code Online (Sandbox Code Playgroud)

unity-game-engine unityscript

2
推荐指数
1
解决办法
3万
查看次数

在 C++ 中读取每行有 2 个数字的行

我对 C++ 很生疏。我想知道读取以下格式的输入的最佳方法是什么:

400 200
138 493
...
Run Code Online (Sandbox Code Playgroud)

我目前用于while(cin.peek()!=-1)检查 EOF,然后在其中检查while(cin.peek()!='\n')换行符。这对于阅读整行文本来说很好,但是我如何将其限制为 2 个数字和/或仅获取这 2 个数字?

c++ io file ifstream

2
推荐指数
1
解决办法
6707
查看次数

模糊错误:C++ 11使用可变参数模板多重继承

这段代码的Objectif是创建一个包围diffent模板设计(一个实现与总是相同的处理程序工作),但有了这个尝试我有以下错误"错误:请求成员'pushEvent'是模棱两可的"我不明白(消息底部错误的详细信息)

template<typename T>
struct EventHandler {
    EventHandler() {}

    inline void pushEvent(T & msg) {
    printf("pushEvent %s", typeid(T).name());
        q_.push(msg);
}

protected:
    std::queue<T> q_;
};
Run Code Online (Sandbox Code Playgroud)

deferend模板的包装器(将添加一些方法来处理不同类型的事件

template<typename... EventHandler>
    struct _EventsHandler : EventHandler... {

};
Run Code Online (Sandbox Code Playgroud)

// usage sample:我们创建将实例化事件管理器的类型

 using EventHandlerType = EventsHandler<EventHandler<int>,EventHandler<float>,EventHandler<char>>;

int main(void) {
    EventHandlerType test;

    int msp = 1;
    test.pushEvent(msp);
}
Run Code Online (Sandbox Code Playgroud)

我不明白模糊错误,因为msp类型是int,应该提供信息来解决歧义?

error: request for member 'pushEvent' is ambiguous
  test.pushEvent(msp);
       ^
note: candidates are: void _EventHandler<T>::pushEvent(T&) [with T = char]
     inline void pushEvent(T & msg) {
                 ^
note: void _EventHandler<T>::pushEvent(T&) [with …
Run Code Online (Sandbox Code Playgroud)

c++ templates variadic-templates c++11

2
推荐指数
1
解决办法
209
查看次数

C++将参数中的函数传递给另一个函数

我试图将函数传递给函数,声明看起来像

double fun1(const double* ang, std::function<double(double)> f1)
Run Code Online (Sandbox Code Playgroud)

main(),我正在创建函数指针并将其指向另一个函数as

std::function<double(double)> f2 = &fun5; //line1
Run Code Online (Sandbox Code Playgroud)

并将函数调用fun1

double x = fun1(&a,f2);
Run Code Online (Sandbox Code Playgroud)

这有效.但是,如果我将函数称为

double x = fun1(&a,&f2);
Run Code Online (Sandbox Code Playgroud)

,它给出了错误

无法将'&f2'从'std :: function*'转换为'std :: function

创建引用工作,line1但调用函数引用不起作用.知道为什么会这样吗?

c++ c++11

2
推荐指数
1
解决办法
75
查看次数

如何在 python 中使用 cron 和 smtp 安排电子邮件在特定时间发送?

到目前为止,我只能发送电子邮件。这是我的代码:

import smtplib

email_user = 'myemail@gmail.com'
server = smtplib.SMTP ('smtp.gmail.com', 587)
server.starttls()
server.login(email_user, 'email pass')

#SET TIME HERE?
from crontab import CronTab

#EMAIL
message = 'sending this from python!'
server.sendmail(email_user, email_user, message)
server.quit()
Run Code Online (Sandbox Code Playgroud)

我正在努力设定发送电子邮件的时间。如果有人也能帮我弄清楚如何添加附件,那就太好了!

python email cron smtp smtplib

2
推荐指数
1
解决办法
1万
查看次数

为什么我不需要MinGW中的-lm标志但是在Linux中我需要明确地使用它?

如果我需要使用数学库,我需要-lm在Linux中使用GCC时添加.但是在Windows上,当我在MinGW-w64中使用GCC时,我没有使用-lm它并且效果很好.

我知道有必要链接的原因libm.但我真的不知道为什么我可以在Windows中省略它?

c c++ linux windows gcc

1
推荐指数
1
解决办法
301
查看次数

全局设置内置验证器的 Vuelidate 自定义错误消息

我正在使用最新版本的 Vuelidate 和 Vue 3。有没有办法为内置验证器全局设置错误消息?我在文档中看到这一部分,它说要withMessage在辅助对象上使用该函数,如下所示:

import { required, helpers } from '@vuelidate/validators'

const validations = {
  name: {
    required: helpers.withMessage('This field cannot be empty', required)
  }
}
Run Code Online (Sandbox Code Playgroud)

但这看起来像是每次我们构建规则对象时都需要设置。

vue.js vuelidate vuejs3

1
推荐指数
1
解决办法
2362
查看次数