private void ParseAndCaptureErrors() { var dslParser = new DslParser(tokenizer, new Lazy <DslSyntax>(() => rhetosProjectContext.DslSyntax), rhetosLogProvider); try { dslParser.OnKeyword += OnKeyword; dslParser.OnMemberRead += OnMemberRead; dslParser.OnUpdateContext += OnUpdateContext; _ = dslParser.GetConcepts().ToList(); } catch (DslSyntaxException e) { result.DslParserErrors.Add(CreateAnalysisError(e)); } catch (Exception e) { result.DslParserErrors.Add(new CodeAnalysisError { Message = e.ToString() }); } finally { dslParser.OnKeyword -= OnKeyword; dslParser.OnMemberRead -= OnMemberRead; dslParser.OnUpdateContext -= OnUpdateContext; } }
public void ExcludeEventExpr() { var result = DslParser.EventExprParse().Parse("event ! x,y"); result.Should().NotBeNull().And.BeOfType <GroupExpr.ExcludeGroupExpr>(); result.Dependent.Should().NotBeNull(); result.Dependent.Should().BeEquivalentTo("x", "y"); }
public void DeliveryProtocolExpr() { const string protocol = "email"; var result = DslParser.DeliveryProtocolExprParse().Parse("protocol " + protocol); result.Should().NotBeNull(); result.Value.ShouldBeEquivalentTo(protocol); }
public void TimeParse_WithEmptySeconds() { var result = DslParser.TimeParse().Parse("01:02"); result.Hours.Should().Be(1); result.Minutes.Should().Be(2); result.Seconds.Should().Be(0); }
public void DateParse() { var result = DslParser.DateParse().Parse("2015-08-09"); result.Year.Should().Be(2015); result.Month.Should().Be(8); result.Day.Should().Be(9); }
public void SelectItemParse_NameValue() { var result = DslParser.SelectItemExprParse().Parse("alpha = beta"); result.Should().NotBeNull(); result.Name.Should().Be("alpha"); result.Value.Should().Be("beta"); }
public void SelectItemParse_ValueWithPoints() { var result = DslParser.SelectItemExprParse().Parse("beta.gamma.theta"); result.Should().NotBeNull(); result.Name.Should().BeNull(); result.Value.Should().Be("beta.gamma.theta"); }
public void OrderExprItemParse_Descending() { var result = DslParser.OrderExprItemParse().Parse("#alpha# desc"); result.Should().NotBeNull(); result.OrderFieldName.Should().Be("alpha"); result.SortOrder.Should().Be(SortOrder.Descending); }
public void NotificationReportExpr() { const long reportId = 21499234; var result = DslParser.NotificationReportIdParse().Parse("report " + reportId); result.Should().NotBeNull(); result.Value.ShouldBeEquivalentTo(reportId); }
public void TimeParse() { var result = DslParser.TimeParse().Parse("01:02:03"); result.Hours.Should().Be(1); result.Minutes.Should().Be(2); result.Seconds.Should().Be(3); }
public void TimeShiftParse() { var result = DslParser.TimeShiftParse().Parse("1d2h3m4s"); result.Days.Should().Be(1); result.Hours.Should().Be(2); result.Minutes.Should().Be(3); result.Seconds.Should().Be(4); }
public void AllSubjectsExpr() { var result = DslParser.SubjectsExprParse().Parse("subjects all"); result.Should().NotBeNull(); result.Roles.Should().BeNullOrEmpty(); result.SubjectGroups.Should().BeNullOrEmpty(); result.Persons.Should().BeNullOrEmpty(); result.IsAll.Should().BeTrue(); }
public void FullSubjectsExpr_NotRolesGroups() { var result = DslParser.SubjectsExprParse().Parse(@"subjects person max, andr"); result.Should().NotBeNull(); result.Roles.Should().BeNullOrEmpty(); result.SubjectGroups.Should().BeNullOrEmpty(); result.Persons.Should().BeEquivalentTo("max", "andr"); }
private static IEnumerable <ConceptSyntaxNode> DslParserParse(string[] dslScripts, Type[] conceptTypes) { var dslParser = new DslParser( new TestTokenizer(dslScripts), new Lazy <DslSyntax>(() => DslSyntaxHelper.CreateDslSyntax(conceptTypes)), new ConsoleLogProvider()); var parsedConcepts = dslParser.GetConcepts(); Console.WriteLine("Parsed concepts: " + string.Join("\r\n", parsedConcepts.Select(c => c.Concept.TypeName))); return(parsedConcepts); }
private static IEnumerable <IConceptInfo> DslParserParse(params string[] dsl) { var dslParser = new DslParser( new Tokenizer(new MockDslScriptsProvider(dsl)), new IConceptInfo[] { new SimpleConceptInfo() }, new ConsoleLogProvider()); var parsedConcepts = dslParser.ParsedConcepts; Console.WriteLine("Parsed concepts: " + string.Join("\r\n", dslParser.ParsedConcepts)); return(parsedConcepts); }
static List <IConceptInfo> DslModelFromScript(string dsl, IConceptInfo[] conceptInfoPluginsForGenericParser) { var nullDslParser = new DslParser(new Tokenizer(new MockDslScriptsProvider(dsl)), conceptInfoPluginsForGenericParser, new ConsoleLogProvider()); Console.WriteLine("Parsed concepts:"); Console.WriteLine(string.Join(Environment.NewLine, nullDslParser.ParsedConcepts.Select(ci => " - " + ci.GetShortDescription()))); var dslModel = NewDslModel(nullDslParser, conceptInfoPluginsForGenericParser); return(dslModel.Concepts.ToList()); }
public void AnyEventExpr() { var result = DslParser.EventExprParse().Parse("event any"); result.Should().NotBeNull(); result.Should().BeOfType <GroupExpr.AnyGroupExpr>(); result.Dependent.Should().NotBeNull(); // ReSharper disable once RedundantExplicitParamsArrayCreation result.Dependent.Should().BeEquivalentTo(new string[0]); }
public void DateTimeParse_WithEmptySeconds() { var result = DslParser.DateTimeParse().Parse("2015-10-11 04:05"); result.Year.Should().Be(2015); result.Month.Should().Be(10); result.Day.Should().Be(11); result.Hour.Should().Be(4); result.Minute.Should().Be(5); result.Second.Should().Be(0); }
public void OrderExprParse() { var result = DslParser.OrderExprParse().Parse(@"order #alpha# asc, #beta# desc select select end"); result.Should().NotBeNull(); result.Items.Should().HaveCount(2); result.Items[0].OrderFieldName.Should().Be("alpha"); result.Items[0].SortOrder.Should().Be(SortOrder.Ascending); result.Items[1].OrderFieldName.Should().Be("beta"); result.Items[1].SortOrder.Should().Be(SortOrder.Descending); }
static List <IConceptInfo> DslModelFromScript(string dsl, IConceptInfo[] conceptInfoPluginsForGenericParser) { var nullDslParser = new DslParser( new TestTokenizer(dsl), new Lazy <DslSyntax>(() => DslSyntaxHelper.CreateDslSyntax(conceptInfoPluginsForGenericParser)), new ConsoleLogProvider()); Console.WriteLine("Parsed concepts:"); Console.WriteLine(string.Join(Environment.NewLine, nullDslParser.GetConcepts().Select(ci => " - " + ci.GetUserDescription()))); var dslModel = NewDslModel(nullDslParser, conceptInfoPluginsForGenericParser); return(dslModel.Concepts.ToList()); }
public void TimeTriggerExprParse_WithoutRepeat() { var result = DslParser.TimeTriggerExprParse().Parse("trigger 2015-08-09 01:02:03"); result.Start.Year.Should().Be(2015); result.Start.Month.Should().Be(8); result.Start.Day.Should().Be(9); result.Start.Hour.Should().Be(1); result.Start.Minute.Should().Be(2); result.Start.Second.Should().Be(3); result.Repeat.HasValue.Should().BeFalse(); }
public void FullSubjectsExpr_NotGroups() { var result = DslParser.SubjectsExprParse().Parse(@"subjects role alpha; not beta, gamma role u person max, andr"); result.Should().NotBeNull(); result.Roles.Should().HaveCount(2); result.Roles[0].RoleName.Should().Be("alpha"); result.Roles[0].ExcludedPersons.Should().BeEquivalentTo("beta", "gamma"); result.Roles[1].RoleName.Should().Be("u"); result.Roles[1].ExcludedPersons.Should().BeEmpty(); result.SubjectGroups.Should().BeNullOrEmpty(); result.Persons.Should().BeEquivalentTo("max", "andr"); }
public void FullSubjectsExpr_NotRoles() { var result = DslParser.SubjectsExprParse().Parse(@"subjects group theta; not eta group f person max, andr"); result.Should().NotBeNull(); result.Roles.Should().BeNullOrEmpty(); result.SubjectGroups.Should().HaveCount(2); result.SubjectGroups[0].GroupName.Should().Be("theta"); result.SubjectGroups[0].ExcludedPersons.Should().BeEquivalentTo("eta"); result.SubjectGroups[1].GroupName.Should().Be("f"); result.SubjectGroups[1].ExcludedPersons.Should().BeEmpty(); result.Persons.Should().BeEquivalentTo("max", "andr"); }
public void TimeTriggerExprParse() { var result = DslParser.TimeTriggerExprParse().Parse("trigger 2015-08-09 01:02:03 repeat 4d5h6m7s"); result.Start.Year.Should().Be(2015); result.Start.Month.Should().Be(8); result.Start.Day.Should().Be(9); result.Start.Hour.Should().Be(1); result.Start.Minute.Should().Be(2); result.Start.Second.Should().Be(3); result.Repeat.HasValue.Should().BeTrue(); result.Repeat?.Days.Should().Be(4); result.Repeat?.Hours.Should().Be(5); result.Repeat?.Minutes.Should().Be(6); result.Repeat?.Seconds.Should().Be(7); }
public void AttachExprParse() { const string expr = @"report 123 format snmp parameters a: b;"; var result = DslParser.ParseReportAttachmentBlockExpr().Parse(expr); result.ReportId.ShouldBeEquivalentTo(123); result.ExportFormat.ShouldBeEquivalentTo("snmp"); result.Parameters.Should().HaveCount(1); var param = result.Parameters.First(); param.Key.ShouldBeEquivalentTo("a"); param.Value.ShouldBeEquivalentTo("b"); }
private static void Main(string[] args) { var wsbFile = args.Length >= 1 ? args[0] : "Schema.mic"; var basePathToSolution = args.Length >= 2 ? args[1] : "../"; var domainNameSpace = "Domain"; var applicationNameSpace = "Application"; var sqlAdapterNameSpace = "SqlAdapter"; var webAdapterNameSpace = "HttpAdapter"; var domainBasePath = $"{basePathToSolution}{domainNameSpace}/Generated/"; var applicationBasePath = $"{basePathToSolution}{applicationNameSpace}/Generated/"; var applicationRealClassesBasePath = $"{basePathToSolution}{applicationNameSpace}/"; var domainRealClassesBasePath = $"{basePathToSolution}{domainNameSpace}/"; var sqlAdapterBasePath = $"{basePathToSolution}{sqlAdapterNameSpace}/Generated/"; var webAdapterBasePath = $"{basePathToSolution}{webAdapterNameSpace}/Generated/"; var asynHostBasePath = $"{basePathToSolution}AsyncHost"; var injectionBasePath = $"{basePathToSolution}Host"; var tokenizer = new MicrowaveLanguageTokenizer(); var parser = new MicrowaveLanguageParser(); var domainBuilder = new DomainWriter(domainBasePath, domainRealClassesBasePath); var applicationWriter = new ApplicationWriter(applicationNameSpace, applicationBasePath, applicationRealClassesBasePath); var sqlAdapterWriter = new SqlAdapterWriter(sqlAdapterNameSpace, sqlAdapterBasePath); var webAdapterWriter = new HttpAdapterWriter(webAdapterNameSpace, webAdapterBasePath); var dependencyInjectionWriterAsyncHost = new DependencyInjectionBuilderAsyncHost(); var dependencyInjectionWriter = new DependencyInjectionBuilderHost(); using (var reader = new StreamReader(wsbFile)) { var content = reader.ReadToEnd(); var dslParser = new DslParser(tokenizer, parser); var domainTree = dslParser.Parse(content); domainBuilder.Write(domainTree, domainBasePath); applicationWriter.Write(domainTree); sqlAdapterWriter.Write(domainTree); webAdapterWriter.Write(domainTree); var codeNamespace = dependencyInjectionWriter.Build(domainTree.Classes, domainTree.SynchronousDomainHooks); new FileWriter(injectionBasePath).WriteToFile("Base/", codeNamespace); var write = dependencyInjectionWriterAsyncHost.Write(domainTree.Classes, domainTree.AsyncDomainHooks); new FileWriter(asynHostBasePath).WriteToFile("Base/", write); } }
private void ParseAndCaptureErrors() { try { var dslParser = new DslParser(tokenizer, rhetosAppContext.ConceptInfoInstances, rhetosLogProvider, new BuildOptions()); dslParser.ParseConceptsWithCallbacks(OnKeyword, OnMemberRead, OnUpdateContext); } catch (DslSyntaxException e) { result.DslParserErrors.Add(CreateAnalysisError(e)); } catch (Exception e) { result.DslParserErrors.Add(new CodeAnalysisError() { LineChr = LineChr.Zero, Message = e.Message }); } }
public void SubjectsExpr_NotPersons() { var result = DslParser.SubjectsExprParse().Parse(@"subjects role alpha; not beta, gamma role u group theta; not eta group f"); result.Should().NotBeNull(); result.Roles.Should().HaveCount(2); result.Roles[0].RoleName.Should().Be("alpha"); result.Roles[0].ExcludedPersons.Should().BeEquivalentTo("beta", "gamma"); result.Roles[1].RoleName.Should().Be("u"); result.Roles[1].ExcludedPersons.Should().BeEmpty(); result.SubjectGroups.Should().HaveCount(2); result.SubjectGroups[0].GroupName.Should().Be("theta"); result.SubjectGroups[0].ExcludedPersons.Should().BeEquivalentTo("eta"); result.SubjectGroups[1].GroupName.Should().Be("f"); result.SubjectGroups[1].ExcludedPersons.Should().BeEmpty(); result.Persons.Should().BeNullOrEmpty(); }
public void SelectParse() { var result = DslParser.SelectExprParse().Parse(@"select alpha = #beta# #gamma#@my own theta = #eta.sigma.pi# #x.y.z# select end"); result.Should().NotBeNull(); var dslFormatBlock = result as DslFormatBlock; result.Should().NotBeNull(); dslFormatBlock.Selects.Should().NotBeNullOrEmpty(); dslFormatBlock.Selects.Should().HaveCount(4); var first = dslFormatBlock.Selects.First(); first.Name.Should().Be("alpha"); first.Value.Should().Be("#beta#"); var second = dslFormatBlock.Selects.Skip(1).First(); second.Name.Should().BeNull(); second.Value.Should().Be("#gamma#"); second.DisplayName.Should().Be("my own"); var third = dslFormatBlock.Selects.Skip(2).First(); third.Name.Should().Be("theta"); third.Value.Should().Be("#eta.sigma.pi#"); var fourth = dslFormatBlock.Selects.Skip(3).First(); fourth.Name.Should().BeNull(); fourth.Value.Should().Be("#x.y.z#"); }
public DslParser.PatternContext Parse(string data) { DslParser.PatternContext pattern = null; var errorListener = new AntlrMemoryErrorListener() { IsPattern = true }; errorListener.FileName = "Pattern"; errorListener.FileData = data; errorListener.Logger = Logger; try { var inputStream = new AntlrInputStream(data); DslLexer lexer = new DslLexer(inputStream); lexer.RemoveErrorListeners(); lexer.AddErrorListener(errorListener); var tokenStream = new CommonTokenStream(lexer); DslParser parser = new DslParser(tokenStream); parser.RemoveErrorListeners(); parser.AddErrorListener(errorListener); pattern = parser.pattern(); } catch (Exception ex) { Logger.LogError(new ParsingException("Pattern", ex) { IsPattern = true }); throw; } return(pattern); }
private static IEnumerable<IConceptInfo> DslParserParse(params string[] dsl) { var dslParser = new DslParser( new Tokenizer(new MockDslScriptsProvider(dsl)), new IConceptInfo[] { new SimpleConceptInfo() }, new ConsoleLogProvider()); var parsedConcepts = dslParser.ParsedConcepts; Console.WriteLine("Parsed concepts: " + string.Join("\r\n", dslParser.ParsedConcepts)); return parsedConcepts; }