PATH:
usr
/
share
/
doc
/
perl-Parse-RecDescent-1.967009
/
demo
#!/usr/bin/perl -sw # "Potato, Egg, Red meat & Lard Cookbook", # T. Omnicient Rash & N. Hot Ignorant-Kant # O'Besity & Associates use Parse::RecDescent; $grammar = q{ Recipe: Step(s) Step: Verb Object Clause(s?) { print "$item[1]\n" } | <resync:[ ]{2}> Verb: 'boil' | 'peel' | 'mix' | 'melt' | 'fry' | 'steam' | 'marinate' | 'sprinkle' | 'is' | 'are' | 'has' Object: IngredientQualifier(s) Ingredient | ReferenceQualifier(s) Ingredient | Reference Clause: SubordinateClause | CoordinateClause SubordinateClause: 'until' State | 'while' State | 'for' Time CoordinateClause: /and( then)?/ Step | /or/ Step State: Object Verb Adjective | Adjective Time: Number TimeUnit TimeUnit: /hours?/ /minutes?/ /seconds?/ QuantityUnit: /lbs?/ Object: ReferenceQualifier Ingredient | Reference Reference: 'they' | 'it' | 'them' Ingredient: 'potatoes' | 'lard' | 'olive oil' | 'sugar' | 'bacon fat' | 'butter' | 'salt' | 'vinegar' IngredientQualifier: Amount | Number | 'a' | 'some' | 'large' | 'small' Amount: Number QuantityUnit ReferenceQualifier: 'the' | 'those' | 'each' | 'half the' Number: /[1-9][0-9]*/ | /one|two|three|four|five|six|seven|eight|nine/ | 'a dozen' Adjective: 'soft' | 'tender' | 'done' | 'charred' | 'grey' }; $parse = new Parse::RecDescent ($grammar); $/ = "\n\n"; while (<DATA>) { if($ingredients = $parse->Recipe(lc $_)) { print "$ingredients\n$_"; } } __DATA__ Boil six large potatoes until they are grey and then marinate them for at least two hours in a mixture of lard, olive oil, raw sugar, and sea-salt. In a deep-fryer melt 2 lbs of bacon fat and bring to the boil. Fry the marinated potatoes for 7 minutes, or until they are nicely charred. Serve with lashings of butter. Sprinkle with salt and vinegar to taste.
[-] demo_cpp.pl
[edit]
[-] demo_autorule.pl
[edit]
[-] demo_errors.pl
[edit]
[-] demo_piecewise.pl
[edit]
[-] demo_logic.pl
[edit]
[-] demo_skipcomment.pl
[edit]
[-] demo_implicit.pl
[edit]
[-] demo_separators.pl
[edit]
[-] demo_perlparsing.pl
[edit]
[-] demo_street.pl
[edit]
[-] demo_scoredsep.pl
[edit]
[-] demo.c
[edit]
[-] demo_textgen.pl
[edit]
[-] demo.pl
[edit]
[-] demo_calc.pl
[edit]
[+]
..
[-] demo_another_Cgrammar.pl
[edit]
[-] demo_matchrule2.pl
[edit]
[-] demo_mccoy.pl
[edit]
[-] demo_restructure_painful.pl
[edit]
[-] demo_methods.pl
[edit]
[-] demo_language.pl
[edit]
[-] demo_selfmod.pl
[edit]
[-] demo_OOautoparsetree.pl
[edit]
[-] demo_codeblock.pl
[edit]
[-] demo_simplequery.pl
[edit]
[-] demo_restructure_easy.pl
[edit]
[-] demo_tokens.pl
[edit]
[-] demo_decomment.pl
[edit]
[-] demo_recipe.pl
[edit]
[-] demo_delete.pl
[edit]
[-] demo_lisplike.pl
[edit]
[-] demo_bad.pl
[edit]
[-] demo_arithmetic.pl
[edit]
[-] demo_leftassoc.pl
[edit]
[-] demo_PerlCSV.pl
[edit]
[-] demo_metaRD.pm
[edit]
[-] demo_derived.pl
[edit]
[-] demo_opreps.pl
[edit]
[-] demo_matchrule.pl
[edit]
[-] demo_LaTeXish_autoact.pl
[edit]
[-] demo_operator.pl
[edit]
[-] demo_autoscoresep.pl
[edit]
[-] demo_Cgrammar_v2.pl
[edit]
[-] demo_NL2SQL.pl
[edit]
[-] demo_Cgrammar.pl
[edit]
[-] demo_randomsentence.pl
[edit]
[-] demo_template.pl
[edit]
[-] demo_quicklist.pl
[edit]
[-] demo_itemhash.pl
[edit]
[-] demo_buildcalc.pl
[edit]
[-] demo_leftop.pl
[edit]
[-] demo_decomment_nonlocal.pl
[edit]
[-] demo_dot.pl
[edit]
[-] demo_LaTeXish.pl
[edit]
[-] demo_precalc.pl
[edit]
[-] demo_eval.pl
[edit]
[-] demo_autostub.pl
[edit]
[-] demo_whoson.pl
[edit]
[-] demo_lexer.pl
[edit]
[-] demo_OOparsetree.pl
[edit]
[-] demo_parsetree.pl
[edit]
[-] demo_simple.pl
[edit]
[-] demo_embedding.pl
[edit]
[-] demo_simpleXML.pl
[edit]
[-] demo_undumper.pl
[edit]