Adjusted comment_parser to new flex/bison build setup
This commit is contained in:
parent
7f4e9a12f2
commit
af8b287e94
3 changed files with 19 additions and 40 deletions
35
openscad.pro
35
openscad.pro
|
|
@ -208,8 +208,8 @@ FORMS += src/MainWindow.ui \
|
|||
src/parameter/ParameterEntryWidget.ui
|
||||
|
||||
# AST nodes
|
||||
FLEXSOURCES = src/lexer.l
|
||||
BISONSOURCES = src/parser.y
|
||||
FLEXSOURCES += src/lexer.l
|
||||
BISONSOURCES += src/parser.y
|
||||
|
||||
HEADERS += src/AST.h \
|
||||
src/ModuleInstantiation.h \
|
||||
|
|
@ -230,35 +230,8 @@ SOURCES += src/AST.cc \
|
|||
src/assignment.cc
|
||||
|
||||
# Comment parser
|
||||
FLEX = src/comment_lexer.l
|
||||
BISON = src/comment_parser.y
|
||||
|
||||
flexs.name = Flex ${QMAKE_FILE_IN}
|
||||
flexs.input = FLEX
|
||||
flexs.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}.cpp
|
||||
flexs.commands = flex -o${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}.cpp ${QMAKE_FILE_IN}
|
||||
flexs.CONFIG += target_predeps
|
||||
flexs.variable_out = GENERATED_SOURCES
|
||||
silent:flexs.commands = @echo Lex ${QMAKE_FILE_IN} && $$flexs.commands
|
||||
QMAKE_EXTRA_COMPILERS += flexs
|
||||
|
||||
bison.name = Bison ${QMAKE_FILE_IN}
|
||||
biso.input = BISON
|
||||
biso.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}.cpp
|
||||
biso.commands = bison -d -o ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}.cpp ${QMAKE_FILE_IN}
|
||||
biso.commands += && if [[ -e ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}_yacc.hpp ]] ; then mv ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.hpp ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.h ; fi
|
||||
biso.CONFIG += target_predeps
|
||||
biso.variable_out = GENERATED_SOURCES
|
||||
silent:biso.commands = @echo Bison ${QMAKE_FILE_IN} && $$biso.commands
|
||||
QMAKE_EXTRA_COMPILERS += biso
|
||||
|
||||
biso_header.input = BISON
|
||||
biso_header.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}.h
|
||||
biso_header.commands = bison -d -o ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}.cpp ${QMAKE_FILE_IN}
|
||||
biso_header.commands += && if [ -e ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}.hpp ]; then mv ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}.hpp ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}.h ; fi
|
||||
biso_header.CONFIG += target_predeps no_link
|
||||
silent:biso_header.commands = @echo Bison ${QMAKE_FILE_IN} && $$biso.commands
|
||||
QMAKE_EXTRA_COMPILERS += biso_header
|
||||
FLEXSOURCES += src/comment_lexer.l
|
||||
BISONSOURCES += src/comment_parser.y
|
||||
|
||||
HEADERS += src/version_check.h \
|
||||
src/ProgressWidget.h \
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
#include "Assignment.h"
|
||||
#include "expression.h"
|
||||
#include "value.h"
|
||||
#include "comment_parser.h"
|
||||
#include "comment_parser.hxx"
|
||||
#include <boost/lexical_cast.hpp>
|
||||
YY_BUFFER_STATE yy_scan_string ( const char *str ) ;
|
||||
std::string stringcon;
|
||||
|
|
@ -26,7 +26,7 @@ UNICODE {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
|
|||
[+-]?{D}*\.{D}+{E}? |
|
||||
[+-]?{D}+\.{D}*{E}? {
|
||||
try {
|
||||
yylval.num = boost::lexical_cast<double>(yytext);
|
||||
comment_parserlval.num = boost::lexical_cast<double>(yytext);
|
||||
return NUM;
|
||||
} catch (boost::bad_lexical_cast) {}
|
||||
}
|
||||
|
|
@ -48,15 +48,15 @@ UNICODE {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
|
|||
{UNICODE} { stringcon += yytext; }
|
||||
[^\\\n\"] { stringcon += yytext; }
|
||||
\" { BEGIN(INITIAL);
|
||||
yylval.text = strdup(stringcon.c_str());
|
||||
comment_parserlval.text = strdup(stringcon.c_str());
|
||||
return WORD; }
|
||||
<<EOF>> { BEGIN(INITIAL);
|
||||
yylval.text = strdup(stringcon.c_str());
|
||||
comment_parserlval.text = strdup(stringcon.c_str());
|
||||
return WORD; }
|
||||
}
|
||||
|
||||
|
||||
[^(\[ \] \, \" \:)]* { yylval.text=strdup(yytext); return WORD;}
|
||||
[^(\[ \] \, \" \:)]* { comment_parserlval.text=strdup(yytext); return WORD;}
|
||||
|
||||
. { }
|
||||
|
||||
|
|
|
|||
|
|
@ -7,8 +7,9 @@
|
|||
#include "value.h"
|
||||
#include "comment.h"
|
||||
void yyerror(char *);
|
||||
int yylex(void);
|
||||
extern void yy_scan_string ( const char *str );
|
||||
int comment_lexerlex(void);
|
||||
int comment_parserlex(void);
|
||||
extern void comment_lexer_scan_string ( const char *str );
|
||||
Expression *params;
|
||||
%}
|
||||
%union {
|
||||
|
|
@ -121,6 +122,11 @@ word:
|
|||
}
|
||||
%%
|
||||
|
||||
int comment_parserlex(void)
|
||||
{
|
||||
return comment_lexerlex();
|
||||
}
|
||||
|
||||
void yyerror(char *msg) {
|
||||
PRINTD("ERROR IN PARAMETER: Parser error in comments of file \n ");
|
||||
params = NULL;
|
||||
|
|
@ -128,8 +134,8 @@ void yyerror(char *msg) {
|
|||
|
||||
shared_ptr<Expression> CommentParser::parser(const char *text)
|
||||
{
|
||||
yy_scan_string(text);
|
||||
int parserretval = yyparse();
|
||||
comment_lexer_scan_string(text);
|
||||
int parserretval = comment_parserparse();
|
||||
if (parserretval != 0) return NULL;
|
||||
return shared_ptr<Expression>(params);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue