Исправление 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;
}