Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2013, 22:33   #1
juliajuliajulia
 
Аватар для juliajuliajulia
 
Регистрация: 02.09.2011
Сообщений: 4
По умолчанию перл грамматика. ошибка в разделении операторов

пожалуйста,помогите,кто шарит в перле...
кто-нибудь видит ошибку??
в разделении операторов друг от друга

Код:
#!/usr/bin/perl

use Parse::RecDescent;
 
 my $grammar = << 'GRAMMAR';
     file: 'program' iden ';' body  /\Z/
     body: 'begin' operator(s) 'end.'
     operator: 'read(' iden ');' | 'write(' iden ');' | iden ':=' iden ld  chislo ';' |
               'for' iden '=' chislo 'to' chislo 'do' operator(s)';'
               'while' min 'do' operator ';'
               'repeat' operator(s) 'until' iden znak chislo
     min:iden znak iden |iden znak chislo | chislo znak iden
     znak: '>'|'<'|'='|'<='|'>='| '<>'
     ld   : '+' | '-' | '/' | '*'
     iden: /\w+/
     chislo: /\d+/
 
 
GRAMMAR
my $p = new Parse::RecDescent( $grammar ) or die "Compile error\n";
 
$my_text="program h;
           begin
              for i=1 to 5 do read(x);
 
              while f < 10 do
                 write (h);
 
              repeat
                 fg := fg + 10 ;
                 read (fg);
              until  fg = 200
 
            end.";
 
          if ( defined $p->file($my_text1) ){
          $my=$p->file($my_text);
          $find=$my->{name_var};
          print "syntax OK\n";
      }else{
           print "Syntax error\n";
      }
я даже уже знаю где ошибка,только исправить для меня-трудность дикая,тк в перле не разбираюсь...(

Код:
operator: 'read(' iden ');' | 'write(' iden ');' | iden ':=' iden ld  chislo ';' |
вот здесь ошибка, слишком много ';' стоит.
надо упростить,вызываая нейм оператор


Код:
operator: nameoperator ';'
фишка в том,чтобы при запуске компилятор не ругался и не выдавал ошибок. тоесть задача в том,чтобы синтаксически правильно описать три цикла. фор, уайл, репит

Последний раз редактировалось juliajuliajulia; 03.02.2013 в 23:04. Причина: добавлю информацию
juliajuliajulia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не понятная ошибка с перегрузкой операторов RaTeN Общие вопросы C/C++ 3 10.03.2012 16:09
Ошибка при перегрузке операторов. bill Общие вопросы C/C++ 1 26.01.2012 21:17
Программа на языке С с использованием условных операторов и операторов цикла. Valentin Pirgach Помощь студентам 0 17.10.2011 20:16
Перегрузка операторов С++. Ошибка в реализации перегрузки Angry_johnny Помощь студентам 0 25.05.2011 15:10
Переход на новую строку при разделении текста (в С) Mr.Merso Помощь студентам 0 22.05.2011 19:23