summaryrefslogtreecommitdiff
path: root/src/lexer.l
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2012-01-09 15:51:38 (GMT)
committerMarius Kintel <marius@kintel.net>2012-01-09 15:51:38 (GMT)
commitc4695872392a6d1415752934be55c81de57de87e (patch)
treee7ed743097103d1c668d8249f55b075f48a5c385 /src/lexer.l
parentd4af7fb04e7ce0ec9656aebbb7d3b2933dbc8bf2 (diff)
Windows compile fix: Convert away from wchar. prefix conditions with cond_ to not pollute the global namespace with generic symbols
Diffstat (limited to 'src/lexer.l')
-rw-r--r--src/lexer.l54
1 files changed, 27 insertions, 27 deletions
diff --git a/src/lexer.l b/src/lexer.l
index 1b776d3..459f92d 100644
--- a/src/lexer.l
+++ b/src/lexer.l
@@ -34,7 +34,7 @@
#include <boost/foreach.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/filesystem.hpp>
-using namespace boost::filesystem;
+namespace fs = boost::filesystem;
//isatty for visual c++ and mingw-cross-env
#if defined __WIN32__ && ! defined _MSC_VER
@@ -74,8 +74,8 @@ extern const char *parser_source_path;
}
void includefile();
-path sourcepath();
-std::vector<path> path_stack;
+fs::path sourcepath();
+std::vector<fs::path> path_stack;
std::vector<FILE*> openfiles;
std::string filename;
@@ -86,34 +86,34 @@ std::string filepath;
%option yylineno
%option noyywrap
-%x comment string
-%x include
-%x use
+%x cond_comment cond_string
+%x cond_include
+%x cond_use
D [0-9]
E [Ee][+-]?{D}+
%%
-include[ \t\r\n>]*"<" { BEGIN(include); }
-<include>{
+include[ \t\r\n>]*"<" { BEGIN(cond_include); }
+<cond_include>{
[^\t\r\n>]*"/" { filepath = yytext; }
[^\t\r\n>/]+ { filename = yytext; }
">" { BEGIN(INITIAL); includefile(); }
}
-use[ \t\r\n>]*"<" { BEGIN(use); }
-<use>{
+use[ \t\r\n>]*"<" { BEGIN(cond_use); }
+<cond_use>{
[^\t\r\n>]+ { filename = yytext; }
">" {
BEGIN(INITIAL);
- path usepath = path(parser_source_path) / filename;
- if (!exists(usepath)) {
- usepath = librarydir / filename;
+ fs::path usepath = fs::path(parser_source_path) / filename;
+ if (!fs::exists(usepath)) {
+ usepath = fs::path(librarydir) / filename;
}
- handle_dep(absolute(usepath).generic_string());
- parserlval.text = strdup(absolute(usepath).c_str());
+ handle_dep(fs::absolute(usepath).string());
+ parserlval.text = strdup(fs::absolute(usepath).string().c_str());
return TOK_USE;
}
}
@@ -144,8 +144,8 @@ use[ \t\r\n>]*"<" { BEGIN(use); }
{D}+\.{D}*{E}? { parserlval.number = boost::lexical_cast<double>(yytext); return TOK_NUMBER; }
"$"?[a-zA-Z0-9_]+ { parserlval.text = strdup(yytext); return TOK_ID; }
-\" { BEGIN(string); stringcontents.clear(); }
-<string>{
+\" { BEGIN(cond_string); stringcontents.clear(); }
+<cond_string>{
\\n { stringcontents += '\n'; }
\\t { stringcontents += '\t'; }
\\r { stringcontents += '\r'; }
@@ -159,9 +159,9 @@ use[ \t\r\n>]*"<" { BEGIN(use); }
[\n\r\t ]
\/\/[^\n]*\n?
-"/*" BEGIN(comment);
-<comment>"*/" BEGIN(INITIAL);
-<comment>.|\n
+"/*" BEGIN(cond_comment);
+<cond_comment>"*/" BEGIN(INITIAL);
+<cond_comment>.|\n
"<=" return LE;
">=" return GE;
@@ -174,11 +174,11 @@ use[ \t\r\n>]*"<" { BEGIN(use); }
%%
-path sourcepath()
+fs::path sourcepath()
{
if (!path_stack.empty()) return path_stack.back();
- return path(parser_source_path);
+ return fs::path(parser_source_path);
}
/*
@@ -190,21 +190,21 @@ void includefile()
{
if (filename.empty()) return;
- path dirinfo = sourcepath();
+ fs::path dirinfo = sourcepath();
if (!filepath.empty()) {
dirinfo /= filepath;
}
- path finfo = dirinfo / filename;
+ fs::path finfo = dirinfo / filename;
if (!exists(finfo)) {
- finfo = librarydir / filepath / filename;
+ finfo = fs::path(librarydir) / filepath / filename;
}
filepath.clear();
path_stack.push_back(dirinfo);
- handle_dep(absolute(finfo).generic_string());
- yyin = fopen(absolute(finfo).c_str(), "r");
+ handle_dep(fs::absolute(finfo).string());
+ yyin = fopen(fs::absolute(finfo).string().c_str(), "r");
if (!yyin) {
PRINTF("WARNING: Can't open input file `%s'.", filename.c_str());
path_stack.pop_back();
contact: Jan Huwald // Impressum