Got action and attr_bool working
This commit is contained in:
parent
ebb7b677ba
commit
3da3e70f65
5 changed files with 111 additions and 65 deletions
|
|
@ -7,11 +7,28 @@ namespace Hammer.Test
|
|||
[Test]
|
||||
public void TestAction()
|
||||
{
|
||||
Parser parser = Hammer.Action(Hammer.Sequence(Hammer.Choice(Hammer.Token("a"),
|
||||
Hammer.Token("A")),
|
||||
Hammer.Choice(Hammer.Token("b"),
|
||||
Hammer.Token("B"))),
|
||||
(HAction)(x => char.ToUpper(((string)x)[0])));
|
||||
Parser parser = Hammer.Action(Hammer.Sequence(Hammer.Choice(Hammer.Ch('a'),
|
||||
Hammer.Ch('A')),
|
||||
Hammer.Choice(Hammer.Ch('b'),
|
||||
Hammer.Ch('B'))),
|
||||
(HAction)(x => string.Join(",",(object[])x)));
|
||||
CheckParseOK(parser, "ab", "a,b");
|
||||
CheckParseOK(parser, "AB", "A,B");
|
||||
CheckParseFail(parser, "XX");
|
||||
}
|
||||
[Test]
|
||||
public void TestAttrBool()
|
||||
{
|
||||
Parser parser = Hammer.AttrBool(Hammer.Many1(Hammer.Choice(Hammer.Ch('a'),
|
||||
Hammer.Ch('b'))),
|
||||
(HPredicate)(x => {
|
||||
object[] elems = (object[])x;
|
||||
return elems.Length > 1 && (char)elems[0] == (char)elems[1];
|
||||
}));
|
||||
|
||||
CheckParseOK(parser, "aa", new object[]{ 'a','a' });
|
||||
CheckParseOK(parser, "bb", new object[]{ 'b','b' });
|
||||
CheckParseFail(parser, "ab");
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue