Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
ksheminskiy
2 / 2 / 0
Регистрация: 03.03.2011
Сообщений: 31
#1

yacc - C (СИ)

11.12.2012, 17:35. Просмотров 285. Ответов 0
Метки нет (Все метки)

здравствуйте, при написание программы yacc столкнулся с такой проблемой, суть задачи постоит в том, чтоб написать простой калькулятор с функцией расчета квадрата числа, для целых значений работает, а для чисел с точкой (например 2.5) не работает помогите, вот код
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
%{
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define YYSTYPE float
%}
 
 
 
%token NAME
%left '+' '-'
%left '*' '/'
 
 
 
%%
s : e { printf( "%lf\n", $1 ); }
e : e '+' e     { $$ = $1 + $3; }
 | e '-' e      { $$ = $1 - $3; }
 | e '*' e      { $$ = $1 * $3; }
 | e '/' e      { $$ = $1 / $3; }
 | '(' e ')'        { $$ = $2;  }
 | 'K''V''('e')'    { $$ = pow(double($4),2);}
 | NAME ;
%%
#include <stdio.h>
#include <ctype.h>
int yylex() {
    register int c, v;
    while ((c = getchar()) == ' ');
    if (isdigit(c)) { 
        for( v=c-'0'; isdigit( c=getchar() ); ) 
            v=v*10+c-'0';
        ungetc( c, stdin );  
        yylval = v;
        return( NAME );
    } 
    else 
        if( c=='\n' ) 
        { 
            return( 0 );
        } 
        else 
        {
            yylval = c;
            return( yylval=c );
        }
}
int main() 
{ 
    for(;;) yyparse(); 
    return 0; 
}
int yyerror(const char *mes) 
{ 
    printf( "%s\n", mes ); 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2012, 17:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос yacc (C (СИ)):

Yacc и fltk в комплексе - C (СИ)
Добрый день! У меня вопрос. Я скомпилировал yacc. Я сделал оболочку калькулятора на fltk. Как мне соединить эти две вещи для...

Yacc - Lazarus
Даже не знаю, в какой теме об этом написать.. Пытаюсь разобраться в этом генераторе синтаксических анализаторов Yacc. Кто знает,...

Lex и Yacc - C++
Привет всем!=) может кто-нибудь кинуть литературу по Lex и Yacc, уж очень надо=) заранее благодарен=)

Lex и YACC - C++ Linux
Здравствуйте дорогие форумчане! Есть специалисты, разбирающиеся в LEX и YACC? Нужна ваша помощь в ЛС. Спасибо!!

Lex и Yacc - C++ Linux
Дано задание: Транслятор произвольных логических выражений в ДНФ Разработать язык описания логических выражений , позволяющий : ...

Применение yacc - Visual C++
Здрасьте!! Проблема состоит в следующем: у меня есть парсер написаный на yacc, который парсит строку, в которой математическое выражение,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2012, 17:35
Привет! Вот еще темы с ответами:

Bison/Yacc. Компиляция. - C Linux
Здравтсвуйте. в серии статей на хабре Компиляция. был написан компилятор для подмножества языка JavaScript....

Простейший калькулятор на YACC - C++
Добрый вечер при написании калькулятора возникла затрудненость: Надо в калькулятор добавить &quot;знак&quot; остаток от деления. C приложеным...

Flex/yacc анализаторы - C++ Qt
Суть проста: надо подключить связку этих анализаторов к qt проекту. На сколько я понимаю надо просто прописать пути к либам и инклюдам в...

Lex&Yacc + iOS - Программирование iOS
Привет, у меня небольшой вопрос, не особо надеюсь что ктото поможеть, но все же https://github.com/MaxPatsy/iORC мой проект на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru