public override ASTNode VisitMain([NotNull] p4Parser.MainContext context) { ASTNode returntype = new TypeAstNode(context.VOID().Symbol); ASTNode functionId = new IdAstNode(context.Main().Symbol, SALType.Types[returntype.Token.Text]); ASTNode @params = new ParameterListAstNode(new ASTNode[] {}, null); return(new FunctionDeclarationAstNode(functionId, @params, Visit(context.block()), context.Function().Symbol)); }
public override InoTypeEnum Visit(ParameterListAstNode node) { IsParam = true; foreach (ASTNode param in node.Children) { if (param is IdAstNode id) { ParamNodes.Add(id); } Visit(param); } IsParam = false; return(InoTypeEnum.undefined); }
public override string Visit(ParameterListAstNode node) { string parameters = ""; if (node.Children.Count == 1) { parameters += Visit(node.Children[0]); } else { foreach (ASTNode child in node.Children) { if (child != node.Children[0]) { parameters += ", " + Visit(child); } else { parameters += Visit(child); } } } return(parameters); }