2022-02-12 02:29:25 +01:00
|
|
|
using Antlr4.Runtime;
|
|
|
|
using meowlang.parser.antlr;
|
|
|
|
|
|
|
|
namespace meowlang.parser;
|
|
|
|
|
|
|
|
public class Parser
|
|
|
|
{
|
|
|
|
public static Model? Parse(string path)
|
|
|
|
{
|
|
|
|
var lexer = new MeowLexer(new AntlrFileStream(path));
|
2022-02-12 18:30:04 +01:00
|
|
|
var tokenStream = new CommonTokenStream(lexer);
|
|
|
|
var parser = new MeowParser(tokenStream);
|
|
|
|
var visitor = new VisitorNya();
|
2022-02-12 02:29:25 +01:00
|
|
|
var file = parser.file();
|
|
|
|
if (parser.NumberOfSyntaxErrors > 0)
|
|
|
|
{
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
return visitor.Visit(file);
|
|
|
|
}
|
|
|
|
}
|