/// <summary> /// Initialization of the AST node. Specifies conversion from parse-tree node to AST node. /// </summary> /// <param name="treeNode">Parse-tree node.</param> public override void Init(ParseTreeNode treeNode) { if (treeNode != null) { LengthSpecifications = new List <Tuple <LengthSpecifier, int> >(); for (int i = 1; i <= 2; ++i) { var childNode = treeNode.GetMappedChildNodes().GetSafeItem(i); if (childNode != null) { if (childNode.GetMappedChildNodes().Count == 0) { continue; } LengthSpecifier lengthSpecif = EnumMapper.ToLengthSpecifier(childNode.GetChildString(0)); int numVal = (int)childNode.GetChildNumberVal(1); LengthSpecifications.Add(Tuple.Create(lengthSpecif, numVal)); } } if (LengthSpecifications.Count == 0) { LengthSpecifications = null; } } }
/// <summary> /// Converts the enum to string representation. /// </summary> /// <param name="lengthSpecifier">Value to be converted.</param> /// <returns>String representation.</returns> public static string EnumToString(this LengthSpecifier lengthSpecifier) { switch (lengthSpecifier) { case LengthSpecifier.SERIAL: return(":serial"); case LengthSpecifier.PARALLEL: return(":parallel"); default: Debug.Assert(false); return(lengthSpecifier.ToString()); } }
/// <summary> /// String representation. /// </summary> /// <returns>String representation.</returns> public override string ToString() { return($"({LengthSpecifier.EnumToString()} {Parameter})"); }
/// <summary> /// Constructs a length specifier. /// </summary> /// <param name="lengthSpecifier">Length specifier.</param> /// <param name="parameter">Length parameter.</param> public LengthSpecElement(LengthSpecifier lengthSpecifier, int parameter) { LengthSpecifier = lengthSpecifier; Parameter = parameter; }