grammar takentaal; takentaal : line+ EOF ; line : plan | task | subtask | comment ; plan : PLAN_TOKEN TEXT | PLAN_TOKEN TEXT AMOUNT ; task : TASK_TOKEN TEXT | TASK_TOKEN TEXT AMOUNT ; subtask : subtask_new | subtask_partial | subtask_complete | subtask_obsolete ; subtask_new : SUBTASK_NEW_TOKEN TEXT AMOUNT? ; subtask_partial : SUBTASK_PARTIAL_TOKEN TEXT AMOUNT? ; subtask_complete : SUBTASK_COMPLETE_TOKEN TEXT AMOUNT? ; subtask_obsolete : SUBTASK_OBSOLETE_TOKEN TEXT AMOUNT? ; comment : TEXT ; PLAN_TOKEN : '# ' ; TASK_TOKEN : '## ' ; SUBTASK_NEW_TOKEN : '- ' ; SUBTASK_PARTIAL_TOKEN : '/ ' ; SUBTASK_COMPLETE_TOKEN : '* ' ; SUBTASK_OBSOLETE_TOKEN : '! ' ; WS : [ \r\n\t]+ -> skip ; AMOUNT : '{' INT+ '}' ; fragment INT : [0-9] ; TEXT : TEXTHEAD TEXTBODY* ; fragment TEXTHEAD : [a-zA-Z] ; fragment TEXTBODY : TEXTHEAD | [0-9_()., ] ;