Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [lex] Простейший пример с обр. комментариев 
V
    Опции темы
Ak47black
  Дата 28.9.2010, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Здравствуйте.
Пытаюсь сделать простейший пример обработки комментариев.
Пример языка который хочу обрабатывать
Цитата

`D:\DOCUME~1\Administrator\APPLIC~1\MICROS~1\CDPLAY~1\DeluxeCD`

Хочу просто получить текст без кавычек. 
Код lex
Код

%START FILE

%%
   `  {printf("Imia faila: ");
       BEGIN FILE;
      }

   <FILE>[^`]`          ECHO;
   <FILE>` {            ECHO;
                        printf("0);}
%%


int yywrap(void) {
    return 1;
}



int main(int argc, char *argv[]) { 
    if (argc!=2){
    printf("vvedite: %s infile\n",argv[0]);
    return 0;
    }
    
    yyin = fopen(argv[1], "r");
    
    if (yyin != NULL) {    
        yylex();
        return 1;
    }
    else{
    printf("nepolucilos otkrit fail\n");
    return 0;
    }
    fclose(yyin);
}

Пробую
Цитата

lex test.lex

не получаю ошибок
Но при 
Цитата

gcc lex.yy.c -o test

вижу
Цитата

test.lex: In function 'yylex':
test.lex:4:4: error: stray '`' in program
test.lex:8:4: error: expected expression before '<' token
test.lex:8:4: error: stray '`' in program
test.lex:8:4: error: stray '`' in program
test.lex:9:4: error: expected expression before '<' token
test.lex:9:4: error: stray '`' in program
test.lex:10:32: warning: missing terminating " character
test.lex:10:25: error: missing terminating " character
test.lex:37:1: error: expected declaration or statement at end of input

Подскажите пожалуйста как правильно сделать?
PM MAIL   Вверх
smoke_man
Дата 29.9.2010, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 2
Всего: 17



Посмотри пример. 

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  lex_bison.tar.gz 0,56 Kb


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
Ak47black
Дата 30.9.2010, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Спасибо за пример
Но хотел-бы ещё очень узнать как сделать это всё с использованием условий.
Тоесть что-то на подобии как тут http://lib.misto.kiev.ua/MAN/DEMOS210/lex.txt на стр. 13
Взгляните пожалуйста, буду очень рад если кто-то подскажет  smile 

Это сообщение отредактировал(а) Ak47black - 30.9.2010, 10:11
PM MAIL   Вверх
smoke_man
Дата 30.9.2010, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 2
Всего: 17



Попробуй так:
Код

%{
#include <stdio.h>
%}
%START COMMENT

COMMENT_END "'"
WORD [A-Za-z]

%%
"'"  {BEGIN COMMENT;}
<COMMENT>[^'] {ECHO;}
<COMMENT>[$'] {ECHO; BEGIN 0;};
%%


Это сообщение отредактировал(а) smoke_man - 30.9.2010, 11:16


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
Ak47black
Дата 30.9.2010, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Чуть чуть подправил,
Вот так получалось
Код

%{
#include <stdio.h>
%}
%START COMMENT
COMMENT_END "'"
WORD [A-Za-z]
%%
"`"  {BEGIN COMMENT;}
<COMMENT>[^`] {ECHO;}
<COMMENT>[^`]` {BEGIN 0;};
%%

Спасибо 
Понял наконецто smile

Это сообщение отредактировал(а) Ak47black - 30.9.2010, 13:01
PM MAIL   Вверх
smoke_man
Дата 30.9.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 2
Всего: 17



Не за что!


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Добро пожаловать в раздел "Другие языки" форума Vingrad!

Void
Void

Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)

  • Обязательно следуйте правилам Форума.
  • Пожалуйста, прочитайте и следуйте рекомендациям по работе в разделе и навигации по Форуму.
  • Для вставки текстов исходных кодов используйте подсветку синтаксиса из выплывающего списка Код в форме ответа. Если Ваш язык в списке не представлен, то используйте тег: [code=ваш_язык]код[/code], например, [code=ada]код[/code]. Если в будущем подсветка синтаксиса для указанного языка будет реализована, исходный код преобразится.
  • Помните, один вопрос - одна тема.

Приятного времяпрепровождения! С уважением, Void, kemiisto .

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие языки | Следующая тема »


 




[ Время генерации скрипта: 0.0832 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.