From 24c3cb5207e96c784871fe2c586de9b51163b11e Mon Sep 17 00:00:00 2001 From: Gard Spreemann Date: Tue, 24 Jan 2017 00:53:47 +0100 Subject: Split up patch to fix bison declarations. --- ...empty-square-brackets-for-properties-list.patch | 27 +++ ...rse-the-order-of-the-properties-when-pars.patch | 39 +++ ...flex-and-bison-options-instead-of-defines.patch | 100 ++++++++ ...and-document-bison-decls-in-tikzparser.ym.patch | 98 ++++++++ debian/patches/fix-bison-decls.patch | 269 --------------------- debian/patches/series | 5 +- 6 files changed, 268 insertions(+), 270 deletions(-) create mode 100644 debian/patches/0001-Allow-empty-square-brackets-for-properties-list.patch create mode 100644 debian/patches/0002-Do-not-reverse-the-order-of-the-properties-when-pars.patch create mode 100644 debian/patches/0003-Use-flex-and-bison-options-instead-of-defines.patch create mode 100644 debian/patches/0004-Tidy-up-and-document-bison-decls-in-tikzparser.ym.patch delete mode 100644 debian/patches/fix-bison-decls.patch (limited to 'debian') diff --git a/debian/patches/0001-Allow-empty-square-brackets-for-properties-list.patch b/debian/patches/0001-Allow-empty-square-brackets-for-properties-list.patch new file mode 100644 index 0000000..b37b9d2 --- /dev/null +++ b/debian/patches/0001-Allow-empty-square-brackets-for-properties-list.patch @@ -0,0 +1,27 @@ +From 84df4540333450f9520c58b847bf5c5a54435321 Mon Sep 17 00:00:00 2001 +From: Alex Merry +Date: Mon, 29 Jul 2013 16:11:59 +0100 +Subject: [PATCH 1/4] Allow empty square brackets for properties list + +--- + tikzit/src/common/tikzparser.ym | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/tikzit/src/common/tikzparser.ym b/tikzit/src/common/tikzparser.ym +index 794b06d..5c49ed9 100644 +--- a/tikzit/src/common/tikzparser.ym ++++ b/tikzit/src/common/tikzparser.ym +@@ -123,7 +123,9 @@ tikzcmd: node | edge | boundingbox | ignore; + ignore: "\\begin{pgfonlayer}" DELIMITEDSTRING | "\\end{pgfonlayer}"; + + optproperties: +- "[" properties "]" ++ "[" "]" ++ { $$ = nil; } ++ | "[" properties "]" + { $$ = $2; } + | { $$ = nil; }; + properties: property extraproperties +-- +2.11.0 + diff --git a/debian/patches/0002-Do-not-reverse-the-order-of-the-properties-when-pars.patch b/debian/patches/0002-Do-not-reverse-the-order-of-the-properties-when-pars.patch new file mode 100644 index 0000000..a5e0ab6 --- /dev/null +++ b/debian/patches/0002-Do-not-reverse-the-order-of-the-properties-when-pars.patch @@ -0,0 +1,39 @@ +From 8de27c4c7c9a42a8224e3dfc865b25b184ce1399 Mon Sep 17 00:00:00 2001 +From: Alex Merry +Date: Mon, 29 Jul 2013 16:12:32 +0100 +Subject: [PATCH 2/4] Do not reverse the order of the properties when parsing + +--- + tikzit/src/common/tikzparser.ym | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/tikzit/src/common/tikzparser.ym b/tikzit/src/common/tikzparser.ym +index 5c49ed9..98d25e4 100644 +--- a/tikzit/src/common/tikzparser.ym ++++ b/tikzit/src/common/tikzparser.ym +@@ -128,16 +128,16 @@ optproperties: + | "[" properties "]" + { $$ = $2; } + | { $$ = nil; }; +-properties: property extraproperties ++properties: extraproperties property + { +- [$2 addObject:$1]; +- $$ = $2; ++ [$1 addObject:$2]; ++ $$ = $1; + }; + extraproperties: +- "," property extraproperties ++ extraproperties property "," + { +- [$3 addObject:$2]; +- $$ = $3; ++ [$1 addObject:$2]; ++ $$ = $1; + } + | { $$ = [GraphElementData data]; }; + property: +-- +2.11.0 + diff --git a/debian/patches/0003-Use-flex-and-bison-options-instead-of-defines.patch b/debian/patches/0003-Use-flex-and-bison-options-instead-of-defines.patch new file mode 100644 index 0000000..bce0ce1 --- /dev/null +++ b/debian/patches/0003-Use-flex-and-bison-options-instead-of-defines.patch @@ -0,0 +1,100 @@ +From 456d1a0aa3699833d6db381d3ceec51e48451c17 Mon Sep 17 00:00:00 2001 +From: Alex Merry +Date: Fri, 2 Aug 2013 20:38:45 +0100 +Subject: [PATCH 3/4] Use flex and bison options instead of #defines + +Defining YY_EXTRA_TYPE is not the "proper" way to set that type (a +%option should be used instead), and defining YYLEX_PARAM will no longer +work with bison 3 (%lex-param is the correct thing to use). +--- + tikzit/src/common/TikzGraphAssembler+Parser.h | 3 --- + tikzit/src/common/TikzGraphAssembler.m | 3 +-- + tikzit/src/common/tikzlexer.lm | 1 + + tikzit/src/common/tikzparser.ym | 10 +++++----- + 4 files changed, 7 insertions(+), 10 deletions(-) + +diff --git a/tikzit/src/common/TikzGraphAssembler+Parser.h b/tikzit/src/common/TikzGraphAssembler+Parser.h +index 55fa901..c9391a9 100644 +--- a/tikzit/src/common/TikzGraphAssembler+Parser.h ++++ b/tikzit/src/common/TikzGraphAssembler+Parser.h +@@ -31,9 +31,6 @@ + /** Get a previously-stored node by name */ + - (Node*) nodeWithName:(NSString*)name; + - (void) reportError:(const char *)message atLocation:(YYLTYPE*)yylloc; +-- (void*) scanner; + @end + +-#define YY_EXTRA_TYPE TikzGraphAssembler * +- + // vi:ft=objc:noet:ts=4:sts=4:sw=4 +diff --git a/tikzit/src/common/TikzGraphAssembler.m b/tikzit/src/common/TikzGraphAssembler.m +index 2dd8d50..60b96ee 100644 +--- a/tikzit/src/common/TikzGraphAssembler.m ++++ b/tikzit/src/common/TikzGraphAssembler.m +@@ -58,7 +58,7 @@ + + tikzStr = [t UTF8String]; + yy_scan_string(tikzStr, scanner); +- int result = yyparse(self); ++ int result = yyparse(scanner); + tikzStr = NULL; + + [pool drain]; +@@ -278,7 +278,6 @@ + free (context); + } + } +-- (void*) scanner { return scanner; } + @end + + // vi:ft=objc:ts=4:noet:sts=4:sw=4 +diff --git a/tikzit/src/common/tikzlexer.lm b/tikzit/src/common/tikzlexer.lm +index a0e5968..fe7ab0d 100644 +--- a/tikzit/src/common/tikzlexer.lm ++++ b/tikzit/src/common/tikzlexer.lm +@@ -34,6 +34,7 @@ + %option yylineno + %option noyywrap + %option header-file="common/tikzlexer.h" ++%option extra-type="TikzGraphAssembler *" + + %s props + %s xcoord +diff --git a/tikzit/src/common/tikzparser.ym b/tikzit/src/common/tikzparser.ym +index 98d25e4..6eea833 100644 +--- a/tikzit/src/common/tikzparser.ym ++++ b/tikzit/src/common/tikzparser.ym +@@ -38,7 +38,8 @@ struct noderef { + %defines "common/tikzparser.h" + %pure-parser + %locations +-%parse-param {TikzGraphAssembler *assembler} ++%lex-param {void *scanner} ++%parse-param {void *scanner} + %error-verbose + + %union { +@@ -47,8 +48,7 @@ struct noderef { + GraphElementProperty *prop; + GraphElementData *data; + Node *node; +- struct noderef noderef; +-}; ++ struct noderef noderef; }; + + %{ + #import "TikzGraphAssembler+Parser.h" +@@ -56,8 +56,8 @@ struct noderef { + #import "GraphElementProperty.h" + #import "Node.h" + #import "tikzlexer.h" +-#define YYLEX_PARAM [assembler scanner] +-void yyerror(YYLTYPE *yylloc, TikzGraphAssembler *assembler, const char *str) { ++#define assembler yyget_extra(scanner) ++void yyerror(YYLTYPE *yylloc, void *scanner, const char *str) { + [assembler reportError:str atLocation:yylloc]; + } + %} +-- +2.11.0 + diff --git a/debian/patches/0004-Tidy-up-and-document-bison-decls-in-tikzparser.ym.patch b/debian/patches/0004-Tidy-up-and-document-bison-decls-in-tikzparser.ym.patch new file mode 100644 index 0000000..24de718 --- /dev/null +++ b/debian/patches/0004-Tidy-up-and-document-bison-decls-in-tikzparser.ym.patch @@ -0,0 +1,98 @@ +From 279644fb0b99dfb07ceaf713ca610e043131c6f4 Mon Sep 17 00:00:00 2001 +From: Alex Merry +Date: Fri, 2 Aug 2013 21:24:08 +0100 +Subject: [PATCH 4/4] Tidy up and document bison decls in tikzparser.ym + +--- + tikzit/src/common/tikzparser.ym | 48 ++++++++++++++++++++++++++++------------- + 1 file changed, 33 insertions(+), 15 deletions(-) + +diff --git a/tikzit/src/common/tikzparser.ym b/tikzit/src/common/tikzparser.ym +index 6eea833..9901f79 100644 +--- a/tikzit/src/common/tikzparser.ym ++++ b/tikzit/src/common/tikzparser.ym +@@ -18,11 +18,25 @@ + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +- +-#import "Edge.h" +- + %} + ++%error-verbose ++/* enable maintaining locations for better error messages */ ++%locations ++/* the name of the header file */ ++%defines "common/tikzparser.h" ++/* make it re-entrant (no global variables) */ ++%pure-parser ++/* We use a pure (re-entrant) lexer. This means yylex ++ will take a void* (opaque) type to maintain its state */ ++%lex-param {void *scanner} ++/* Since this parser is also pure, yyparse needs to take ++ that lexer state as an argument */ ++%parse-param {void *scanner} ++ ++/* things required to use the parser (will go in the header); ++ in particular, declarations/imports for types in the %union ++ must go here */ + %code requires { + #import + @class TikzGraphAssembler; +@@ -35,36 +49,40 @@ struct noderef { + }; + } + +-%defines "common/tikzparser.h" +-%pure-parser +-%locations +-%lex-param {void *scanner} +-%parse-param {void *scanner} +-%error-verbose +- ++/* possible data types for semantic values */ + %union { + NSPoint pt; + NSString *nsstr; + GraphElementProperty *prop; + GraphElementData *data; + Node *node; +- struct noderef noderef; }; ++ struct noderef noderef; ++} + +-%{ +-#import "TikzGraphAssembler+Parser.h" ++%code { + #import "GraphElementData.h" + #import "GraphElementProperty.h" + #import "Node.h" ++#import "Edge.h" ++ + #import "tikzlexer.h" ++#import "TikzGraphAssembler+Parser.h" ++/* the assembler (used by this parser) is stored in the lexer ++ state as "extra" data */ + #define assembler yyget_extra(scanner) ++ ++/* pass errors off to the assembler */ + void yyerror(YYLTYPE *yylloc, void *scanner, const char *str) { + [assembler reportError:str atLocation:yylloc]; + } +-%} ++} + ++/* yyloc is set up with first_column = last_column = 1 by default; ++ however, it makes more sense to think of us being "before the ++ start of the line" before we parse anything */ + %initial-action { + yylloc.first_column = yylloc.last_column = 0; +-}; ++} + + + %token BEGIN_TIKZPICTURE_CMD "\\begin{tikzpicture}" +-- +2.11.0 + diff --git a/debian/patches/fix-bison-decls.patch b/debian/patches/fix-bison-decls.patch deleted file mode 100644 index c9cba05..0000000 --- a/debian/patches/fix-bison-decls.patch +++ /dev/null @@ -1,269 +0,0 @@ -Cherry pick four upstream commits to fix bison declarations. - -From 84df4540333450f9520c58b847bf5c5a54435321 Mon Sep 17 00:00:00 2001 -From: Alex Merry -Date: Mon, 29 Jul 2013 16:11:59 +0100 -Subject: [PATCH 1/4] Allow empty square brackets for properties list - ---- - tikzit/src/common/tikzparser.ym | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/tikzit/src/common/tikzparser.ym b/tikzit/src/common/tikzparser.ym -index 794b06d..5c49ed9 100644 ---- a/tikzit/src/common/tikzparser.ym -+++ b/tikzit/src/common/tikzparser.ym -@@ -123,7 +123,9 @@ tikzcmd: node | edge | boundingbox | ignore; - ignore: "\\begin{pgfonlayer}" DELIMITEDSTRING | "\\end{pgfonlayer}"; - - optproperties: -- "[" properties "]" -+ "[" "]" -+ { $$ = nil; } -+ | "[" properties "]" - { $$ = $2; } - | { $$ = nil; }; - properties: property extraproperties --- -2.11.0 - - -From 8de27c4c7c9a42a8224e3dfc865b25b184ce1399 Mon Sep 17 00:00:00 2001 -From: Alex Merry -Date: Mon, 29 Jul 2013 16:12:32 +0100 -Subject: [PATCH 2/4] Do not reverse the order of the properties when parsing - ---- - tikzit/src/common/tikzparser.ym | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/tikzit/src/common/tikzparser.ym b/tikzit/src/common/tikzparser.ym -index 5c49ed9..98d25e4 100644 ---- a/tikzit/src/common/tikzparser.ym -+++ b/tikzit/src/common/tikzparser.ym -@@ -128,16 +128,16 @@ optproperties: - | "[" properties "]" - { $$ = $2; } - | { $$ = nil; }; --properties: property extraproperties -+properties: extraproperties property - { -- [$2 addObject:$1]; -- $$ = $2; -+ [$1 addObject:$2]; -+ $$ = $1; - }; - extraproperties: -- "," property extraproperties -+ extraproperties property "," - { -- [$3 addObject:$2]; -- $$ = $3; -+ [$1 addObject:$2]; -+ $$ = $1; - } - | { $$ = [GraphElementData data]; }; - property: --- -2.11.0 - - -From 456d1a0aa3699833d6db381d3ceec51e48451c17 Mon Sep 17 00:00:00 2001 -From: Alex Merry -Date: Fri, 2 Aug 2013 20:38:45 +0100 -Subject: [PATCH 3/4] Use flex and bison options instead of #defines - -Defining YY_EXTRA_TYPE is not the "proper" way to set that type (a -%option should be used instead), and defining YYLEX_PARAM will no longer -work with bison 3 (%lex-param is the correct thing to use). ---- - tikzit/src/common/TikzGraphAssembler+Parser.h | 3 --- - tikzit/src/common/TikzGraphAssembler.m | 3 +-- - tikzit/src/common/tikzlexer.lm | 1 + - tikzit/src/common/tikzparser.ym | 10 +++++----- - 4 files changed, 7 insertions(+), 10 deletions(-) - -diff --git a/tikzit/src/common/TikzGraphAssembler+Parser.h b/tikzit/src/common/TikzGraphAssembler+Parser.h -index 55fa901..c9391a9 100644 ---- a/tikzit/src/common/TikzGraphAssembler+Parser.h -+++ b/tikzit/src/common/TikzGraphAssembler+Parser.h -@@ -31,9 +31,6 @@ - /** Get a previously-stored node by name */ - - (Node*) nodeWithName:(NSString*)name; - - (void) reportError:(const char *)message atLocation:(YYLTYPE*)yylloc; --- (void*) scanner; - @end - --#define YY_EXTRA_TYPE TikzGraphAssembler * -- - // vi:ft=objc:noet:ts=4:sts=4:sw=4 -diff --git a/tikzit/src/common/TikzGraphAssembler.m b/tikzit/src/common/TikzGraphAssembler.m -index 2dd8d50..60b96ee 100644 ---- a/tikzit/src/common/TikzGraphAssembler.m -+++ b/tikzit/src/common/TikzGraphAssembler.m -@@ -58,7 +58,7 @@ - - tikzStr = [t UTF8String]; - yy_scan_string(tikzStr, scanner); -- int result = yyparse(self); -+ int result = yyparse(scanner); - tikzStr = NULL; - - [pool drain]; -@@ -278,7 +278,6 @@ - free (context); - } - } --- (void*) scanner { return scanner; } - @end - - // vi:ft=objc:ts=4:noet:sts=4:sw=4 -diff --git a/tikzit/src/common/tikzlexer.lm b/tikzit/src/common/tikzlexer.lm -index a0e5968..fe7ab0d 100644 ---- a/tikzit/src/common/tikzlexer.lm -+++ b/tikzit/src/common/tikzlexer.lm -@@ -34,6 +34,7 @@ - %option yylineno - %option noyywrap - %option header-file="common/tikzlexer.h" -+%option extra-type="TikzGraphAssembler *" - - %s props - %s xcoord -diff --git a/tikzit/src/common/tikzparser.ym b/tikzit/src/common/tikzparser.ym -index 98d25e4..6eea833 100644 ---- a/tikzit/src/common/tikzparser.ym -+++ b/tikzit/src/common/tikzparser.ym -@@ -38,7 +38,8 @@ struct noderef { - %defines "common/tikzparser.h" - %pure-parser - %locations --%parse-param {TikzGraphAssembler *assembler} -+%lex-param {void *scanner} -+%parse-param {void *scanner} - %error-verbose - - %union { -@@ -47,8 +48,7 @@ struct noderef { - GraphElementProperty *prop; - GraphElementData *data; - Node *node; -- struct noderef noderef; --}; -+ struct noderef noderef; }; - - %{ - #import "TikzGraphAssembler+Parser.h" -@@ -56,8 +56,8 @@ struct noderef { - #import "GraphElementProperty.h" - #import "Node.h" - #import "tikzlexer.h" --#define YYLEX_PARAM [assembler scanner] --void yyerror(YYLTYPE *yylloc, TikzGraphAssembler *assembler, const char *str) { -+#define assembler yyget_extra(scanner) -+void yyerror(YYLTYPE *yylloc, void *scanner, const char *str) { - [assembler reportError:str atLocation:yylloc]; - } - %} --- -2.11.0 - - -From 279644fb0b99dfb07ceaf713ca610e043131c6f4 Mon Sep 17 00:00:00 2001 -From: Alex Merry -Date: Fri, 2 Aug 2013 21:24:08 +0100 -Subject: [PATCH 4/4] Tidy up and document bison decls in tikzparser.ym - ---- - tikzit/src/common/tikzparser.ym | 48 ++++++++++++++++++++++++++++------------- - 1 file changed, 33 insertions(+), 15 deletions(-) - -diff --git a/tikzit/src/common/tikzparser.ym b/tikzit/src/common/tikzparser.ym -index 6eea833..9901f79 100644 ---- a/tikzit/src/common/tikzparser.ym -+++ b/tikzit/src/common/tikzparser.ym -@@ -18,11 +18,25 @@ - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -- --#import "Edge.h" -- - %} - -+%error-verbose -+/* enable maintaining locations for better error messages */ -+%locations -+/* the name of the header file */ -+%defines "common/tikzparser.h" -+/* make it re-entrant (no global variables) */ -+%pure-parser -+/* We use a pure (re-entrant) lexer. This means yylex -+ will take a void* (opaque) type to maintain its state */ -+%lex-param {void *scanner} -+/* Since this parser is also pure, yyparse needs to take -+ that lexer state as an argument */ -+%parse-param {void *scanner} -+ -+/* things required to use the parser (will go in the header); -+ in particular, declarations/imports for types in the %union -+ must go here */ - %code requires { - #import - @class TikzGraphAssembler; -@@ -35,36 +49,40 @@ struct noderef { - }; - } - --%defines "common/tikzparser.h" --%pure-parser --%locations --%lex-param {void *scanner} --%parse-param {void *scanner} --%error-verbose -- -+/* possible data types for semantic values */ - %union { - NSPoint pt; - NSString *nsstr; - GraphElementProperty *prop; - GraphElementData *data; - Node *node; -- struct noderef noderef; }; -+ struct noderef noderef; -+} - --%{ --#import "TikzGraphAssembler+Parser.h" -+%code { - #import "GraphElementData.h" - #import "GraphElementProperty.h" - #import "Node.h" -+#import "Edge.h" -+ - #import "tikzlexer.h" -+#import "TikzGraphAssembler+Parser.h" -+/* the assembler (used by this parser) is stored in the lexer -+ state as "extra" data */ - #define assembler yyget_extra(scanner) -+ -+/* pass errors off to the assembler */ - void yyerror(YYLTYPE *yylloc, void *scanner, const char *str) { - [assembler reportError:str atLocation:yylloc]; - } --%} -+} - -+/* yyloc is set up with first_column = last_column = 1 by default; -+ however, it makes more sense to think of us being "before the -+ start of the line" before we parse anything */ - %initial-action { - yylloc.first_column = yylloc.last_column = 0; --}; -+} - - - %token BEGIN_TIKZPICTURE_CMD "\\begin{tikzpicture}" --- -2.11.0 - diff --git a/debian/patches/series b/debian/patches/series index 151d227..e86571f 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,4 @@ -fix-bison-decls.patch +0001-Allow-empty-square-brackets-for-properties-list.patch +0002-Do-not-reverse-the-order-of-the-properties-when-pars.patch +0003-Use-flex-and-bison-options-instead-of-defines.patch +0004-Tidy-up-and-document-bison-decls-in-tikzparser.ym.patch -- cgit v1.2.3