现在的位置: 首页 > 综合 > 正文

JFLEX–词法分析器用户手册

2013年01月12日 ⁄ 综合 ⁄ 共 3025字 ⁄ 字号 评论关闭



The Fast
Lexical Analyser Generator

Copyright
c 1998–2009 by
Gerwin
Klein

JFlex
User’s Manual

Version
1.4.3, January 31, 2009

翻译了1-5章节 又需要可以在这里下载

Contents

1
Introduction
3

1.1 Design
goals
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 About
this manual
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 3

2
Installing and Running JFlex
4

2.1
Installing JFlex
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.1.1 Windows
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 4

2.1.2 Unix
with tar archive
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . 4

2.1.3 Linux
with RPM
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 5

2.2 Running JFlex
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 5

3 A
simple Example: How to work with JFlex
6

3.1 Code to
include
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2 Options
and Macros
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 9

3.3 Rules and
Actions
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 11

3.4 How to
get it going
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 12

4
Lexical Specifications
12

4.1 User code
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 13

4.2 Options
and declarations
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 13

4.2.1 Class
options and user class code
.
. . . . . . . . . . . . . . . . . . . . . 13

4.2.2
Scanning method
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 15

4.2.3 The end
of file
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 16

4.2.4
Standalone scanners
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 17

4.2.5 CUP
compatibility
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 18

4.2.6 BYacc/J
compatibility
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . 18

4.2.7 Code
generation
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 19

4.2.8
Character sets
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.2.9 Line,
character and column counting
.
. . . . . . . . . . . . . . . . . . . 20

1

4.2.10
Obsolete JLex options
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.2.11 State
declarations
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 21

4.2.12 Macro
definitions
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 22

4.3 Lexical
rules
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.3.1 Syntax . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 22

4.3.2
Semantics
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.3.3 How the
input is matched
. . . . . .
. . . . . . . . . . . . . . . . . . . . 27

4.3.4 The
generated class
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 28

4.3.5 Scanner
methods and fields accessible in actions (API)
. . . . . . . . . . 29

5
Encodings, Platforms, and Unicode
31

5.1 The
Problem
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5.2 Scanning
text files
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 31

5.3 Scanning
binaries
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 32

6 A few
words on performance
33

6.1
Comparison of JLex and JFlex
.
. . . . . . . . . . . . . . . . . . . . . . . . . . 33

6.2 How to
write a faster specification
.
. . . . . . . . . . . . . . . . . . . . . . . . 35

7
Porting Issues
37

7.1 Porting
from JLex
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 37

7.2 Porting
from lex/flex
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 38

7.2.1 Basic
structure
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . 38

7.2.2 Macros
and Regular Expression Syntax
.
. . . . . . . . . . . . . . . . . 38

7.2.3 Lexical
Rules
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 39

8
Working together
39

8.1 JFlex and
CUP
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 39

8.1.1 CUP
version 0.10j and above
.
. . . . . . . . . . . . . . . . . . . . . . . 39

8.1.2 Custom
symbol interface
. . . . . .
. . . . . . . . . . . . . . . . . . . . . 40

8.1.3 Using
existing JFlex/CUP specifications with CUP 0.10j
. . . . . . . . . 40

8.1.4 Using
older versions of CUP
.
. . . . . . . . . . . . . . . . . . . . . . . . 41

8.2 JFlex and
BYacc/J
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 43

9 Bugs
and Deficiencies
45

9.1
Deficiencies
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

9.2 Bugs . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 46

10
Copying and License
46

 


 

抱歉!评论已关闭.