public void TestMultiStatement(string text, int expectedStatements) { GrammarParseResult result = Parse(text); Assert.True(result.IsSuccessful); Assert.Equal(expectedStatements, result.Children.Count); }
public void TestArithmetic(string text, int expectedValue) { GrammarParseResult result = Parse(text); Assert.True(result.IsSuccessful); Console.WriteLine(result.Output); Assert.Equal(expectedValue, result.Value); }
public GrammarParseResult GetValue(string name) { CreatureAction action = Prototype.CreatureActions.SingleOrDefault(x => x.Name.Equals(name)); if (action != null) { return(Engine.Parsers.ParserHelper.Evaluate(action.ActionText, Controller.Instance.CurrentRuleSet)); } //Assume it's an attribute if it's not an action GrammarParseResult result = new GrammarParseResult($"{IndividualName}'s ({Prototype.EntityName}) {name}"); //Check Abilities AbilityAttr ability = AbilityScores.SingleOrDefault(x => x.Key.Name.Equals(name)).Key; if (ability != null) { result.Value = AbilityScores[ability]; result.EvaluatedText = AbilityScores[ability].ToString(); return(result); } //Check Ability Skills AbilitySkillAttr abilityskill = AbilitySkillScores.SingleOrDefault(x => x.Key.Name.Equals(name)).Key; if (ability != null) { result.Value = AbilitySkillScores[abilityskill]; result.EvaluatedText = AbilitySkillScores[abilityskill].ToString(); return(result); } //Check Counters CounterAttr counter = CounterValues.SingleOrDefault(x => x.Key.Name.Equals(name)).Key; if (ability != null) { result.Value = CounterValues[counter]; result.EvaluatedText = CounterValues[counter].Value.ToString(); return(result); } //Check Other Attributes OtherAttr otherAttr = OtherScores.SingleOrDefault(x => x.Key.Name.Equals(name)).Key; if (ability != null) { result.Value = OtherScores[otherAttr]; result.EvaluatedText = OtherScores[otherAttr].ToString(); return(result); } result.IsSuccessful = false; result.Value = 0; result.Output = $"Creatures of type \"{Prototype.EntityName}\" do not have an action or attribute with name \"{name}\""; return(result); }
public void TestComplexExpression(string text) { GrammarParseResult result = Parse(text); //Just test it once. These tests are mainly to make sure it parses correctly Assert.True(result.IsSuccessful); Console.WriteLine(result.Output); Console.WriteLine(result.Value); }
public void TestRoll(string text, int expectedLow, int expectedHigh) { GrammarParseResult result = Parse(text); //Just test it once. These tests are mainly to make sure it parses correctly Assert.True(result.IsSuccessful); Console.WriteLine(result.Output); Assert.InRange(result.Value, expectedLow, expectedHigh); }
public void TestStatementLabel() { string label = "This is a label"; string text = $"5d10 + 2 : {label}"; GrammarParseResult result = Parse(text); Assert.True(result.IsSuccessful); Assert.Equal(label, result.Label); }
private GrammarParseResult Parse(string text) { AntlrInputStream inputStream = new AntlrInputStream(text); GrammarLexer grammarLexer = new GrammarLexer(inputStream); CommonTokenStream commonTokenStream = new CommonTokenStream(grammarLexer); GrammarParser grammarParser = new GrammarParser(commonTokenStream); GrammarParser.StatementsContext context = grammarParser.statements(); StatementsVisitor visitor = new StatementsVisitor(new TestRuleSet()); GrammarParseResult result = visitor.Visit(context); return(result); }
public static GrammarParseResult Evaluate(string text, IRuleSet ruleSet) { if (String.IsNullOrEmpty(text?.Trim())) { return(GrammarParseResult.Unsuccessful(text)); } AntlrInputStream inputStream = new AntlrInputStream(text); GrammarLexer grammarLexer = new GrammarLexer(inputStream); CommonTokenStream commonTokenStream = new CommonTokenStream(grammarLexer); GrammarParser grammarParser = new GrammarParser(commonTokenStream); GrammarParser.StatementsContext context = grammarParser.statements(); StatementsVisitor visitor = new StatementsVisitor(ruleSet); GrammarParseResult result = visitor.Visit(context); return(result); }