public Result <DyCodeModel> Parse(SourceBuffer buffer) { var ip = new InternalParser(new Scanner(buffer)); ip.Parse(); var cd = new DyCodeModel(ip.Root, ip.Imports.ToArray(), buffer.FileName ?? MEMORY); return(ip.Errors.Count == 0 ? Result.Create(cd) : Result.Create(cd, ip.Errors)); }
public DeveroomGherkinDocument Parse(TextReader featureFileReader, string sourceFilePath) { var tokenScanner = (ITokenScanner) new HotfixTokenScanner(featureFileReader); var tokenMatcher = new TokenMatcher(DialectProvider); _astBuilder = new DeveroomGherkinAstBuilder(sourceFilePath, () => tokenMatcher.CurrentDialect); var parser = new InternalParser(_astBuilder, AstBuilder.RecordStateForLine, _monitoringService); var gherkinDocument = parser.Parse(tokenScanner, tokenMatcher); CheckSemanticErrors(gherkinDocument); return(gherkinDocument); }
public override SyntaxTreeNode Parse(string text) { int counter = 0; string currentInput = text; var pResults = new List <SyntaxTreeNode>(); for (; counter < MaxTimes; ++counter) { var result = InternalParser.Parse(currentInput); if (result is null) { break; } currentInput = result.Rest; pResults.Add(result); } if (counter < MinTimes) { return(null); } var rest = pResults.Count != 0 ? pResults[^ 1].Rest : text;
public override SyntaxTreeNode Parse(string text) { var pResult = InternalParser.Parse(text); return(pResult ?? new SyntaxTreeNode(DefaultValue, text, this, null)); }
private void Build(DStringLiteral node, Hints hints, CompilerContext ctx) { if (node.Chunks == null && NoPush(node, hints)) { return; } if (node.Chunks != null) { cw.Type(new TypeHandle(DyType.String, true)); cw.GetMember(GetMemberNameId("concat")); cw.FunPrep(node.Chunks.Count); for (var i = 0; i < node.Chunks.Count; i++) { var c = node.Chunks[i]; if (c.IsCode) { var p = new InternalParser(new Scanner(SourceBuffer.FromString(c.GetContent()))); p.Parse(); if (p.Errors.Count > 0) { foreach (var e in p.Errors) { AddError(CompilerError.CodeIslandInvalid, new Location(node.Location.Line, node.Location.Column + e.Column), e.Message); } } else { if (p.Root.Nodes == null || p.Root.Nodes.Count == 0) { AddError(CompilerError.CodeIslandEmpty, node.Location); } else { corrections.Push(node.Location); Build(p.Root.Nodes[0], hints.Append(Push), ctx); corrections.Pop(); } } } else { cw.Push(c.GetContent()); } cw.FunArgIx(i); } AddLinePragma(node); cw.FunCall(node.Chunks.Count); } else { AddLinePragma(node); cw.Push(node.Value); } PopIf(hints); }