package ast.functionDef;
import org.antlr.v4.runtime.ParserRuleContext;
import antlr.C.ModuleParser.Parameter_declContext;
import antlr.C.ModuleParser.Parameter_idContext;
import antlr.C.ModuleParser.Parameter_nameContext;
import ast.ASTNode;
import ast.expressions.Identifier;
import ast.walking.ASTNodeVisitor;
public class Parameter extends ASTNode
{
public ParameterType type = new ParameterType();
public Identifier name = new Identifier();
@Override
public void initializeFromContext(ParserRuleContext ctx)
{
Parameter_declContext paramCtx = (Parameter_declContext) ctx;
Parameter_nameContext paramName = getNameOfParameter(paramCtx);
type.initializeFromContext(ctx);
name.initializeFromContext(paramName);
super.initializeFromContext(ctx);
super.addChild(type);
super.addChild(name);
}
private Parameter_nameContext getNameOfParameter(
Parameter_declContext param_ctx)
{
Parameter_idContext parameter_id = param_ctx.parameter_id();
while (parameter_id.parameter_name() == null)
{
parameter_id = parameter_id.parameter_id();
}
return parameter_id.parameter_name();
}
@Override
public void accept(ASTNodeVisitor visitor)
{
visitor.visit(this);
}
}