meowlang/parser/ConstraintRuleVisitorNya.cs
2022-02-12 18:30:04 +01:00

24 lines
1.1 KiB
C#

using meowlang.parser.antlr;
namespace meowlang.parser;
public class ConstraintRuleVisitorNya : MeowBaseVisitorNya<ConstraintRuleModel>
{
public override ConstraintRuleModel VisitEmbedConstraintRule(MeowParser.EmbedConstraintRuleContext context)
{
var name = context.name.Text;
var types = context._types.Select(x => new TypeReferenceVisitorNya().Visit(x)).ToList();
return new EmbedConstraintRuleModel(context.GetSpan(), name, types);
}
public override ConstraintRuleModel VisitFunctionConstraintRule(MeowParser.FunctionConstraintRuleContext context)
{
var name = context.name.Text;
var parameters = context.constraintFunctionParameters().typeReference()
.Select(x => new TypeReferenceVisitorNya().Visit(x)).ToList();
var returns =
context.functionReturn()?.typeReference().Select(x => new TypeReferenceVisitorNya().Visit(x)).ToList() ??
new List<TypeReferenceModel>();
return new FunctionConstraintRuleModel(context.GetSpan(), name, parameters, returns);
}
}