Как я использую C++ в гибком проводе и бизоне?

Статические переменные в основном используются для констант.
Здесь вы объявили static и присвоили ему экземпляр SimpleDateFormat.
Либо сделайте DATE_TIME_FORMAT нестатичным, либо присвойте этой переменной постоянную.

Лучше поменяйте его на переменную экземпляра и используйте Sting для этого.
например, public final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss:SSS";

6
задан Vertexwahn 23 December 2015 в 09:58
поделиться

5 ответов

You don't need to do anything with flex or bison to use C++, I have done it many times. You just have to make sure you use g++, not gcc.

Your problems are with the Makefile, not the code.

6
ответ дан 10 December 2019 в 02:53
поделиться
For using flex with C++:
 1: read the flex docs:
 2: use flex -+ -o file.cc parser.ll
 3: In the .ll file:

%option c++
%option yyclass="Your_class_name"
%option batch

 4: In your .hh file, derive Your_class_name from  public yyFlexLexer
 5: you can then use your_class_instance.yylex()
4
ответ дан 10 December 2019 в 02:53
поделиться

Есть некоторые отличия, которые вы можете проверить подробно здесь .

1
ответ дан 10 December 2019 в 02:53
поделиться

Use either a C Compiler or a C++ compiler but not both (till you know what you are upto). You are sure to shoot yourself many times on both your feet otherwise. Mixing gcc and g++ isn't good.

This line is suspect:

lex.yy.o: scan.l parse.tab.h attr.h      # added this ...
gcc -c -o lex.yy.o lex.yy.c

Also, you don't seem to be using CC anywhere, using that'd have made life easier.

Assuming you don't change a single line of the C code, you will possibly hit some errors and quite a few warnings (like deprecated headers etc). You'll have to fix them as well.

0
ответ дан 10 December 2019 в 02:53
поделиться

Если вы делаете парсеры в C ++, я бы рекомендовал взглянуть на Boost Spirit . С ним гораздо приятнее обращаться, чем с bison / yacc.

Из здесь :

Spirit - это объектно-ориентированная среда генератора синтаксического анализатора с рекурсивным спуском, реализованная с использованием методов мета-программирования шаблонов. Шаблоны выражений позволяют нам полностью аппроксимировать синтаксис расширенной формы Backus-Normal (EBNF) в C ++.

-2
ответ дан 10 December 2019 в 02:53
поделиться