Loading .gitlab-ci.yml +1 −2 Original line number Diff line number Diff line Loading @@ -14,7 +14,6 @@ test:all: - cmake --build build --target unit_tests - ./build/src/tests/unit_tests - cmake --build build --target mfix-parser # - find -name inputs # - find -name inputs |xargs -l ./build/mfix-parser - find -name inputs |grep -v tutorials/wdf/mueller | xargs -l ./build/mfix-parser # FIXME: correct syntax error (= =) in file tags: - mfix-exa src/parser.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -51,8 +51,8 @@ struct p : one<'p', 'P'> {}; struct exponent : seq<plus_minus, plus<digit>> {}; struct double_ : seq<plus_minus, decimal, opt<e, exponent>> {}; struct num_array : list<double_, plus<one<' '>>> {}; struct str_array : list<string_literal, plus<one<' '>>> {}; struct num_array : list<double_, plus<blank>> {}; struct str_array : list<string_literal, plus<blank>> {}; struct value : sor<num_array, str_array> {}; struct comment : if_must<one<'#'>, until<eolf>> {}; Loading @@ -62,7 +62,7 @@ struct value_list : list_must<value_item, one<','>> {}; struct keyval_line : if_must<pad<key, space>, string<'='>, value_list, sor<comment, eolf>> {}; struct comment_line : seq<one<'#'>, until<eolf>> {}; struct blank_line : seq<star<one<' '>>, until<eolf>> {}; struct blank_line : seq<star<blank>, until<eolf>> {}; struct line : sor<comment_line, keyval_line, blank_line> {}; struct grammar : until<eof, line> {}; Loading src/tests/parser.t.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,21 @@ fluid.solve = fluid CHECK(ss[0] == "fluid"); } TEST_CASE("tabbed array", "[]") { auto maybe_st = parser::parse_inputs(R"( amr.avg_vel_p = 0 0 0 )"); REQUIRE(maybe_st.has_value()); auto info = maybe_st.value(); auto value = info["amr.avg_vel_p"]; auto aa = std::get<parser::NumberArray>(value); CHECK(aa.size() == 3); CHECK(aa[0] == 0.0); CHECK(aa[1] == 0.0); CHECK(aa[2] == 0.0); } TEST_CASE("double array", "[]") { auto maybe_st = parser::parse_inputs(R"( mfix.gravity = -9.81 0.0 0.0 Loading @@ -71,6 +86,7 @@ TEST_CASE("double array", "[]") { CHECK(aa[1] == 0.0); CHECK(aa[2] == 0.0); } TEST_CASE("string array", "[]") { auto maybe_st = parser::parse_inputs(R"( mfix.regions = abc ijk xyz Loading Loading
.gitlab-ci.yml +1 −2 Original line number Diff line number Diff line Loading @@ -14,7 +14,6 @@ test:all: - cmake --build build --target unit_tests - ./build/src/tests/unit_tests - cmake --build build --target mfix-parser # - find -name inputs # - find -name inputs |xargs -l ./build/mfix-parser - find -name inputs |grep -v tutorials/wdf/mueller | xargs -l ./build/mfix-parser # FIXME: correct syntax error (= =) in file tags: - mfix-exa
src/parser.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -51,8 +51,8 @@ struct p : one<'p', 'P'> {}; struct exponent : seq<plus_minus, plus<digit>> {}; struct double_ : seq<plus_minus, decimal, opt<e, exponent>> {}; struct num_array : list<double_, plus<one<' '>>> {}; struct str_array : list<string_literal, plus<one<' '>>> {}; struct num_array : list<double_, plus<blank>> {}; struct str_array : list<string_literal, plus<blank>> {}; struct value : sor<num_array, str_array> {}; struct comment : if_must<one<'#'>, until<eolf>> {}; Loading @@ -62,7 +62,7 @@ struct value_list : list_must<value_item, one<','>> {}; struct keyval_line : if_must<pad<key, space>, string<'='>, value_list, sor<comment, eolf>> {}; struct comment_line : seq<one<'#'>, until<eolf>> {}; struct blank_line : seq<star<one<' '>>, until<eolf>> {}; struct blank_line : seq<star<blank>, until<eolf>> {}; struct line : sor<comment_line, keyval_line, blank_line> {}; struct grammar : until<eof, line> {}; Loading
src/tests/parser.t.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,21 @@ fluid.solve = fluid CHECK(ss[0] == "fluid"); } TEST_CASE("tabbed array", "[]") { auto maybe_st = parser::parse_inputs(R"( amr.avg_vel_p = 0 0 0 )"); REQUIRE(maybe_st.has_value()); auto info = maybe_st.value(); auto value = info["amr.avg_vel_p"]; auto aa = std::get<parser::NumberArray>(value); CHECK(aa.size() == 3); CHECK(aa[0] == 0.0); CHECK(aa[1] == 0.0); CHECK(aa[2] == 0.0); } TEST_CASE("double array", "[]") { auto maybe_st = parser::parse_inputs(R"( mfix.gravity = -9.81 0.0 0.0 Loading @@ -71,6 +86,7 @@ TEST_CASE("double array", "[]") { CHECK(aa[1] == 0.0); CHECK(aa[2] == 0.0); } TEST_CASE("string array", "[]") { auto maybe_st = parser::parse_inputs(R"( mfix.regions = abc ijk xyz Loading