- From: <bugzilla@wiggum.w3.org>
- Date: Fri, 02 Sep 2005 00:52:03 +0000
- To: public-qt-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=1743
------- Additional Comments From jmdyck@ibiblio.org 2005-09-02 00:52 -------
(In reply to comment #3)
>
> Any comments on that plan?
I think it's a weak plan. I realize that there are times when you have to
step outside the formalism and define something in prose, but I don't think
this is one of those times.
Making two passes over the Prolg doesn't seem that complex to me. Try this:
========================================================================
(1)
5 / STA / rule 1:
Take premise 1:
statEnvDefault |- PrologDeclList =>stat statEnv with PrologDeclList1
and split it into 2 passes, yielding this rule:
statEnvDefault |- PrologDeclList =>stat1 statEnv1
statEnv1 |- PrologDeclList =>stat2 statEnv2 with PrologDeclList1
statEnv2 |- [ QueryBody ]_Expr = Expr2
statEnv2 |- Expr2 : Type
-------------------------------
PrologDeclList QueryBody : Type
========================================================================
(2)
Split 5 / SCP / rule 2 into the recursive rules for the two passes:
statEnv |- PrologDecl =>stat1 statEnv1
statEnv1 |- PrologDeclList =>stat1 statEnv2
------------------------------------------------------
statEnv |- PrologDecl; PrologDeclList =>stat1 statEnv2
[ PrologDecl ]_PrologDecl = PrologDecl1
statEnv |- PrologDecl1 =>stat2 statEnv1
statEnv1 |- PrologDeclList =>stat2 statEnv2 with PrologDeclList1
------------------------------------------------------
statEnv |- PrologDecl; PrologDeclList =>stat2 statEnv2
with PrologDecl1 ; PrologDeclList1
And similarly for 5 / SCP / rule 1:
-----------------------------
statEnv |- () =>stat1 statEnv
-------------------------------------
statEnv |- () =>stat2 statEnv with ()
========================================================================
(3)
Define the "statEnv |- PrologDecl =>stat1 statEnv1" judgment...
(a) For PrologDecls other than VarDecl and FunctionDecl, simply
take the existing =>stat rule and change '=>stat' to '=>stat1'.
(b) For VarDecls, it's a pass-through:
---------------------------------
statEnv |- VarDecl =>stat1 statEnv
(c) For FunctionDecls, it only pulls out the function signature.
Replace 5.15 / SCP / rule 1 with:
[ FunctionDecl ]_FS = FunctionSignature
statEnv |- QName of func expands to expanded-QName
statEnv1 = statEnv + funcType(expanded-QName => FunctionSignature)
---------------------------------------
statEnv |- FunctionDecl =>stat1 statEnv1
where []_FS adapts much of 5.15 / Normalization, but notably does not
involve []_Expr:
[ declare function QName ( ParamList? ) ... ]_FS
==
fn-sig ( [ ParamList? ]_ParamSig ) as item*
[ declare function QName ( ParamList? ) as SequenceType ... ]_FS
==
fn-sig ( [ ParamList? ]_ParamSig ) as SequenceType
[ $ VarName ]_ParamSig == item*
[ $ VarName as SequenceType ]_ParamSig == SequenceType
========================================================================
(4)
Define the "statEnv |- PrologDecl =>stat2 statEnv1" judgment...
(a) For PrologDecls other than VarDecl and FunctionDecl,
it's a pass-through:
not(PrologDecl is a VarDecl)
not(PrologDecl is a FunctionDecl)
---------------------------------------
statEnv |- PrologDecl =>stat2 statEnv
(Or you can enumerate the cases if you like.)
(b) For VarDecls, take the rules of 5.14 / SCP and change '=>stat' to
'=>stat2'.
(c) For FunctionDecls, take 5.15 / STA / rule (1|2) / conclusion, and
change ": Typer" to "=>stat2 statEnv".
========================================================================
Received on Friday, 2 September 2005 00:52:08 UTC