public DefaultAttribute(char value) { Value = new DyChar(value); }
private Par[] CompileFunctionParameters(List <DParameter> pars) { var arr = new Par[pars.Count]; var hasVarArg = false; for (var i = 0; i < pars.Count; i++) { var p = pars[i]; if (p.IsVarArgs) { if (hasVarArg) { AddError(CompilerError.VarArgOnlyOne, p.Location); } hasVarArg = true; } if (p.DefaultValue != null) { if (p.IsVarArgs) { AddError(CompilerError.VarArgNoDefaultValue, p.Location); } DyObject val = null; switch (p.DefaultValue.NodeType) { case NodeType.Integer: val = new DyInteger(((DIntegerLiteral)p.DefaultValue).Value); break; case NodeType.Float: val = new DyFloat(((DFloatLiteral)p.DefaultValue).Value); break; case NodeType.Char: val = new DyChar(((DCharLiteral)p.DefaultValue).Value); break; case NodeType.Boolean: val = ((DBooleanLiteral)p.DefaultValue).Value ? DyBool.True : DyBool.False; break; case NodeType.String: val = new DyString(((DStringLiteral)p.DefaultValue).Value); break; case NodeType.Nil: val = DyNil.Instance; break; default: AddError(CompilerError.InvalidDefaultValue, p.DefaultValue.Location, p.Name); break; } arr[i] = new Par(p.Name, val, false); } else { arr[i] = new Par(p.Name, null, p.IsVarArgs); } } return(arr); }