summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntti-Juhani Kaijanaho <ajk@debian.org>2012-04-21 11:54:51 +0300
committerAntti-Juhani Kaijanaho <ajk@debian.org>2012-04-21 11:54:51 +0300
commita2f4080a78c84a53f9eb77a5f48bd4dea4aa3ab7 (patch)
treed763f1a3946a12ec74184e637a0262bd74d01397
parent4238881cd78726fbcf778b336e174b70872d0a5a (diff)
downloaddctrl-tools-a2f4080a78c84a53f9eb77a5f48bd4dea4aa3ab7.tar.gz
Document the predicate parser's grammar in comments
Signed-off-by: Antti-Juhani Kaijanaho <ajk@debian.org>
-rw-r--r--debian/copyright2
-rw-r--r--grep-dctrl/grep-dctrl.c32
2 files changed, 32 insertions, 2 deletions
diff --git a/debian/copyright b/debian/copyright
index 72bb7f1..2381e3f 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -2,7 +2,7 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: *
Copyright: 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
- 2009, 2010, 2011
+ 2009, 2010, 2011, 2012
Antti-Juhani Kaijanaho
License: GPL-2+
diff --git a/grep-dctrl/grep-dctrl.c b/grep-dctrl/grep-dctrl.c
index 66a0828..f7ebd05 100644
--- a/grep-dctrl/grep-dctrl.c
+++ b/grep-dctrl/grep-dctrl.c
@@ -1,6 +1,6 @@
/* dctrl-tools - Debian control file inspection tools
Copyright © 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2010, 2011
+ 2010, 2011, 2012
Antti-Juhani Kaijanaho
This program is free software; you can redistribute it and/or modify
@@ -502,6 +502,23 @@ static void unexpected(int tok)
static struct predicate * parse_conj(struct arguments * args);
+
+/* prim -> TOK_LP conj TOK_RP
+ prim -> prim'
+
+ prim' -> primtok
+ prim' -> primtok prim'
+ prim' -> TOK_PAT prim''
+ prim' -> TOK_STR prim''
+
+ prim'' ->
+ prim'' -> primtok prim''
+
+ primtok -> TOK_FIELD
+ primtok -> TOK_ERGEX | TOK_REGEX
+ primtok -> TOK_ICASE | TOK_EXACT | TOK_WHOLE
+ primtok -> TOK_EQ | TOK_LT | TOK_LE | TOK_GE | TOK_GT
+*/
static struct predicate * parse_prim(struct arguments * args)
{
if (peek_token(args) == TOK_LP) {
@@ -637,6 +654,9 @@ failmode:
return 0;
}
+/* neg -> TOK_NOT prim
+ neg -> prim
+*/
static struct predicate * parse_neg(struct arguments * args)
{
bool neg = false;
@@ -649,6 +669,9 @@ static struct predicate * parse_neg(struct arguments * args)
return rv;
}
+/* disj -> neg
+ disj -> disj TOK_OR neg
+*/
static struct predicate * parse_disj(struct arguments * args)
{
struct predicate * rv = parse_neg(args);
@@ -660,6 +683,9 @@ static struct predicate * parse_disj(struct arguments * args)
return rv;
}
+/* conj -> disj
+ conj -> conj TOK_AND disj
+*/
static struct predicate * parse_conj(struct arguments * args)
{
struct predicate * rv = parse_disj(args);
@@ -671,6 +697,10 @@ static struct predicate * parse_conj(struct arguments * args)
return rv;
}
+/* predicate -> conj files
+ files ->
+ files -> TOK_STR files
+*/
static void parse_predicate(struct arguments * args)
{
args->toks_pos = 0;