Commit Diff


commit - 9a479d01b991c04bb98e67b646037baba6394b60
commit + 57fe6b841837da908c6d0d71241fb7e15b8231f4
blob - 3a5bd90f68bfd046e33c9c01b38eb55497d04f5b
blob + 3a8a3f8563187e826947f4d44c69c760c34542dd
--- src/parse_query.l
+++ src/parse_query.l
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2018 Sergey Bronnikov
+ * Copyright © 2018-2019 Sergey Bronnikov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,13 +26,6 @@
  *
  */
 
-/*
- * https://github.com/jgarzik/sqlfun/blob/master/sql.l
- * https://github.com/itechbear/SimpleQueryParser/blob/master/lexer.l
- * https://github.com/wclever/NdYaccLexTool/tree/master/progs
- *
- */
-
 %{
 #include <stdio.h>
 #include "parse_query.tab.h"
@@ -44,36 +37,36 @@ extern void yyerror(char *s);
 %option noyywrap
 
 FORMAT			"junit"|"testanything"|"subunit_v1"|"subunit_v2"
-FMT				"fmt"
-SUITE			"suite"
-TEST			"test"
-PASSRATE		"passrate"
-CREATED			"created"
-HOSTNAME		"hostname"
+FMT_KEYWORD		"fmt"
+SUITE_KEYWORD		"suite"
+TEST_KEYWORD		"test"
+PASSRATE_KEYWORD	"passrate"
+CREATED_KEYWORD		"created"
+HOSTNAME_KEYWORD	"hostname"
 HOST			[A-Za-z][A-Za-z0-9\.\-]+
 DIGIT			[0-9]
 SYMBOLS			[A-Za-z0-9_\-]
 
 %%
-">"					return GT;
-"<"					return LT;
-"="					return EQ;
-"<="				return LE;
+"="				return EQ;
+">"				return GT;
 ">="				return GE;
-":"					return COLON;
-{FMT}{1}			return FMT;
-{SUITE}{1}			return SUITE;
-{TEST}{1}			return TEST;
-{HOSTNAME}{1}		return HOSTNAME;
-{CREATED}{1}		return CREATED;
-{PASSRATE}{1}		return PASSRATE;
+"<"				return LT;
+"<="				return LE;
+":"				return COLON;
+{FMT_KEYWORD}{1}		return FMT_KEYWORD;
+{SUITE_KEYWORD}{1}		return SUITE_KEYWORD;
+{TEST_KEYWORD}{1}		return TEST_KEYWORD;
+{HOSTNAME_KEYWORD}{1}		return HOSTNAME_KEYWORD;
+{CREATED_KEYWORD}{1}		return CREATED_KEYWORD;
+{PASSRATE_KEYWORD}{1}		return PASSRATE_KEYWORD;
 {FORMAT}{1}			return FORMAT;
 {DIGIT}{8}			return DATE;
 {DIGIT}+			return NUMBER;
 {HOST}{1}			return HOST;
 {SYMBOLS}+			return NAME;
-\n					return NL;
+\n				return NL;
 [ \t]+				/* skip whitespace */;
-.					{ yyerror("Unrecognized character"); }
+.				{ yyerror("Unrecognized character"); }
 
 %%
blob - 14b76966b8e93ea45f68dee3fa72536c324eb772
blob + 859393e98dbffe5a0f94f07a03fc67045e5758be
--- src/parse_query.y
+++ src/parse_query.y
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2018 Sergey Bronnikov
+ * Copyright © 2018-2019 Sergey Bronnikov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,13 +32,18 @@
     int yylex(void);
 %}
 
-%token GT LT LE GE EQ COLON NL
-%token FMT SUITE TEST HOSTNAME HOST CREATED PASSRATE
-%token FORMAT DATE NAME NUMBER
+%token EQ GT GE LT LE COLON NL
+%token FMT_KEYWORD SUITE_KEYWORD TEST_KEYWORD HOSTNAME_KEYWORD
+%token CREATED_KEYWORD PASSRATE_KEYWORD
+%token HOST FORMAT DATE NAME NUMBER
 
 /*
  * https://github.com/jgarzik/sqlfun/blob/master/sql.y
+ * https://github.com/jgarzik/sqlfun/blob/master/sql.l
+ *
  * https://github.com/itechbear/SimpleQueryParser/blob/master/parser.y
+ * https://github.com/itechbear/SimpleQueryParser/blob/master/lexer.l
+ *
  * https://github.com/wclever/NdYaccLexTool/tree/master/progs
  *
  */
@@ -50,31 +55,31 @@ program		: program expression NL
 		|
 		;
 
-expression	: TEST COLON NAME {
+expression	: TEST_KEYWORD COLON NAME {
 			printf("TEST\n");
 		}
-		| SUITE COLON NAME {
+		| SUITE_KEYWORD COLON NAME {
 			printf("SUITE\n");
 		}
-		| FMT COLON FORMAT {
+		| FMT_KEYWORD COLON FORMAT {
 			printf("FMT\n");
 		}
-		| HOSTNAME COLON HOST {
+		| HOSTNAME_KEYWORD COLON HOST {
 			printf("HOSTNAME\n");
 		}
-		| CREATED compare_op DATE {
+		| CREATED_KEYWORD compare_op DATE {
 			printf("CREATED\n");
 		}
-		| PASSRATE compare_op NUMBER {
+		| PASSRATE_KEYWORD compare_op NUMBER {
 			printf("PASSRATE\n");
 		}
 		;
 
 compare_op	: EQ
 		| GT
+		| GE
 		| LT
 		| LE
-		| GE
 		;
 %%
 
@@ -94,7 +99,6 @@ void yyerror(char *s)
 int main( int argc, char **argv ) {
 
   progname = argv[0];
-
   if (argc > 1)
   {
 	yyin = fopen(argv[1], "r");
@@ -104,9 +108,8 @@ int main( int argc, char **argv ) {
 		return -1;
 	}
   }
-
   yyparse();
+  close(yyin);
 
-  /* close(yyin); */
   return 0;
 }