mirror of
https://github.com/GothenburgBitFactory/timewarrior.git
synced 2025-07-07 20:06:39 +02:00
timew: Renamed grammar files, added rule.grammar
This commit is contained in:
parent
925e8ec14b
commit
78653a16cf
3 changed files with 56 additions and 8 deletions
38
src/rule.grammar
Normal file
38
src/rule.grammar
Normal file
|
@ -0,0 +1,38 @@
|
|||
# Timewarrior grammar definition.
|
||||
|
||||
# Conventions:
|
||||
# - Literals are always double-quoted.
|
||||
# - "*", "+" and "?" suffixes have POSIX semantics.
|
||||
# - "є" means empty set.
|
||||
# - Lower-level primitives are barewords.
|
||||
# - Literal modifiers:
|
||||
# - :a Accept abbreviations
|
||||
# - :i Accept caseless match
|
||||
# - Blank line between rules.
|
||||
|
||||
# Left associative:
|
||||
# A -> A <op> B
|
||||
# B
|
||||
#
|
||||
# Right associative:
|
||||
# A -> B <op> A
|
||||
# B
|
||||
|
||||
rule:
|
||||
config_rule
|
||||
exclusion_rule
|
||||
event_rule
|
||||
tag_rule
|
||||
|
||||
config_rule:
|
||||
"define" "configuration"
|
||||
|
||||
exclusion_rule:
|
||||
"define" "exclusions"
|
||||
|
||||
event_rule:
|
||||
"define" "rule"
|
||||
|
||||
tag_rule:
|
||||
"define" "tag"
|
||||
|
|
@ -50,19 +50,29 @@ int main (int argc, const char** argv)
|
|||
// TODO Load CLI grammar.
|
||||
// TODO Load from string, else file on config override.
|
||||
// TODO Migrate from loading a grammar from file, to a default string.
|
||||
File file ("./grammar.cfg");
|
||||
Grammar grammar;
|
||||
grammar.loadFromFile (file);
|
||||
std::cout << grammar.dump ();
|
||||
File cliFile ("./cli.grammar");
|
||||
Grammar cliGrammar;
|
||||
cliGrammar.loadFromFile (cliFile);
|
||||
std::cout << cliGrammar.dump ();
|
||||
|
||||
// Instantiate the parser.
|
||||
LR0 lr0;
|
||||
lr0.createParseTables (grammar);
|
||||
std::cout << lr0.dump ();
|
||||
LR0 cliParser;
|
||||
cliParser.createParseTables (cliGrammar);
|
||||
std::cout << cliParser.dump ();
|
||||
|
||||
// TODO Parse CLI.
|
||||
|
||||
// TODO Load rules grammar.
|
||||
// TODO Load rule grammar.
|
||||
File ruleFile ("./rule.grammar");
|
||||
Grammar ruleGrammar;
|
||||
ruleGrammar.loadFromFile (ruleFile);
|
||||
std::cout << ruleGrammar.dump ();
|
||||
|
||||
// Instantiate the parser.
|
||||
LR0 ruleParser;
|
||||
ruleParser.createParseTables (ruleGrammar);
|
||||
std::cout << ruleParser.dump ();
|
||||
|
||||
// TODO Load rules.
|
||||
// TODO Parse rules.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue