Support var decls in facet blocks
This commit is contained in:
parent
9af4e88681
commit
f8116ee8eb
|
@ -54,10 +54,11 @@ function buildActor(constructorES5, nameExpOpt, block) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildFacet(facetBlock, transitionBlock) {
|
function buildFacet(facetBlock, transitionBlock) {
|
||||||
return 'Syndicate.Actor.createFacet()' +
|
return '(function () { ' + (facetBlock ? facetBlock.facetVarDecls : '') +
|
||||||
|
'\nSyndicate.Actor.createFacet()' +
|
||||||
(facetBlock ? facetBlock.asES5 : '') +
|
(facetBlock ? facetBlock.asES5 : '') +
|
||||||
(transitionBlock ? transitionBlock.asES5 : '') +
|
(transitionBlock ? transitionBlock.asES5 : '') +
|
||||||
'.completeBuild();';
|
'.completeBuild(); })();';
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildOnEvent(isTerminal, eventType, subscription, projection, bindings, body) {
|
function buildOnEvent(isTerminal, eventType, subscription, projection, bindings, body) {
|
||||||
|
@ -136,7 +137,7 @@ var modifiedSourceActions = {
|
||||||
return 'Syndicate.Dataspace.send(' + expr.asES5 + ')' + sc.interval.contents;
|
return 'Syndicate.Dataspace.send(' + expr.asES5 + ')' + sc.interval.contents;
|
||||||
},
|
},
|
||||||
|
|
||||||
FacetBlock: function(_leftParen, init, situations, done, _rightParen) {
|
FacetBlock: function(_leftParen, _varStmts, init, situations, done, _rightParen) {
|
||||||
return (init ? init.asES5 : '') + situations.asES5.join('') + (done ? done.asES5 : '');
|
return (init ? init.asES5 : '') + situations.asES5.join('') + (done ? done.asES5 : '');
|
||||||
},
|
},
|
||||||
FacetStateTransitionBlock: function(_leftParen, transitions, _rightParen) {
|
FacetStateTransitionBlock: function(_leftParen, transitions, _rightParen) {
|
||||||
|
@ -170,7 +171,8 @@ var modifiedSourceActions = {
|
||||||
pattern.subscription,
|
pattern.subscription,
|
||||||
pattern.projection,
|
pattern.projection,
|
||||||
pattern.bindings,
|
pattern.bindings,
|
||||||
'{ Syndicate.Actor.createFacet()' +
|
'{ ' + facetBlock.facetVarDecls +
|
||||||
|
'\nSyndicate.Actor.createFacet()' +
|
||||||
facetBlock.asES5 +
|
facetBlock.asES5 +
|
||||||
buildOnEvent(true,
|
buildOnEvent(true,
|
||||||
'retracted',
|
'retracted',
|
||||||
|
@ -195,6 +197,12 @@ var modifiedSourceActions = {
|
||||||
|
|
||||||
semantics.extendAttribute('modifiedSource', modifiedSourceActions);
|
semantics.extendAttribute('modifiedSource', modifiedSourceActions);
|
||||||
|
|
||||||
|
semantics.addAttribute('facetVarDecls', {
|
||||||
|
FacetBlock: function (_leftParen, varDecls, _init, _situations, _done, _rightParen) {
|
||||||
|
return varDecls.asES5;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
semantics.addAttribute('asSyndicateStructureArguments', {
|
semantics.addAttribute('asSyndicateStructureArguments', {
|
||||||
FormalParameterList: function(formals) {
|
FormalParameterList: function(formals) {
|
||||||
return formals.asIteration().asSyndicateStructureArguments;
|
return formals.asIteration().asSyndicateStructureArguments;
|
||||||
|
|
|
@ -36,7 +36,7 @@ Syndicate <: ES5 {
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
// Ongoing event handlers.
|
// Ongoing event handlers.
|
||||||
|
|
||||||
FacetBlock = "{" FacetInitBlock? FacetSituation* FacetDoneBlock? "}"
|
FacetBlock = "{" VariableStatement* FacetInitBlock? FacetSituation* FacetDoneBlock? "}"
|
||||||
FacetStateTransitionBlock = "{" FacetStateTransition* "}"
|
FacetStateTransitionBlock = "{" FacetStateTransition* "}"
|
||||||
|
|
||||||
FacetInitBlock = do FunctionBodyBlock
|
FacetInitBlock = do FunctionBodyBlock
|
||||||
|
|
Loading…
Reference in New Issue