123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Xml.Linq;
- namespace csharp_sccd_compiler
- {
- public class FormalParameter : Visitable
- {
- public string name { get; protected set; }
- public string type { get; protected set; }
- public string default_value { get; protected set; }
- public FormalParameter(string name, string type, string default_value = null)
- {
- this.name = name;
- this.type = type;
- this.default_value = default_value;
- }
- public FormalParameter(XElement xml)
- {
- //Set name
- XAttribute name_attribute = xml.Attribute("name");
- if (name_attribute == null)
- throw new CompilerException("Missing formal parameter name.");
- this.name = name_attribute.Value.Trim();
- if (this.name == "")
- throw new CompilerException("Empty formal parameter name.");
- if (Constants.Reserved.Contains(this.name))
- throw new CompilerException(string.Format("Reserved word '{0}' used as formal parameter name.", this.name));
- //Set type
- XAttribute type_attribute = xml.Attribute("type");
- if (type_attribute == null)
- throw new CompilerException("Missing formal parameter type.");
- this.type = type_attribute.Value.Trim();
- if (this.type == "")
- throw new CompilerException("Empty formal parameter type.");
- //Set default value
- XAttribute default_attribute = xml.Attribute("default");
- if (default_attribute == null || default_attribute.Value.Trim() == "")
- this.default_value = null;
- else
- this.default_value = default_attribute.Value.Trim();
- }
- public override void accept(Visitor visitor)
- {
- visitor.visit (this);
- }
- }
- }
|