| |
Unix Programming - Designing Minilanguages - Writing a Custom Grammar
Writing a Custom Grammar
For declarative minilanguages, one major question is whether or
not you should use XML as a base syntax and specify your grammar as an
XML document type. This may well be the right thing for elaborately
structured declarative minilanguages, but the same caveats we noted in
Chapter5 about the
design of data-file formats apply — XML might be overkill. If
you don't use XML, follow the Rule of Least Surprise by supporting the
Unix conventions we described for data files (simple token-oriented
syntax, supporting C backslash conventions, etc.).
If you do need a custom grammar, yacc
and lex (or their local equivalent in the
language you're using) should probably be your best friends, unless
the grammar of your language is so simple that hand-coding a
recursive-descent parser is trivial. Even then,
yacc may give you better error recovery,
and a yacc specification will be easier to
modify as the language syntax evolves. See Chapter9 for a look at the
yacc- and
lex-derived tools available in different
implementation languages.
Even if you decide you must implement your own syntax, consider
what mileage you can get from reusing existing tools. If you need a
macro facility, consider whether preprocessing with
m4(1)
might be the right answer — but consider the cautions in the
next section first.
[an error occurred while processing this directive]
|
|