
Gregory Colvin wrote:
On Jun 6, 2004, at 10:12 AM, Eric Niebler wrote:
The syntax issue is this: if we take assign to be shallow (creating aliases) we need a different syntax for deep assign. I am using *= to mean deep-assign. Perhaps there is a better solution.
*x = *y
?
I thought about this. I wasn't sure how well it would be received. People would have to write their grammars like: rule<> a, b; *a = parser >> that >> refers >> to >> b; *b = parser >> that >> refers >> to >> a; It strongly evokes the rule-as-pointer metaphor, which is good. However, *b already has a meaning in spirit: match rule b zero or more times. It would be possible to implement it such that *b= means "deep copy" whereas *b when it appears in a rule has the familiar kleene star meaning. This could confuse users though. That's why I have been considering this: rule<> a, b; a *= parser >> that >> refers >> to >> b; b *= parser >> that >> refers >> to >> a; I don't know. Another question is: would spirit's users accept any amount of syntactic/conceptual overhead to have a rule with standard copy semantics and that was able to track its references and avoid cyclic dependencies? -- Eric Niebler Boost Consulting www.boost-consulting.com