24 lines
1.1 KiB
C#
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);
|
|
}
|
|
} |