diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c1bfe8ee328a2d2014399304b727c4b0ab85fc27..393b2fa34667b79ac406c85b657b3138e560fd40 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 diff --git a/src/parser.cpp b/src/parser.cpp index 5d7bcca418ddb52cc668e271b30c4c6fce8967d8..79063567bafb63c8ed073bf4bb8e2b3499f33ef1 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -51,8 +51,8 @@ struct p : one<'p', 'P'> {}; struct exponent : seq> {}; struct double_ : seq> {}; -struct num_array : list>> {}; -struct str_array : list>> {}; +struct num_array : list> {}; +struct str_array : list> {}; struct value : sor {}; struct comment : if_must, until> {}; @@ -62,7 +62,7 @@ struct value_list : list_must> {}; struct keyval_line : if_must, string<'='>, value_list, sor> {}; struct comment_line : seq, until> {}; -struct blank_line : seq>, until> {}; +struct blank_line : seq, until> {}; struct line : sor {}; struct grammar : until {}; diff --git a/src/tests/parser.t.cpp b/src/tests/parser.t.cpp index cada1ec36b4f3becf0383bfc09acbb06163f6ca6..13163043fa87447da0e89fdfc0dcc5e31cccccd9 100644 --- a/src/tests/parser.t.cpp +++ b/src/tests/parser.t.cpp @@ -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(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 @@ -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