explore current scope, or other hack

spir denis.spir at gmail.com
Mon Nov 15 11:59:23 PST 2010


On Mon, 15 Nov 2010 12:44:24 -0500
bearophile <bearophileHUGS at lycos.com> wrote:

> spir:
> 
> > 1. name objects automatically
> > I need some objects to know their name (as field on themselves). the only solution I can else imagine is for the user write:
> > 	x = ...;
> > 	x.name = "x";
> 
> What if you have two or more references to the same object?

I'm not sure what you mean. The said objects are patterns (instances of a Pattern class hierachy). And indeed, they are multiply referenced (that's precisely the point of writing a grammar ;-).

Their names are used everywhere:
* stand-alone pattern output
* super-pattern output (subpatterns are replaced by their name, else output explodes) eg
	operand: symbol|number
* inside nodes they generate (eg allow discrimination between choices)
* error output ("expected operand at position...")
* result output for testing

> Regarding your generic question, I'd like DMD to have more static introspection, for for now ...

Dynamic introspection would do the job for me, I guess. In python, would be like (untested):
	def namePatterns (scope = var()):
	  for (name,obj) in scope:
	    if isinstance(obj, Pattern):
	      obj.name = name
Don't know how static would help better.
Any idea how else to write somethink analog to format()?


denis
-- -- -- -- -- -- --
vit esse estrany ☣

spir.wikidot.com



More information about the Digitalmars-d-learn mailing list