TDL === TDL is a language for weightlifting schedules and a corresponding generator. From a file with descriptions of sets and percentages the program computes concrete training days and plates needed. Usage ----- ``` TDL yourSchedule.tdl ``` You find the output in yourSchedule-TIMESTAMP.txt See the examples folder for inspiration to writer your schedule file. Beer Note --------- You can buy me a beer [here](http://paypal.me/AlexanderWeinhold). Grammar ------- For completeness' sake, the grammar in EBNF looks like this: ``` TDL = Lifts [Plates] [SetTemplates] TrainingDays EOI . Lifts = "Lifts:" Lift {"," Lift} . Lift = LiftIdent "Max:" Weight "Increment:" Weight [ "%" ] [ "Bar:" Weight ] . Plates = "Plates:" Plate { "," Plate } . Plate = Weight 'x' Amount . SetTemplates = "SetTemplates:" "-" SetTemplate { "-" SetTemplate } . SetTemplate = SetTemplateIdent SetTemplateItem { ',' SetTemplateItem } . SetTemplateItem = SetTemplateIdent | Set [ 'x' Amount ] . Set = Amount "reps" '@' Percentage '%' [ '+' Weight ] [ 'x' Amount ] [ Notice ] . TrainingDays = "TrainingDays:" "-" TrainingDay { "-" TrainingDay } . TrainingDay = TrainingDayItem { TrainingDayItem } . TrainingDayItem = string | LiftSchedule. LiftSchedule = LiftIdent ':' SetTemplateItem { ',' SetTemplateItem } [ "increase" [ Weight [ "%" ] ] ] . Amount = integer . Percentage = integer|float . Weight = integer|float . LiftIdent = ident . SetTemplateIdent = ident . Notice = '(' ANY ')' . ``` Comments can be enclosed in square brackets and are ignored.