-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscanner.h
67 lines (48 loc) · 1.9 KB
/
scanner.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/***********************************************************************\
*
* Contents:
* Systems: all
*
\***********************************************************************/
#ifndef __SCANNER__
#define __SCANNER__
/****************************** Includes *******************************/
/****************** Conditional compilation switches *******************/
/***************************** Constants *******************************/
/***************************** Datatypes *******************************/
/***************************** Variables *******************************/
/***************************** Forwards ********************************/
/****************************** Macros *********************************/
/***************************** Functions *******************************/
/*
Generated Flex class name is yyFlexLexer by default. If we want to use more flex-generated
classes we should name them differently. See scanner.l prefix option.
Unfortunately the implementation relies on this trick with redefining class name
with a preprocessor macro. See GNU Flex manual, "Generating C++ Scanners" section
*/
#if ! defined(yyFlexLexerOnce)
#undef yyFlexLexer
#define yyFlexLexer FSM_FlexLexer // the trick with prefix; no namespace here :(
#include <FlexLexer.h>
#endif
/* Scanner method signature is defined by this macro. Original yylex() returns int.
Sinice Bison 3 uses symbol_type, we must change returned type. We also rename it
to something sane, since you cannot overload return type.
*/
#undef YY_DECL
#define YY_DECL int FSM::Scanner::get_next_token()
namespace FSM
{
class Scanner : public yyFlexLexer
{
public:
virtual int get_next_token();
void setLineNumber(size_t startLineNb, size_t endLineNb);
std::string getFileName();
size_t getLine();
size_t getColumn();
private:
};
} // namespace FSM
#endif // __SCANNER__
/* end of file */