Subject: Re: MEGACO reserved names

From: Brian Rosen <[email-masked]>
Date: Tue, 2 Nov 1999 20:23:59 -0500

After several on and off list discussions, my opinion is:

Packages names may not overload Megaco token names.  Item Names may
overload.

Please note that there is no actual parsing problem, as names, especially
item names, have scope, and the parser must respect the scope.  There are no
ambiguous circumstances where a parser can confuse a protocol token with a
package name or item name if a LALR(1) or LL(1) parser is used.

The short names for tokens significantly restrict name spaces for itemIds.
I
am particularly interested in leaving the itemID name space wide open.

We did not discuss the issue of parameters to signals and events, but I
would say that overloading IS permitted, for the same reason.  We probably
have to have the minor issue that there are some "default" parameters, which
can't be redefined,
and the ActionToken.

I do think TerminationIDs, PathNames, etc. can't overload protocol tokens.

Brian

> -----Original Message-----
> From: Harpreet Singh Anand [mailto:[email-masked]]
> Sent: Tuesday, November 02, 1999 12:30 AM
> To: [email-masked]
> Subject: Re: MEGACO reserved names
>
>
> Hello Abdallah,
>
> We agree with your observation that making tokens as reserved
> would simplify
> parsing. However, we wanted one clarification - in the mail
> you have mentioned
> that these reserved words can not occur as PackageName or
> ItemId.  We believe
> these are given as examples and that the reserved words can
> not occur anywhere
> else also, for example the reserved words can not occur as
> eventParameterName,
> sigParameterName, pathName, TerminationId etc.
>
> Regards,
> Harpreet
>
> Abdallah Rayhan wrote:
>
> > What I want to say is that, you can not use package name called
> > "ServiceChange" because it is a token. Same thing applies to
> > ItemName, .e.g, ItemName can not be "Transaction". If two packages
> > define the same ItemName, then we dont care as long as the package
> > name is qualified. Package names and item names are not reserved
> > as far as the grammar/parsing is considered but unique when
> registered
> > which is another issue. Packages are similar to libraries
> where you can have
> > more than one library with same name. It does not affect
> the compiler a bit.
> >
> > Abdallah
> >
> > Brian Rosen wrote:
> >
> > > While I'm not violently against this, I don't think it
> > > is helpful to do it.  The rule that drives the design of
> > > the parser is that two packages can have the same itemName.
> > > I can declare foo in PackA, and also declare foo in PackB.
> > > PackB/foo and PackA/foo are different.  Your parser has to
> > > deal with this.  That means that the symbols in the symbol
> > > table are lexically dependent on prior parsing.  You get no
> > > advantage out of knowing that DC (the serviceChange
> reason) can't occur in
> > > togen (as in togen/dc, the C DTMF tone).
> > >
> > > Brian
> > >
> > > > -----Original Message-----
> > > > From: Abdallah Rayhan [mailto:[email-masked]]
> > > > Sent: Friday, October 29, 1999 11:55 AM
> > > > To: [email-masked]
> > > > Subject: MEGACO reserved names
> > > >
> > > >
> > > > I propose make the following tokens reserved in MEGACO.
> > > > This means that they can not be used as stand alone names, e.g.,
> > > > PackageName = NAME and ItemID = NAME can not use any
> > > > reserved names.
> > > >
> > > > The reason for this is that it would simplify parsing and
> > > > make it easier to
> > > > detect ambiguous and syntactically incorrect expressions.
> > > >
> > > > These names are:
> > > > from DigitMapValue: "T", "S", and "L"
> > > > from digitMapLetter: "A","B","C","D","S","L",
> > > > "K0","K1","K2","S0","S1","S2", and
> > > > "S3"
> > > >
> > > > the rest are,
> > > >
> > > > ActionToken                = ("Action"                | "AN")
> > > > AccumulateToken            = ("Accumulate"            | "AM")
> > > > AddToken                   = ("Add"                   | "A")
> > > > AuditToken                 = ("Audit"                 | "AT")
> > > > AuditCapToken              = ("AuditCapability"       | "AC")
> > > > AuditValueToken            = ("AuditValue"            | "AV")
> > > > AuthToken                  = ("Authentication"        | "AU")
> > > > BothwayToken               = ("Bothway"               | "BW")
> > > > BriefToken                 = ("Brief"                 | "BR")
> > > > BufferedEventHandlingToken = ("BufferedEventHandling" | "BE")
> > > > CtxToken                   = ("Context"               | "C")
> > > > DigitMapToken              = ("DigitMap"              | "DM")
> > > > DiscardToken               = ("Discard"               | "DS")
> > > > DisconnectedToken          = ("Disconnected"          | "DC")
> > > > DelayToken                 = ("Delay"                 | "DL")
> > > > DeleteToken                = ("Delete"                | "DE")
> > > > DurationToken              = ("Duration"              | "DR")
> > > > EmergencyToken             = ("Emergency"             | "EM")
> > > > ErrorToken                 = ("Error"                 | "ER")
> > > > EventsDescriptorToken      = ("Events"                | "E")
> > > > FailoverToken              = ("Failover"              | "FL")
> > > > ForcedToken                = ("Forced"                | "FO")
> > > > GracefulToken              = ("Graceful"              | "GR")
> > > > H221Token                  = ("H221" )
> > > > H223Token                  = ("H223" )
> > > > H226Token                  = ("H226" )
> > > > HandOffToken               = ("HandOff"               | "HO")
> > > > InactiveToken              = ("Inactive"              | "IN")
> > > > IsolateToken               = ("Isolate"               | "IS")
> > > > InSvcToken                 = ("InService"             | "IV")
> > > > KeepActiveToken            = ("KeepActive"            | "KA")
> > > > LocalToken                 = ("Local"                 | "L")
> > > > LocalControlToken          = ("LocalControl"          | "O")
> > > > LoopbackToken              = ("Loopback"              | "LB")
> > > > LoopToken                  = ("Loop"                  | "LP")
> > > > MediaToken                 = ("Media"                 | "M")
> > > > MegacopToken               = ("MEGACO"                | "!")
> > > > MethodToken                = ("Method"                | "MT")
> > > > MgcIdToken                 = ("MgcIdToTry"            | "MG")
> > > > ModeToken                  = ("Mode"                  | "MO")
> > > > ModifyToken                = ("Modify"                | "MF")
> > > > ModemToken                 = ("Modem"                 | "MD")
> > > > MoveToken                  = ("Move"                  | "MV")
> > > > MuxToken                   = ("Mux"                   | "MX")
> > > > NotifyActionToken          = ("NotifyAction"          | "NA")
> > > > NotifyToken                = ("Notify"                | "N")
> > > > ObservedEventsToken        = ("ObservedEvents"        | "OE")
> > > > OnewayToken                = ("Oneway"                | "OW")
> > > > OnOffToken                 = ("OnOff"                 | "OO")
> > > > OutOfSvcToken              = ("OutOfService"          | "OS")
> > > > PackagesToken              = ("Packages"              | "PG")
> > > > PendingToken               = ("Pending"               | "PN")
> > > > PriorityToken              = ("Priority"              | "PR")
> > > > ProcessToken               = ("Process"               | "PC")
> > > > ProfileToken               = ("Profile"               | "PF")
> > > > ReasonToken                = ("Reason"                | "RE")
> > > > RecvonlyToken              = ("ReceiveOnly"           | "RC")
> > > > ReplyToken                 = ("Reply"                 | "P")
> > > > RestartToken               = ("Restart"               | "RS")
> > > > RemoteToken                = ("Remote"                | "R")
> > > > SdpToken                   = ("SDP"                   | "D")
> > > > SignalsDescriptorToken     = ("Signals"               | "SG")
> > > > SignalListToken            = ("SignalList"            | "SL")
> > > > SignalTypeToken            = ("SignalType"            | "SY")
> > > > SendonlyToken              = ("SendOnly"              | "SO")
> > > > SendrecvToken              = ("SendReceive"           | "SR")
> > > > ServicesToken              = ("Services"              | "SV")
> > > > ServiceStatesToken         = ("ServiceStates"         | "SI")
> > > > ServiceChangeToken         = ("ServiceChange"         | "SC")
> > > > ServiceChangeAddressToken  = ("ServiceChangeAddress"  | "AD")
> > > > StatsToken                 = ("Statistics"            | "SA")
> > > > StepToken                  = ("Step"                  | "SP")
> > > > StreamToken                = ("Stream"                | "ST")
> > > > SubtractToken              = ("Subtract"              | "S")
> > > > SynchISDNToken             = ("SynchISDN"             | "SN")
> > > > TagValueToken              = ("TagValue"              | "TV")
> > > > TerminationStateToken      = ("TerminationState"      | "TS")
> > > > TestToken                  = ("Test"                  | "TE")
> > > > TimeOutToken               = ("TimeOut"               | "TO")
> > > > TopologyToken              = ("Topology"              | "TP")
> > > > TransToken                 = ("Transaction"           | "T")
> > > > V18Token                   = ("V18")
> > > > V22Token                   = ("V22")
> > > > V22bisToken                = ("V22b")
> > > > V32Token                   = ("V32")
> > > > V32bisToken                = ("V32b")
> > > > V34Token                   = ("V34")
> > > > V90Token                   = ("V90")
> > > > V91Token                   = ("V91")
> > > >
> > > > regards
> > > > Abdallah Rayhan
> > > >
>
> --
>
> Regards,
> Harpreet
>
> _________________________________
> Harpreet Singh Anand
> Ficon Technology
> E-mail :  mailto:[email-masked]
> Web    :  http://www.ficon-tech.com
>

---

From: Christian Groves <[email-masked]>
Date: Wed, 3 Nov 1999 13:55:46 +0100

I agree with Brian and Pete on this. I don't really see the necessity to
have reserved token names that can't used elsewhere in the protocol.
Each protocol element has a certain scope and the protocol parsing
should be intelligent enough to know what's in scope and what is out of
scope.

Cheers, Christian