Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
cduce
cduce
Commits
b3a28b6b
Commit
b3a28b6b
authored
Oct 05, 2007
by
Pietro Abate
Browse files
[r2003-05-26 20:36:58 by cvscast] toplevel et commentaire pour faire plaisir eppe ;-)
Original author: cvscast Date: 2003-05-26 20:36:58+00:00
parent
e116f3cc
Changes
3
Hide whitespace changes
Inline
Side-by-side
driver/run.ml
View file @
b3a28b6b
...
...
@@ -77,7 +77,8 @@ let toploop () =
Cduce
.
toplevel
:=
true
;
Location
.
push_source
`Stream
;
let
read
i
=
if
!
bol
then
outflush
"> "
;
if
!
bol
then
if
!
Wlexer
.
in_comment
then
outflush
"* "
else
outflush
"> "
;
try
let
c
=
input_char
stdin
in
bol
:=
c
=
'\n'
;
...
...
parser/wlexer.ml
View file @
b3a28b6b
...
...
@@ -76,6 +76,8 @@ let nb_classes = 40
let
keywords
=
Hashtbl
.
create
17
let
in_comment
=
ref
false
let
error
=
Location
.
raise_loc
exception
Illegal_character
of
char
exception
Unterminated_comment
...
...
@@ -203,10 +205,10 @@ let lex_tables = {
let
rec
token
engine
lexbuf
=
match
engine
lex_tables
0
lexbuf
with
0
->
(
#
88
"parser/wlexer.mll"
#
90
"parser/wlexer.mll"
token
engine
lexbuf
)
|
1
->
(
#
9
0
"parser/wlexer.mll"
#
9
2
"parser/wlexer.mll"
let
s
=
Lexing
.
lexeme
lexbuf
in
if
(
s
.
[
0
]
>=
'
A'
)
&&
(
s
.
[
0
]
<=
'
Z'
)
...
...
@@ -214,16 +216,16 @@ let rec token engine lexbuf =
else
if
Hashtbl
.
mem
keywords
s
then
""
,
s
else
"LIDENT"
,
s
)
|
2
->
(
#
9
7
"parser/wlexer.mll"
#
9
9
"parser/wlexer.mll"
"INT"
,
Lexing
.
lexeme
lexbuf
)
|
3
->
(
#
10
2
"parser/wlexer.mll"
#
10
4
"parser/wlexer.mll"
""
,
Lexing
.
lexeme
lexbuf
)
|
4
->
(
#
10
3
"parser/wlexer.mll"
#
10
5
"parser/wlexer.mll"
"DIRECTIVE"
,
Lexing
.
lexeme
lexbuf
)
|
5
->
(
#
10
5
"parser/wlexer.mll"
#
10
7
"parser/wlexer.mll"
let
string_start
=
Lexing
.
lexeme_start
lexbuf
in
string_start_pos
:=
string_start
;
let
double_quote
=
Lexing
.
lexeme_char
lexbuf
0
=
'
"' in
...
...
@@ -233,15 +235,17 @@ let rec token engine lexbuf =
(if double_quote then "
STRING2
" else "
STRING1
"),
(get_stored_string()) )
| 6 -> (
# 11
5
"
parser
/
wlexer
.
mll
"
# 11
7
"
parser
/
wlexer
.
mll
"
comment_start_pos := [Lexing.lexeme_start lexbuf];
in_comment := true;
comment engine lexbuf;
in_comment := false;
token engine lexbuf )
| 7 -> (
# 12
0
"
parser
/
wlexer
.
mll
"
# 12
4
"
parser
/
wlexer
.
mll
"
"
EOI
","" )
| 8 -> (
# 12
2
"
parser
/
wlexer
.
mll
"
# 12
6
"
parser
/
wlexer
.
mll
"
error
(Lexing.lexeme_start lexbuf) (Lexing.lexeme_end lexbuf)
(Illegal_character ((Lexing.lexeme lexbuf).[0])) )
...
...
@@ -250,17 +254,17 @@ let rec token engine lexbuf =
and comment engine lexbuf =
match engine lex_tables 1 lexbuf with
0 -> (
# 12
8
"
parser
/
wlexer
.
mll
"
# 1
3
2 "
parser
/
wlexer
.
mll
"
comment_start_pos := Lexing.lexeme_start lexbuf :: !comment_start_pos;
comment engine lexbuf;
)
| 1 -> (
# 13
2
"
parser
/
wlexer
.
mll
"
# 13
6
"
parser
/
wlexer
.
mll
"
comment_start_pos := List.tl !comment_start_pos;
if !comment_start_pos <> [] then comment engine lexbuf;
)
| 2 -> (
# 1
36
"
parser
/
wlexer
.
mll
"
# 1
40
"
parser
/
wlexer
.
mll
"
string_start_pos := Lexing.lexeme_start lexbuf;
Buffer.clear string_buff;
let ender = Lexing.lexeme lexbuf in
...
...
@@ -271,51 +275,51 @@ and comment engine lexbuf =
Buffer.clear string_buff;
comment engine lexbuf )
| 3 -> (
# 1
46
"
parser
/
wlexer
.
mll
"
# 1
50
"
parser
/
wlexer
.
mll
"
let st = List.hd !comment_start_pos in
error st (st+2) Unterminated_comment
)
| 4 -> (
# 15
0
"
parser
/
wlexer
.
mll
"
# 15
4
"
parser
/
wlexer
.
mll
"
comment engine lexbuf )
| _ -> failwith "
lexing
:
empty
token
[
comment
]
"
and string ender engine lexbuf =
match engine lex_tables 2 lexbuf with
0 -> (
# 15
4
"
parser
/
wlexer
.
mll
"
# 15
8
"
parser
/
wlexer
.
mll
"
let c = Lexing.lexeme lexbuf in
if c = ender then ()
else (store_len lexbuf;
store_char (Lexing.lexeme lexbuf);
string ender engine lexbuf) )
| 1 -> (
# 16
0
"
parser
/
wlexer
.
mll
"
# 16
4
"
parser
/
wlexer
.
mll
"
store_len lexbuf;
store_ascii (Lexing.lexeme_char lexbuf 1);
string ender engine lexbuf )
| 2 -> (
# 16
4
"
parser
/
wlexer
.
mll
"
# 16
8
"
parser
/
wlexer
.
mll
"
let c = Lexing.lexeme_char lexbuf 1 in
if c = 'x'
then parse_hexa_char engine lexbuf
else (store_len lexbuf; store_special c);
string ender engine lexbuf )
| 3 -> (
# 17
0
"
parser
/
wlexer
.
mll
"
# 17
4
"
parser
/
wlexer
.
mll
"
store_len lexbuf;
store_code (numeric_char (Lexing.lexeme lexbuf));
string ender engine lexbuf )
| 4 -> (
# 17
4
"
parser
/
wlexer
.
mll
"
# 17
8
"
parser
/
wlexer
.
mll
"
error
(Lexing.lexeme_start lexbuf) (Lexing.lexeme_end lexbuf)
(Illegal_character '
\\
') )
| 5 -> (
# 1
7
8 "
parser
/
wlexer
.
mll
"
# 18
2
"
parser
/
wlexer
.
mll
"
error !string_start_pos (!string_start_pos+1) Unterminated_string )
| 6 -> (
# 18
0
"
parser
/
wlexer
.
mll
"
# 18
4
"
parser
/
wlexer
.
mll
"
store_len lexbuf;
store_code (Char.code (Lexing.lexeme_char lexbuf 0));
(* Adapt when source is UTF8 *)
...
...
@@ -325,11 +329,11 @@ and string ender engine lexbuf =
and parse_hexa_char engine lexbuf =
match engine lex_tables 3 lexbuf with
0 -> (
# 1
87
"
parser
/
wlexer
.
mll
"
# 1
91
"
parser
/
wlexer
.
mll
"
store_len ~add:2 lexbuf;
store_code (hexa_char (Lexing.lexeme lexbuf)) )
| 1 -> (
# 19
0
"
parser
/
wlexer
.
mll
"
# 19
4
"
parser
/
wlexer
.
mll
"
error
(Lexing.lexeme_start lexbuf) (Lexing.lexeme_end lexbuf)
(Illegal_character '
\\
') )
...
...
@@ -337,7 +341,7 @@ and parse_hexa_char engine lexbuf =
;;
#
196
"
parser
/
wlexer
.
mll
"
#
200
"
parser
/
wlexer
.
mll
"
let delta_loc = ref 0
...
...
parser/wlexer.mll
View file @
b3a28b6b
...
...
@@ -17,6 +17,8 @@ classes
{
let
keywords
=
Hashtbl
.
create
17
let
in_comment
=
ref
false
let
error
=
Location
.
raise_loc
exception
Illegal_character
of
char
exception
Unterminated_comment
...
...
@@ -113,7 +115,9 @@ rule token = parse
|
"(*"
{
comment_start_pos
:=
[
Lexing
.
lexeme_start
lexbuf
];
in_comment
:=
true
;
comment
engine
lexbuf
;
in_comment
:=
false
;
token
engine
lexbuf
}
|
eof
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment