/// A list of tasks, where each task follows the defined `task` rule.
task_list = { task* }
/// Defines a task with a priority, status, date, optional tags, time estimate, and description.
task = { priority ~ WHITE_SPACE ~ status ~ WHITE_SPACE ~ date~ WHITE_SPACE ~ tags ~ WHITE_SPACE ~ time_estimate ~ WHITE_SPACE ~ description }
/// Priority of the task, represented by 1 to 3 exclamation marks (`!`).
priority = { "!"{1,3} }
/// Status of the task, represented by a checkbox: `[ ]` for incomplete or `[x]` for completed.
status = { "[" ~ ("x" | WHITE_SPACE) ~ "]" }
/// Date of the task in the format `{YYYY-MM-DD}`.
date = { "{" ~ year ~ "-" ~ month ~ "-" ~ day ~ "}" }
/// Tags for the task, represented by hashtags (e.g., `#urgent`, `#work`).
tags = { "#" ~ ASCII_ALPHANUMERIC+ ~ (WHITE_SPACE ~ "#" ~ ASCII_ALPHANUMERIC+)* }
/// Time estimate for the task, represented by hours (`h`) or minutes (`m`).
time_estimate = { ASCII_DIGIT+ ~ ("h" | "m") }
/// Comment for the task, starting with `//`.
comment = { "//" ~ (!NEWLINE ~ ANY)* }
/// The year part of the date, represented by 4 digits (e.g., 2024).
year = { ASCII_DIGIT{4} }
/// The month part of the date, represented by `01` to `12`.
month = { "0" ~ '1'..'9' | "1" ~ '0'..'2' }
/// The day part of the date, represented by `01` to `31`.
day = { "0" ~ '1'..'9' | '1'..'2' ~ ASCII_DIGIT | "3" ~ '0'..'1' }
/// Description of the task, which can contain alphanumeric characters and spaces.
description = { (ASCII_ALPHANUMERIC | " ")+ }