TDL/Readme.md

1.6 KiB

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.

You can find releases at releases.gutmet.org or build the program with 'go build'.

Usage

$ TDL yourSchedule.tdl

You find the output in yourSchedule-TIMESTAMP.txt

See the examples folder for inspiration to write your schedule file.

Grammar

For completeness' sake, the grammar in EBNF looks like this. You don't have to read this to use the program!

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.