On 20/06/12 21:02, Niklas Laxström wrote:
> No, this is not about a wikitext parser. Rather something much simpler.
> 
> Have a look at [1] and you will see rules like:
> n in 0..1
> n is 2
> n mod 10 in 3..4,9 and n mod 100 not in 10..19,70..79,90..99
> 
> Long ago when I wanted to compare the plural rules of MediaWiki and
> CLDR I wrote a parser for the CLDR rule format. Unfortunately my
> implementation uses regular expression and eval, which makes it
> unsuitable for production. Now, writing parsers is not my area of
> expertise, so can you please point me how to do this properly with
> PHP. Bonus points if it is also easily adaptable to JavaScript.
> 
> [1] 
> http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html

For input which is guaranteed to be small, a recursive descent parser
is a reasonable choice -- maybe not the fastest method, but easy to
understand and fun to write. There's lots of useful reference material
available with a web search, e.g.:

http://teaching.idallen.com/cst8152/98w/recursive_decent_parsing.html

-- Tim Starling


_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to