LINUX.ORG.RU

История изменений

Исправление beastie, (текущая версия) :

--- lor16.y.orig        2015-04-16 15:06:06.539588662 +0200
+++ lor16.y     2015-04-16 15:06:47.411605710 +0200
@@ -1,6 +1,9 @@
 %{
 #include <ctype.h>
 #include <stdio.h>
+
+void yyerror(const char *);
+int yylex(void);
 %}
 
 %union {
@@ -32,8 +35,8 @@
        ;
 %%
 
-int
-yyerror(char *s) 
+void
+yyerror(const char *s) 
 {
        fprintf(stderr, "Error: %s\n", s);
 }
@@ -51,7 +54,7 @@
 
        if (isdigit(c)) {
                ungetc(c, stdin);
-               scanf("%li", &yylval.i);
+               scanf("%i", &yylval.i);
                return NUMBER;
        }
 
@@ -62,4 +65,5 @@
 main ()
 {
        yyparse();
+       return 0;
 }

Пирожком тут и не пахнет, но спасибо за попытку.

Не отлынивай. Я тебе и так уже 99% твоей работы выполнил. ;) А ты даже домашнее задание, по причёсыванию кода сделать не хочешь.

Исходная версия beastie, :

--- lor16.y.orig        2015-04-16 15:06:06.539588662 +0200
+++ lor16.y     2015-04-16 15:06:47.411605710 +0200
@@ -1,6 +1,9 @@
 %{
 #include <ctype.h>
 #include <stdio.h>
+
+void yyerror(const char *);
+int yylex(void);
 %}
 
 %union {
@@ -32,8 +35,8 @@
        ;
 %%
 
-int
-yyerror(char *s) 
+void
+yyerror(const char *s) 
 {
        fprintf(stderr, "Error: %s\n", s);
 }
@@ -51,7 +54,7 @@
 
        if (isdigit(c)) {
                ungetc(c, stdin);
-               scanf("%li", &yylval.i);
+               scanf("%i", &yylval.i);
                return NUMBER;
        }
 
@@ -62,4 +65,5 @@
 main ()
 {
        yyparse();
+       return 0;
 }