public void NonTerminalKeyPairAndFlag() { Checker.CheckRule( "S -> T<cond1=value1;cond2>", new[] { new Rule("S", new[] { new RuleItem(RuleItemType.NonTerminal, "T", conditions: new [] { new Condition("cond1", "value1"), new Condition("cond2", false) }) }) } ); }
public void NonTerminalKeyPairAndList() { Checker.CheckRule( "S -> T<cond1=value1;cond2=val1,val2>", new[] { new Rule("S", new[] { new RuleItem(RuleItemType.NonTerminal, "T", conditions: new [] { new Condition("cond1", "value1"), new Condition("cond2", new [] { "val1", "val2" }) }) }) } ); }
public void NonTerminalTwoKeyPair() { Checker.CheckRule( "S -> T<cond1=value1;cond2=value2>", new[] { new Rule("S", new[] { new RuleItem(RuleItemType.NonTerminal, "T", conditions: new [] { new Condition("cond1", "value1"), new Condition("cond2", "value2") }) }) } ); }
public void NonTerminalAllTypes() { Checker.CheckRule( "S -> T<cond1=value1;cond2=val1,val2;cond3>", new[] { new Rule("S", new[] { new RuleItem(RuleItemType.NonTerminal, "T", conditions: new [] { new Condition("cond1", "value1"), new Condition("cond2", new [] { "val1", "val2" }), new Condition("cond3", false) }) }) } ); }
public void TerminalAndInlineRuleWithHead() { Checker.CheckRule( "S -> \"хер\" !(\"123\")", new[] { new Rule("S:1", new[] { new RuleItem(RuleItemType.Terminal, "123") }), new Rule("S", new[] { new RuleItem(RuleItemType.Terminal, "хер"), new RuleItem(RuleItemType.NonTerminal, "S:1", isHead: true), }) } ); }
public void TerminalAndInlineRuleWithCounter() { Checker.CheckRule( "S -> \"хер\" (\"123\")+", new[] { new Rule("S:1", new[] { new RuleItem(RuleItemType.Terminal, "123") }), new Rule("S", new[] { new RuleItem(RuleItemType.Terminal, "хер"), new RuleItem(RuleItemType.NonTerminal, "S:1", Counter.Plus), }) } ); }
public void MultipleRules() { Checker.CheckRule( "S -> T*<cond1=value1;cond2=value2> \"123\" | G+<morf=123>", new[] { new Rule("S", new[] { new RuleItem(RuleItemType.NonTerminal, "T", conditions: new [] { new Condition("cond1", "value1"), new Condition("cond2", "value2") // }, counter: Counter.Star ), new RuleItem( RuleItemType.Terminal, "123" ) } ), new Rule("S", new[] { new RuleItem(RuleItemType.NonTerminal, "G", conditions: new [] { new Condition("morf", "123") }, counter: Counter.Plus ) } ) } ); }
public void TerminalAndInlineRuleWithCondition() { Checker.CheckRule( "S -> \"хер\" (\"123\")<условие>", new[] { new Rule("S:1", new[] { new RuleItem(RuleItemType.Terminal, "123") }), new Rule("S", new[] { new RuleItem(RuleItemType.Terminal, "хер"), new RuleItem(RuleItemType.NonTerminal, "S:1", conditions: new [] { new Condition("условие", false) }), }) } ); }
public void NonTerminalWithCounterAndConditions() { Checker.CheckRule( "S -> T*<cond1=value1;cond2=value2;cond3=123>", new[] { new Rule("S", new[] { new RuleItem(RuleItemType.NonTerminal, "T", conditions: new [] { new Condition("cond1", "value1"), new Condition("cond2", "value2"), new Condition("cond3", "123"), }, counter: Counter.Star ) } ) } ); }
public void MultipleRulesWithAll() { Checker.CheckRule( "S[Val1=123123, Val1=$tt.Val] -> T*<cond=val;cond1=valr> as tt", new[]
public void OneTerminalWithLocalName() { Checker.CheckRule( "S -> \"123\" as numb1", new[]
public void StaticVarInt() { Checker.CheckRule( "S[Value=$val] -> T l\"хер\" #set val=123", new[]
public void NonTerminalTwoKeyPairAndLocalName() { Checker.CheckRule( "S -> T<cond1=value1;cond2=value2> as name", new[]
public void TerminalAndInlineRuleWithLocalName() { Checker.CheckRule( "S -> \"хер\" (\"123\") as test", new[]