12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Xml.Linq;
- namespace csharp_sccd_compiler
- {
- public class Attribute : Visitable
- {
- public string name { get; private set; }
- public string type { get; private set; }
- public string init_value { get; private set; }
- public Attribute(XElement xml)
- {
- XAttribute name_attribute = xml.Attribute("name");
- if (name_attribute == null)
- throw new CompilerException("Missing attribute name.");
- this.name = name_attribute.Value.Trim();
- if (this.name == "")
- throw new CompilerException("Empty attribute name.");
- if (Constants.Reserved.Contains(this.name))
- throw new CompilerException(string.Format("Reserved word '{0}' used as attribute name.", this.name));
- XAttribute type_attribute = xml.Attribute("type");
- if (type_attribute == null)
- throw new CompilerException("Missing attribute type.");
- this.type = type_attribute.Value.Trim();
- if (this.type == "")
- throw new CompilerException("Empty attribute type.");
- XAttribute init_attribute = xml.Attribute("init-value");
- if (init_attribute == null || init_attribute.Value == "")
- this.init_value = null;
- else
- this.init_value = init_attribute.Value;
- }
- public override void accept(Visitor visitor)
- {
- visitor.visit (this);
- }
- }
- }
|