takentaal/takentaal.g4
Jos van den Oever ecc5a1aa00 Disallow { and space in STARTCHAR
This solved parsing the example, but is suboptimal. The real fix is to
know why STARTCHAR takes precedence over S and START_AMOUNT
2024-09-02 10:37:56 +02:00

105 lines
1.1 KiB
ANTLR

grammar takentaal;
takentaal
: header
plan
;
header
: 'takentaal v0.1.0' EOL
;
plan
: PLAN_TOKEN S* amount TEXT EOL
description
task+
;
description
: (TEXT EOL)*
;
task
: TASK_TOKEN S* amount TEXT EOL
description
subtask*
;
subtask
: SUBTASK_TOKEN S* amount TEXT EOL
description
;
amount
: START_AMOUNT S* INT END_AMOUNT
|
;
PLAN_TOKEN
: '#'
;
TASK_TOKEN
: '##'
;
SUBTASK_TOKEN
: (SUBTASK_NEW_TOKEN | SUBTASK_PARTIAL_TOKEN | SUBTASK_COMPLETE_TOKEN | SUBTASK_OBSOLETE_TOKEN)
;
SUBTASK_NEW_TOKEN
: '-'
;
SUBTASK_PARTIAL_TOKEN
: '/'
;
SUBTASK_COMPLETE_TOKEN
: '*'
;
SUBTASK_OBSOLETE_TOKEN
: '!'
;
S
: ' ' -> skip
;
WS
: [ ] -> skip
;
EOL
: '\n'+
;
INT
: DIGIT+
;
DIGIT
: [0-9]
;
START_AMOUNT
: '{'
;
END_AMOUNT
: '}'
;
STARTCHAR
: [!-"$-/:-\u007A\u007C\u007E]
;
CHAR
: [ -\u007E\u00A0-\u33FF] // ASCII and UNICODE
;
TEXT
: STARTCHAR CHAR*
;