scope of root and meaning of public

[Email forwarded at Jim Jackson's request -- original email did not reach the list]

Subject: scope of root and meaning of public
Date:    Thu, 04 Jul 2002 08:51:16 -0400
Fom:     "jim jackson" <>


The candidate recommendation states in Section 4.7:
"The rule declared as the root rule may be scoped as either public or

This is actually a misleading statement because even if the root is
declared private, it always behaves like a public rule (which is

1. the following sentence of Section 4.7 states that the root is
always activable:
"A rule reference to the root rule of a grammar is legal."
It seems clear this holds even if the rule is private;  this
impression is confirmed by Section 5.4:
"A conforming Grammar Processor (...) must be able to activate the
root, any single public rule, or any set of public rules or roots".

2. the next parag of Section 4.7 states that the root is always
"The root rule may be activated for recognition."

Now the purpose of the scope of a rule is to set two properties:
activation and exportation, which is confirmed by Appendix I:
"- Possible distinction of "activable" and "exported" rules (currently
merged as "public")".

In fact, I think that setting the scope of the root should not be
allowed because it can only be public.

About the point of Appendix I, I regreat that the addressed
distinction is not effective right now but I can live with it; after
all, being public can be seen from two perspectives: the grammars and
the engine.

However I am much more surprised by another confusion: being activable
is considered as being both on/off switchable at engine run-time, and
also being the "start symbol" (as defined in [HU79]:
Section 3.2 actually reads:

"Rules with public scope may be activated for recognition. That is
they may define the top-level syntax of spoken input." ("top-level
syntax" meaning "start symbol" I guess)

Now if you consider the grammar:
$root = I want to be connected to $people [please];
$people = $people_1st_floor | $people_2nd_floor ;

When you want to deactivate $people_2nd_floor, you have to declare it
public, but then, it also becomes a start symbol, which allows for
undesired spoken utterances.

I find this confusion much more a problem than exportation/activation.
This issue is even not addressed in Appendix I.  In the same vein, I
think that the status of the start symbol naturally belongs to the root and 
only to it.


Chat with friends online, try MSN Messenger:

Received on Monday, 8 July 2002 11:51:11 UTC