]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/lexer.l
merged in the commit from the 2.2 branch
[wxWidgets.git] / src / common / lexer.l
index 02e95f54a94a778e83934dd487554f34a292398f..8f8a1cdd9b7a7f34c013a7e420603dbe13300888 100644 (file)
@@ -12,6 +12,7 @@ WORDCHAR      [^'\\]
  *               either lex and flex.
  */
 #include <string.h>
  *               either lex and flex.
  */
 #include <string.h>
+#include <unistd.h>
 
 /* +++steve162e: added, otherwise, PROIO_input will be undefined (at least under LINUX)
              please check, if this is also TRUE under other UNIXes.
 
 /* +++steve162e: added, otherwise, PROIO_input will be undefined (at least under LINUX)
              please check, if this is also TRUE under other UNIXes.
@@ -24,9 +25,6 @@ WORDCHAR      [^'\\]
 
 #include "wx/expr.h"
 
 
 #include "wx/expr.h"
 
-#ifdef wx_x
-extern char *malloc();
-#endif
 #define Return(x) return x;
 
 #if defined(VMS) && !defined(strdup)
 #define Return(x) return x;
 
 #if defined(VMS) && !defined(strdup)
@@ -39,10 +37,9 @@ static size_t lex_string_ptr = 0;
 static int lex_read_from_string = 0;
 
 static int my_input(void);
 static int lex_read_from_string = 0;
 
 static int my_input(void);
-static int my_unput(char);
 
 #ifdef FLEX_SCANNER
 
 #ifdef FLEX_SCANNER
-#undef YY_INPUT
+# undef YY_INPUT
 # define YY_INPUT(buf,result,max_size) \
    if (lex_read_from_string) \
    {  int c = my_input(); result = (c == 0) ? YY_NULL : ((buf)[0]=(c), 1); } \
 # define YY_INPUT(buf,result,max_size) \
    if (lex_read_from_string) \
    {  int c = my_input(); result = (c == 0) ? YY_NULL : ((buf)[0]=(c), 1); } \
@@ -52,6 +49,7 @@ static int my_unput(char);
 #else
 # undef unput
 # define unput(_c) my_unput(_c)
 #else
 # undef unput
 # define unput(_c) my_unput(_c)
+  static int my_unput(char);
 #endif
 
 %}
 #endif
 
 %}
@@ -66,7 +64,7 @@ static int my_unput(char);
 
 "'"{WORDCHAR}*"'"                {int len = strlen(yytext);
                                    yytext[len-1] = 0;
 
 "'"{WORDCHAR}*"'"                {int len = strlen(yytext);
                                    yytext[len-1] = 0;
-                                   yylval.s = strdup(yytext+1); 
+                                   yylval.s = strdup(yytext+1);
                                    Return(WORD);}
 
 \"({STRINGCHAR}|\\\"|\|\\\\|\\)*\"  {yylval.s = strdup(yytext); Return(STRING);}
                                    Return(WORD);}
 
 \"({STRINGCHAR}|\\\"|\|\\\\|\\)*\"  {yylval.s = strdup(yytext); Return(STRING);}
@@ -120,15 +118,12 @@ static int lex_input() {
 static int lex_input() {
   return input();
 }
 static int lex_input() {
   return input();
 }
-/* # undef unput
-# define unput(_c) my_unput(_c)
-*/
 
 # undef input
 # define input() my_input()
 static int my_unput(char c)
 {
 
 # undef input
 # define input() my_input()
 static int my_unput(char c)
 {
-  if (lex_read_from_string) {
+  if (lex_read_from_string != 0) {
     /* Make sure we have something */
     if (lex_string_ptr) {
       if (c == '\n') yylineno--;
     /* Make sure we have something */
     if (lex_string_ptr) {
       if (c == '\n') yylineno--;
@@ -143,7 +138,7 @@ static int my_unput(char c)
 
 #endif
 
 
 #endif
 
-/* Public */ 
+/* Public */
 void LexFromFile(FILE *fd)
 {
   lex_read_from_string = 0;
 void LexFromFile(FILE *fd)
 {
   lex_read_from_string = 0;
@@ -190,6 +185,8 @@ static int my_input( void )
 
 void wxExprCleanUp()
 {
 
 void wxExprCleanUp()
 {
+#ifdef FLEX_SCANNER
        if (yy_current_buffer)
                yy_delete_buffer(yy_current_buffer);
        if (yy_current_buffer)
                yy_delete_buffer(yy_current_buffer);
+#endif
 }
 }