From 7ec24658b5d05d801fa062f46715c7f5e2011b39 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sat, 8 Feb 2014 10:42:49 -0500 Subject: [PATCH] Code Cleanup - Removed obsolete parser info. --- doc/misc/parser/README | 94 --------------------------------- doc/misc/parser/expressions.txt | 34 ------------ doc/misc/parser/grammar.txt | 79 --------------------------- 3 files changed, 207 deletions(-) delete mode 100644 doc/misc/parser/README delete mode 100644 doc/misc/parser/expressions.txt delete mode 100644 doc/misc/parser/grammar.txt diff --git a/doc/misc/parser/README b/doc/misc/parser/README deleted file mode 100644 index d094ae94f..000000000 --- a/doc/misc/parser/README +++ /dev/null @@ -1,94 +0,0 @@ -The main focus of the 2.4.0 release is a new command line parser that has more -capabilities with fewer quirks and bugs. - - -Improvements needed: - -- Assorted quoting issues. If this command is issued, then the quoting should - be obeyed: - - task add one project:'Bob\'s Project' - task add "one 'two' three" - task add 'one "two" three' - task add 'one \'two\' three' - task add "one \"two\" three" - -- The process of splitting and rejoining tokens causes this kind of problem: - - "one (two) three" --> "one ( two) three" - -- Any formatting in the input that makes it past the shell should be preserved. - -- The '--' token should faithfully cause no further parsing - lexing only. - -- The ability to perform simple math: - - task add one due:eoy wait:due-2wks scheduled:wait-1wk - - When processed left to right, this command has referential integrity. - -- An attribute value must be a single argument, but can be presented in several - equivalent ways: - - wait:due-2wks - wait:'due-2wks' - wait:"due-2wks' - wait:"due -2wks' - wait:"due - 2wks' - wait:due\ -\ 2wks - - -Grammar: - -To achieve the above, a formal grammar will be developed, otherwise a hand- -crafted parser is going to be unmaintainable. See the grammar.txt file for the -formal definition. - -This grammar.txt will be embedded into task as a single-string document, then -itself parsed and used. This has several advantages: - -- It allows the grammar to be discussed in its purest form, with an - authoritative document as a definition. -- It allows the grammar to be tweaked at a high level without code changes. -- It allows a developer to experiment with grammar. - - -Expressions: - -The expression evaluator will be capable of applying any supported filter. - -The expression evaluator will also be capable of evaluating fragments of output -from the parser, yielding a single value. As an example, the command line: - - task add one due:eoy wait:due-2wks - -Is to be parsed as: - - index | 0 1 2 3 4 - --------+----------------------------------------------- - raw | task add one due:eoy wait:due-2wks - type | command string attr attr - subtype | read - attr | desc due wait - value | eval 'eoy' eval 'due-2wks' - -The eval needs of this command are: - - 'eoy' == date literal - 'due-2wks' == - - -The parse tree should be: - - +- add COMMAND - +- "one" WORD - +- attr - | +- due ATTRIBUTE - | +- expr - | | + "eoy" LITERAL DATE - +- attr - +- wait ATTRIBUTE - +- expr - += "due" DOM DATE - += "-" OP - += "2wks" LITERAL DURATION - diff --git a/doc/misc/parser/expressions.txt b/doc/misc/parser/expressions.txt deleted file mode 100644 index adf973837..000000000 --- a/doc/misc/parser/expressions.txt +++ /dev/null @@ -1,34 +0,0 @@ -The expression evaluator allows powerful filters and modifications. - -There are four data types, just like UDAs: - - string project, description - date due, wait ... - duration recur - numeric urgency - -There are several forms of literals: - - rc.name configuration - task-specific data - numbers - either ISO-8601 or rc.dateformat dates - either ISO-8601 or durations - -There are many supported operators: - - + addition, concatenation - - subtraction, unary minus - * multiplication - / division - ( ) precedence - and or xor not ! logical operators - < <= > >= relation operators - = != equality operators - ~ !~ match operators - -There are helper operators to perform odd operations: - - __hastag__ presence of a tag - __notag__ absence of a tag - diff --git a/doc/misc/parser/grammar.txt b/doc/misc/parser/grammar.txt deleted file mode 100644 index 52247f74a..000000000 --- a/doc/misc/parser/grammar.txt +++ /dev/null @@ -1,79 +0,0 @@ -# The command line needs to obey a grammar. It is then against this grammar -# that bugs will be identified. -# -# Conventions: -# - Literals are always double-quoted. -# - "*", "+" and "?" suffixes have POSIX semantics. -# - Low-level primitives are in . -# - @reports for dynamic lists such as custom report names. -# -# The general form of commands is: -# task [ all-commands ] -# - - grammar ::= all-commands? - ; - - all-commands ::= custom-report - | read-command - | write-command - | special-command - ; - - custom-report ::= filter? @report ; - read-command ::= filter? @readcmd ; - write-command ::= filter? @writecmd modifiers ; - special-command ::= ; - - filter ::= expression ; - - expression ::= ; - - modifiers ::= ; - -# Low-level: - - dom ::= context-value - | system-value - | rc-value - | task-value - ; - - context-value ::= "context.program" - | "context.args" - | "context.width" - | "context.height" - ; - - system-value ::= "system.version" - | "system.os" - ; - - rc-value ::= /rc\.[a-zA-Z.]+/ - ; - - task-value ::= "." attribute - | "." attribute - ; - - literal ::= - | - | - | - ; - -# Supported primitives: -# -# -# -# -# -# -# -# -# @command all commands -# @report all custom reports -# @attributes all attributes, UDAs -# @readcmd all read-only commands -# @writecmd all write commands -