protected override string ComputeNameForDecl(IPDecl decl) { string name = decl.Name; switch (decl) { case PEvent pEvent: if (pEvent.IsNullEvent) { name = "DefaultEvent"; } if (pEvent.IsHaltEvent) { name = "PHalt"; } return(name); case Interface _: return("I_" + name); default: name = string.IsNullOrEmpty(name) ? "Anon" : name; if (name.StartsWith("$")) { name = "TMP_" + name.Substring(1); } return(UniquifyName(name)); } }
protected override string ComputeNameForDecl(IPDecl decl) { string name = decl.Name; //Handle null and halt events separately #pragma warning disable CCN0002 // Non exhaustive patterns in switch block switch (decl) { case PEvent pEvent: if (pEvent.IsNullEvent) { name = "DefaultEvent"; } if (pEvent.IsHaltEvent) { name = "PHalt"; } return(name); case Interface _: return("I_" + name); } #pragma warning restore CCN0002 // Non exhaustive patterns in switch block name = string.IsNullOrEmpty(name) ? "Anon" : name; if (name.StartsWith("$")) { name = "TMP_" + name.Substring(1); } return(UniquifyName(name)); }
protected override string ComputeNameForDecl(IPDecl decl) { string enumName = ""; #pragma warning disable CCN0002 // Non exhaustive patterns in switch block switch (decl) { case EnumElem enumElem: enumName = $"{enumElem.ParentEnum.Name}_"; break; case PEvent pEvent: if (pEvent.IsNullEvent) { return("_P_EVENT_NULL_STRUCT"); } if (pEvent.IsHaltEvent) { return("_P_EVENT_HALT_STRUCT"); } break; case Implementation impl: return($"P_GEND_IMPL_{impl.Name}"); } #pragma warning restore CCN0002 // Non exhaustive patterns in switch block if (DeclNameParts.TryGetValue(decl.GetType(), out string declTypePart)) { declTypePart += "_"; } else { declTypePart = ""; } string name = decl.Name; if (decl is State state) { name = state.QualifiedName; } name = string.IsNullOrEmpty(name) ? "Anon" : name; name = name.Replace('.', '_'); if (name.StartsWith("$")) { name = "PTMP_" + name.Substring(1); } else { name = NamePrefix + declTypePart + enumName + name; } return(UniquifyName(name)); }
private void CheckConflicts(IPDecl decl, params TableReader[] namespaces) { IPDecl existingDecl = null; if (namespaces.Any(table => table(decl.Name, out existingDecl))) { throw handler.DuplicateDeclaration(decl.SourceLocation, decl, existingDecl); } }
protected override void WriteDeclRef(IPDecl decl) { var name = decl.Name; if (decl is State state) { name = state.QualifiedName; } WriteParts(name); }
private string SetNameForNode(IPDecl node, string name) { if (declNames.TryGetValue(node, out string existing)) { throw new ArgumentException($"Decl {node.Name} already has name {existing}", nameof(node)); } declNames.Add(node, name); return(name); }
public string GetNameForDecl(IPDecl decl) { Contract.Requires(decl != null); if (TryGetNameForNode(decl, out string name)) { return(name); } string declName = ComputeNameForDecl(decl); return(SetNameForNode(decl, declName)); }
public Exception DuplicateDeclaration(ParserRuleContext location, IPDecl duplicate, IPDecl existing) { return(IssueError(location, $"'{duplicate.Name}' duplicates declaration '{existing.Name}' at {locationResolver.GetLocation(existing.SourceLocation)}")); }
private string DeclarationName(IPDecl method) { return(method.Name.Length > 0 ? method.Name : $"at {locationResolver.GetLocation(method.SourceLocation)}"); }
protected override void WriteDecl(IPDecl decl) { WriteTree(decl); }
private bool TryGetNameForNode(IPDecl node, out string name) { return(declNames.TryGetValue(node, out name)); }
protected abstract string ComputeNameForDecl(IPDecl decl);
public PermissionType(NamedEventSet eventSet) : base(TypeKind.Base) { origin = eventSet; AllowedPermissions = new Lazy<IReadOnlyList<PEvent>>(() => eventSet.Events.ToList()); }
public PermissionType(Interface pInterface) : base(TypeKind.Base) { origin = pInterface; AllowedPermissions = new Lazy<IReadOnlyList<PEvent>>(() => pInterface.ReceivableEvents.Events.ToList()); }
public PermissionType(Machine machine) : base(TypeKind.Base) { origin = machine; AllowedPermissions = new Lazy<IReadOnlyList<PEvent>>(() => machine.Receives.Events.ToList()); }
protected abstract void WriteDecl(IPDecl decl);