God Day all, What advice do people have for marking up a language grammar containing statements with a variable (and potentially lengthy) list of parameters, which are themselves morphologically complex?
I saw here http://macromates.com/blog/2005/language-grammars/, the idea of using $self to re-parse the detected fragment using the whole language grammar
{ name = "markup.bold.html"; begin = "<b>"; end = "</b>"; patterns = ( // really means ³contains² { include = "$self"; } ); }
And also the idea of using a repository of named rules to direct the second level of parsing. Are there bundles that use that and upon which which I could base my work ?
The statements I want to match are of the form
latentVar BY var var var var...;
This should be parsed into <variable.latent> <keyword.BY> <variable.dv>...
The tricky bit is that each variable has its own syntax and can appear n one of three forms
name // <variable.name> name@n // <variable.name><keyword.at> <numeric.value> name*n // <variable.name><keyword.start> <numeric.value>
So that each variable gets matched like this: \s+(\w+)((@|*)([-.\d]+))?\s+
A test case might be
e1 BY item1@1 item2 item3*0.51;
It is obviously pretty redundant and unmaintainable to make a big list like that in a single rule, and ultimately not possible as the variable list might exceed the rule's length.
Suggestions gratefully received.
Tim