小编Rui*_*hou的帖子

如何为boost :: spirit进行错误处理工作

在boost :: spirit中,我添加了基于示例roman的错误处理代码.

#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_fusion.hpp>
#include <boost/spirit/include/phoenix_object.hpp>
#include <boost/foreach.hpp>

#include <iostream>
#include <fstream>
#include <string>
#include <vector>

namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;
namespace phoenix = boost::phoenix;

template <typename Iterator>
struct roman : qi::grammar<Iterator>
{
  roman() : roman::base_type(start)
  {
    using qi::eps;
    using qi::lit;
    using qi::lexeme;
    using qi::_val;
    using qi::_1;
    using ascii::char_;

    // for on_error
    using qi::on_error;
    using qi::fail;
    using phoenix::construct;
    using phoenix::val;

    start = +(lit('M') )  >> "</>";

    on_error<fail>
    (
        start
      , …
Run Code Online (Sandbox Code Playgroud)

c++ boost-spirit

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

在boost :: spirit :: qi中,是否可以在运行时动态修改规则定义

我用boost :: spirit :: qi :: rule写了一些语法来解析互联网数据包.语法是这样的:

qi::rule<Iterator> start, request, response, status, query ;
start = (request | response | status | query) >> lit("\r\n");
Run Code Online (Sandbox Code Playgroud)

为了提高性能,用户可能希望跳过运行时中的一些规则,例如忽略"响应","状态","查询"并且只尝试匹配请求,因此规则将更改为:

start = (request ) >> lit("\r\n"); 
Run Code Online (Sandbox Code Playgroud)

有可能这样做吗?例如,是否有一个像"禁用()"这样的功能来禁用规则"响应","状态"和"查询"?

c++ boost boost-spirit boost-spirit-qi

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

如何在javafx中使子自动调整大小(子是Pane,父是VBox)

我有2个问题

1.在javafx应用程序中,我想将child(crosshairArea)放在其父级的左上角,宽度和高度也为1/2。认为我可以通过覆盖父函数“layoutChildren”(VBox)来做到这一点,还有其他方法可以做到吗?例如属性绑定?

2.最初VBox会占据整个场景区域,如何使它(重定位)到场景的半底部?

public class Crossh extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) {        
        VBox root = new VBox(5);
        // root.setPadding(new Insets(20,20,20,20));
        root.setStyle("-fx-border-color:red");

        Pane crosshairArea = new Pane();
        crosshairArea.maxWidthProperty().bind(root.widthProperty());
        crosshairArea.setStyle("-fx-border-color:black");       

        root.getChildren().add(crosshairArea);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.setTitle("Location Crosshair");
        stage.setWidth(900);
        stage.setHeight(700);        
        stage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

javafx pane vbox

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

标签 统计

boost-spirit ×2

c++ ×2

boost ×1

boost-spirit-qi ×1

javafx ×1

pane ×1

vbox ×1