MParser/Parser/MParser.cs

28 lines
855 B
C#

using Parser.Internal;
using System.Linq;
namespace Parser
{
public class MParser
{
private readonly ITextWindow _window;
public MParser(ITextWindow window)
{
_window = window;
}
public SyntaxTree Parse()
{
var lexer = new Internal.MLexerGreen(_window);
var lexerDiagnostics = lexer.Diagnostics;
var tokens = lexer.ParseAll();
var parser = new Internal.MParserGreen(tokens, new Internal.SyntaxFactory());
var green = parser.ParseRoot();
var parserDiagnostics = parser.Diagnostics;
var totalDiagnostics = new DiagnosticsBag(lexerDiagnostics.Concat(parserDiagnostics));
var root = new RootSyntaxNode(green, 0);
return new SyntaxTree(root, totalDiagnostics);
}
}
}