Commit d088c9a7 authored by Mark Meredith's avatar Mark Meredith
Browse files

Accept tabs as whitespace

parent d4042a76
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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
+3 −3
Original line number Diff line number Diff line
@@ -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>> {};
@@ -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> {};

+16 −0
Original line number Diff line number Diff line
@@ -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
@@ -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