]> git.saurik.com Git - cycript.git/commitdiff
I hate the Bison 2.3/2.4 split.
authorJay Freeman (saurik) <saurik@saurik.com>
Thu, 26 Nov 2009 07:55:42 +0000 (07:55 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Thu, 26 Nov 2009 07:55:42 +0000 (07:55 +0000)
Cycript.yy.in
Filter.sh
makefile

index ece104fd8ce5a669491b900cb7eaecbc0718abfa..46cbd686b376d44d758d030505882e0cd096216d 100644 (file)
 */
 /* }}} */
 
 */
 /* }}} */
 
-%{
+@if Bison23 %{
+
+@if Bison24 %code top {
 #define cyscanner driver.scanner_
 #define YYSTACKEXPANDABLE 1
 #define yyerrok (yyerrstatus_ = 0)
 #define cyscanner driver.scanner_
 #define YYSTACKEXPANDABLE 1
 #define yyerrok (yyerrstatus_ = 0)
-%}
+@if Bison24 }
 
 
-%{
+@if Bison24 %code requires {
 #include "Parser.hpp"
 
 @begin ObjectiveC
 #include "Parser.hpp"
 
 @begin ObjectiveC
@@ -112,22 +114,24 @@ typedef struct {
 } YYSTYPE;
 
 #define YYSTYPE YYSTYPE
 } YYSTYPE;
 
 #define YYSTYPE YYSTYPE
+@if Bison24 }
 
 
-%}
-
-%{
+@if Bison24 %code provides {
 int cylex(YYSTYPE *, cy::location *, void *);
 int cylex(YYSTYPE *, cy::location *, void *);
-%}
+@if Bison24 }
+
+@if Bison23 %}
 
 %name-prefix="cy"
 
 
 %name-prefix="cy"
 
-%skeleton "lalr1.cc"
-%locations
+@if Bison23 %skeleton "lalr1.cc"
+@if Bison24 %language "C++"
 
 %initial-action {
     @$.begin.filename = @$.end.filename = &driver.filename_;
 };
 
 
 %initial-action {
     @$.begin.filename = @$.end.filename = &driver.filename_;
 };
 
+%locations
 %defines
 
 //%glr-parser
 %defines
 
 //%glr-parser
index 7135d28414c0362a08a405ccc5034f9f6827b93a..bb76b0ad81711373c6d193ef97ee19ba9e478679 100755 (executable)
--- a/Filter.sh
+++ b/Filter.sh
@@ -3,7 +3,14 @@
 filters=("$@")
 
 while IFS= read -r line; do
 filters=("$@")
 
 while IFS= read -r line; do
-    if [[ ${line} = @begin* ]]; then
+    if [[ ${line} = @if* ]]; then
+        line=${line#@if }
+        for name in "${filters[@]}"; do
+            if [[ ${line} = ${name}' '* ]]; then
+                echo "${line#${name} }"
+            fi
+        done
+    elif [[ ${line} = @begin* ]]; then
         set ${line}; shift
         filter=
         for name in "${filters[@]}"; do
         set ${line}; shift
         filter=
         for name in "${filters[@]}"; do
index 3100f0a1764b154992b3df89f083daf330e6df52..61768dd52b0f2c4fc3b82e2ffcdd64c874608ec0 100644 (file)
--- a/makefile
+++ b/makefile
@@ -64,6 +64,8 @@ flags += -I. -Iinclude -I$(shell apr-1-config --includedir)
 
 all += $(lib)cycript.$(dll)
 
 
 all += $(lib)cycript.$(dll)
 
+filters += $(shell bison <(echo '%code{}%%_:') -o/dev/null 2>/dev/null && echo Bison24 || echo Bison23)
+
 ifdef arch
 deb := $(shell grep ^Package: control.in | cut -d ' ' -f 2-)_$(shell grep ^Version: control.in | cut -d ' ' -f 2 | sed -e 's/\#/$(svn)/')_$(arch).deb
 
 ifdef arch
 deb := $(shell grep ^Package: control.in | cut -d ' ' -f 2-)_$(shell grep ^Version: control.in | cut -d ' ' -f 2 | sed -e 's/\#/$(svn)/')_$(arch).deb