[squeak-dev] The Inbox: Compiler-mt.436.mcz

K K Subbu kksubbu.ml at gmail.com
Fri Jun 12 11:22:49 UTC 2020


On 12/06/20 7:44 am, commits at source.squeak.org wrote:
> + ----- Method: Parser>>primitive (in category 'primitives') -----
> + primitive
> + 	"Pragmas that encode primitive calls are parsed as normal keyword pragmas. This hook exists so that packages do not break primitive-pragma parsing by accident. Instead, this method needs to be replaced intentionally.
> + 	
> + 	Note that primitive pragmas are special because they will be called back from the parser into the parser. See #pragmaPrimitives.
> + 	
> + 	Examples:
> + 		<primitive: 42>
> + 		<primitive: 'primitiveDirectoryCreate' module: 'FilePlugin'>
> + 		<primitive: 'primitiveRegisterExternalFill' module: 'B2DPlugin' error: errorCode>"
> +
> + 	<pragmaParser>
Marcel,

Why should the parser treat primitive keywords differently from other 
keywords? Why not let primitives also be handled like any other pragma 
and have the handler return a flag to let the parser treat the pragma as 
a primitive/nonprimitive?

It just occurred to me (strawman alert!) that the parser could parse
    <primitive: 42>
as
    <primitive: 'prim42' module: 'primitivePlugin'>

It will allow us to switch primitive tables at run time without 
recompiling the VM.

Regards .. Subbu


More information about the Squeak-dev mailing list