diff -r 17ba167b8ee1 -r 553a5456963b compiler/PPCPluggableNode.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/compiler/PPCPluggableNode.st Sun Oct 26 01:03:31 2014 +0000 @@ -0,0 +1,59 @@ +"{ Package: 'stx:goodies/petitparser/compiler' }" + +PPCNode subclass:#PPCPluggableNode + instanceVariableNames:'block' + classVariableNames:'' + poolDictionaries:'' + category:'PetitCompiler-Nodes' +! + +PPCPluggableNode comment:'' +! + +!PPCPluggableNode methodsFor:'accessing'! + +block + + ^ block +! + +block: anObject + + block := anObject +! ! + +!PPCPluggableNode methodsFor:'as yet unclassified'! + +acceptsEpsilon + ^ true +! + +acceptsEpsilonOpenSet: set + ^ true +! + +asInlined + ^ PPCInlinePluggableNode new + name: name; + block: block; + yourself +! + +compileWith: compiler effect: effect id: id + | blockId | + blockId := compiler idFor: block prefixed: #block. + + compiler startMethod: id. + compiler addConstant: block as: blockId. + compiler add: '^ ', blockId, ' value: context.'. + ^ compiler stopMethod. +! + +firstCharParser + ^ block asParser +! + +prefix + ^ #plug +! ! +