2016-03-25 2 views
2

Я пробовал пару. И есть только несколько учебных пособий в Google для re2c + lemon.
В настоящее время для всех примеров я получаю подобную кучу ошибок, как:Есть ли хороший рабочий учебник по re2c + lemon?

In file included from main.cpp:2:0: 
parser.y:44:5: error: ‘yygotominor’ was not declared in this scope 
    A.int_value = B.int_value * C.int_value; 
    ^
In file included from main.cpp:2:0: 
parser.c:770:16: error: ‘YY_MAX_SHIFTREDUCE’ was not declared in this scope 
    if(yyact <= YY_MAX_SHIFTREDUCE){ 
       ^
parser.c:771:15: error: ‘YY_MAX_SHIFT’ was not declared in this scope 
    if(yyact>YY_MAX_SHIFT) yyact += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; 
      ^

Где он объявлен?

PS: не отправляйте 10-летние статьи (даже без кода или код не может быть скомпилирован сейчас). Если вы можете - напишите пример здесь. Если нет - не размещайте ссылки из Google.

+0

Мои точные ошибки были вызваны неправильным порядком #include – Sergey

ответ

3

Это руководство работает для меня:

  1. Get re2c (см re2c установить страницу для получения более подробной http://re2c.org/install/install.html).

  2. Get лимон: скачать тарбол wget http://prdownloads.sourceforge.net/souptonuts/lemon_examples.tar.gz, экстракт и строить (я должен был добавить #include <stdlib.h> многие примеры для malloc).

  3. Clone GitHub репо https://github.com/tokuhirom/re2c-lemon-tutorial: git clone https://github.com/tokuhirom/re2c-lemon-tutorial.git

  4. Patch re2c-лимонно-учебник/Makefile, чтобы найти лимон и re2c (при необходимости).

  5. make, ./mycalc и наслаждайтесь (нажмите Ctrl+D, чтобы остановить и испустить результат).

Другие примеры re2c на сайте re2c: http://re2c.org, больше примеров лимона внутри лимона тарболла.

+0

Ни одна из этих ссылок не содержит небольшой рабочий пример использования re2c + lemon, который можно даже скомпилировать (даже это дерьмо с 2008 года). И вы знаете, что .. удивить ... Я не хочу заглядывать в систему САПР, чтобы узнать, как правильно скомпилировать CALC. Вы много помогли. – Sergey

+0

Я обновил ответ (на этот раз я проверил его работу). :) – skvadrik