From 4d649d93d303ca0362b26cc99bf729b4f4811f48 Mon Sep 17 00:00:00 2001 From: "Meredith L. Patterson" <mlp@thesmartpolitenerd.com> Date: Sun, 1 Dec 2013 16:07:25 -0800 Subject: [PATCH] fixed ch; need to figure out what to do with an array of SWIG wrapped types for sequence/choice --- src/bindings/php/SConscript | 2 +- src/bindings/php/Tests/ActionTest.php | 2 +- src/bindings/php/Tests/ChTest.php | 2 +- src/bindings/php/Tests/EndTest.php | 10 +++++--- src/bindings/php/Tests/LeftTest.php | 4 ++-- src/bindings/php/Tests/MiddleTest.php | 4 ++-- src/bindings/php/Tests/RightTest.php | 4 ++-- src/bindings/php/Tests/WhitespaceTest.php | 10 ++++---- src/bindings/swig/hammer.i | 29 +++++++++++++++++++++++ 9 files changed, 50 insertions(+), 17 deletions(-) diff --git a/src/bindings/php/SConscript b/src/bindings/php/SConscript index 919677bc..94c9d83b 100644 --- a/src/bindings/php/SConscript +++ b/src/bindings/php/SConscript @@ -23,7 +23,7 @@ phplib = phptestenv.Command(os.path.join(phpextprefix, "hammer.so"), libhammer_p AlwaysBuild(phplib) phpprefix = os.popen("php-config --prefix").read().rstrip() phpincl = phptestenv.Command(os.path.join(os.path.join(phpprefix, "etc/conf.d"), "hammer.ini"), "hammer.ini", Copy("$TARGET", "$SOURCE")) -phptestexec = phptestenv.Command(phptests, [phplib, phpincl], "phpenv exec phpunit -v --include-path " + os.path.dirname(libhammer_php[0].path) +" src/bindings/php/Tests") +phptestexec = phptestenv.Command(phptests, [phplib, phpincl], "phpenv exec phpunit -v --debug --include-path " + os.path.dirname(libhammer_php[0].path) +" src/bindings/php/Tests") phptest = Alias("testphp", [phptestexec], phptestexec) AlwaysBuild(phptest) testruns.append(phptest) diff --git a/src/bindings/php/Tests/ActionTest.php b/src/bindings/php/Tests/ActionTest.php index 699812cf..250dd24e 100644 --- a/src/bindings/php/Tests/ActionTest.php +++ b/src/bindings/php/Tests/ActionTest.php @@ -11,7 +11,7 @@ class ActionTest extends PHPUnit_Framework_TestCase } protected function setUp() { - $this->parser = h_action(h_sequence(h_choice(h_ch("a"), h_ch("A")), h_choice(h_ch("b"), h_ch("B"))), "actTest"); + $this->parser = h_action(h_sequence(h_choice(ch("a"), ch("A")), h_choice(ch("b"), ch("B"))), "actTest"); } public function testSuccess() { diff --git a/src/bindings/php/Tests/ChTest.php b/src/bindings/php/Tests/ChTest.php index f18cdfb2..e05ad244 100644 --- a/src/bindings/php/Tests/ChTest.php +++ b/src/bindings/php/Tests/ChTest.php @@ -8,7 +8,7 @@ class ChTest extends PHPUnit_Framework_TestCase protected function setUp() { - $this->parser = h_ch("\xa2"); + $this->parser = ch("\xa2"); } public function testSuccess() { diff --git a/src/bindings/php/Tests/EndTest.php b/src/bindings/php/Tests/EndTest.php index b3fc6c66..55e05b82 100644 --- a/src/bindings/php/Tests/EndTest.php +++ b/src/bindings/php/Tests/EndTest.php @@ -7,18 +7,22 @@ class EndPTest extends PHPUnit_Framework_TestCase protected function setUp() { - $this->parser = h_sequence(h_ch("a"), h_end_p()); + $this->parser = sequence(ch("a"), h_end_p()); } + public function testSuccess() { - $result = h_parse($this->parser, "a"); + echo 'in testSuccess\n'; +// $result = h_parse($this->parser, "a"); // TODO: fixme when h_ch is fixed - $this->assertEquals(98, $result); +// $this->assertEquals(98, $result); } +/* public function testFailure() { $result = h_parse($this->parser, "aa"); $this->assertEquals(NULL, $result); } +*/ } ?> \ No newline at end of file diff --git a/src/bindings/php/Tests/LeftTest.php b/src/bindings/php/Tests/LeftTest.php index 4f50e0e7..1b2a906b 100644 --- a/src/bindings/php/Tests/LeftTest.php +++ b/src/bindings/php/Tests/LeftTest.php @@ -7,13 +7,13 @@ class LeftTest extends PHPUnit_Framework_TestCase protected function setUp() { - $this->parser = h_left(h_ch("a"), h_ch(" ")); + $this->parser = h_left(ch("a"), ch(" ")); } public function testSuccess() { $result = h_parse($this->parser, "a "); // TODO fix these tests when h_ch is fixed - $this->assertEquals(97, $result); + $this->assertEquals("a", $result); } public function testFailure() { diff --git a/src/bindings/php/Tests/MiddleTest.php b/src/bindings/php/Tests/MiddleTest.php index c284b501..99dbb871 100644 --- a/src/bindings/php/Tests/MiddleTest.php +++ b/src/bindings/php/Tests/MiddleTest.php @@ -7,13 +7,13 @@ class MiddleTest extends PHPUnit_Framework_TestCase protected function setUp() { - $this->parser = h_middle(h_ch(" "), h_ch("a"), h_ch(" ")); + $this->parser = h_middle(ch(" "), ch("a"), ch(" ")); } public function testSuccess() { $result = h_parse($this->parser, " a "); // TODO fix these tests when h_ch is fixed - $this->assertEquals(97, $result); + $this->assertEquals("a", $result); } public function testFailure() { diff --git a/src/bindings/php/Tests/RightTest.php b/src/bindings/php/Tests/RightTest.php index c6642518..d5d44289 100644 --- a/src/bindings/php/Tests/RightTest.php +++ b/src/bindings/php/Tests/RightTest.php @@ -7,13 +7,13 @@ class RightTest extends PHPUnit_Framework_TestCase protected function setUp() { - $this->parser = h_right(h_ch(" "), h_ch("a")); + $this->parser = h_right(ch(" "), ch("a")); } public function testSuccess() { $result = h_parse($this->parser, " a"); // TODO fix these tests when h_ch is fixed - $this->assertEquals(97, $result); + $this->assertEquals("a", $result); } public function testFailure() { diff --git a/src/bindings/php/Tests/WhitespaceTest.php b/src/bindings/php/Tests/WhitespaceTest.php index 64da3a22..73c4d453 100644 --- a/src/bindings/php/Tests/WhitespaceTest.php +++ b/src/bindings/php/Tests/WhitespaceTest.php @@ -8,7 +8,7 @@ class WhitespaceTest extends PHPUnit_Framework_TestCase protected function setUp() { - $this->parser1 = h_whitespace(h_ch("a")); + $this->parser1 = h_whitespace(ch("a")); $this->parser2 = h_whitespace(h_end_p()); } public function testSuccess1() @@ -18,10 +18,10 @@ class WhitespaceTest extends PHPUnit_Framework_TestCase $result3 = h_parse($this->parser1, " a"); $result4 = h_parse($this->parser1, "\ta"); // TODO fix these tests when h_ch is fixed - $this->assertEquals(97, $result1); - $this->assertEquals(97, $result2); - $this->assertEquals(97, $result3); - $this->assertEquals(97, $result4); + $this->assertEquals("a", $result1); + $this->assertEquals("a", $result2); + $this->assertEquals("a", $result3); + $this->assertEquals("a", $result4); } public function testFailure1() { diff --git a/src/bindings/swig/hammer.i b/src/bindings/swig/hammer.i index 49b9b6f0..be696751 100644 --- a/src/bindings/swig/hammer.i +++ b/src/bindings/swig/hammer.i @@ -538,4 +538,33 @@ def int64(): return _h_int64() return tok; } } + +%pragma(php) code=" + +function ch($ch) +{ + if (is_string($ch)) + return h_token($ch); + else + return h_ch($ch); +} + +function sequence() +{ + echo 'in sequence\n'; + $numargs = func_num_args(); + $arg_list = func_get_args(); + var_dump($arg_list); + for ($i = 0; $i < $numargs; $i++) + { + var_dump($arg_list[$i] instanceof _p_HParser_); + if (! $arg_list[$i] instanceof _p_HParser_) + { + echo 'PHP says that is not an HParser!'; + return NULL; + } + } + //return hammer::h_sequence__a($arg_list); +} +" #endif -- GitLab