Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Why3
why3
Commits
382c98bd
Commit
382c98bd
authored
Apr 16, 2018
by
Andrei Paskevich
Browse files
Lexer: handle (*) entirely in the lexer
this avoids handling LEFTPAR_STAR_RIGHTPAR in the parser
parent
3ead22d3
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/driver/driver_lexer.mll
View file @
382c98bd
...
...
@@ -52,7 +52,6 @@
"converter"
,
CONVERTER
;
"literal"
,
LITERAL
;
]
}
let
space
=
[
'
'
'\t'
'\r'
]
...
...
@@ -65,12 +64,18 @@ let op_char = ['=' '<' '>' '~' '+' '-' '*' '/' '%'
rule
token
=
parse
|
'\n'
{
new_line
lexbuf
;
token
lexbuf
}
{
Lexing
.
new_line
lexbuf
;
token
lexbuf
}
|
space
+
{
token
lexbuf
}
|
"(*)"
{
LEFTPAR_STAR_RIGHTPAR
}
|
"(*"
|
"(**)"
{
token
lexbuf
}
|
"(*(*"
{
Lexlib
.
comment
lexbuf
;
Lexlib
.
comment
lexbuf
;
token
lexbuf
}
|
"(*"
'\n'
{
Lexing
.
new_line
lexbuf
;
Lexlib
.
comment
lexbuf
;
token
lexbuf
}
|
"(*(*)"
|
"(*"
eof
|
"(*"
[
^
'
)
'
]
{
Lexlib
.
comment
lexbuf
;
token
lexbuf
}
|
'
_'
{
UNDERSCORE
}
...
...
src/driver/driver_parser.mly
View file @
382c98bd
...
...
@@ -26,7 +26,7 @@
%
token
BLACKLIST
%
token
MODULE
EXCEPTION
VAL
CONVERTER
LITERAL
%
token
FUNCTION
PREDICATE
TYPE
PROP
ALL
FILENAME
TRANSFORM
PLUGIN
%
token
LEFTPAR_STAR_RIGHTPAR
COMMA
CONSTANT
%
token
COMMA
CONSTANT
%
token
LEFTSQ
RIGHTSQ
LARROW
%
nonassoc
SYNTAX
REMOVE
PRELUDE
...
...
@@ -133,7 +133,6 @@ ident:
ident_rich
:
|
ident
{
$
1
}
|
LEFTPAR_STAR_RIGHTPAR
{
Ident
.
infix
"*"
}
|
LEFTPAR
operator
RIGHTPAR
{
$
2
}
operator
:
...
...
src/parser/lexer.mll
View file @
382c98bd
...
...
@@ -166,9 +166,15 @@ rule token = parse
([
'
p'
'
P'
]
([
'
-
'
'
+
'
]
?
digit
+
as
e
))
?
{
REAL
(
Number
.
real_const_hex
i
f
(
Opt
.
map
Lexlib
.
remove_leading_plus
e
))
}
|
"(*)"
{
LEFTPAR_STAR_RIGHTPAR
}
|
"(*"
|
"(**)"
{
token
lexbuf
}
|
"(*(*"
{
Lexlib
.
comment
lexbuf
;
Lexlib
.
comment
lexbuf
;
token
lexbuf
}
|
"(*"
'\n'
{
Lexing
.
new_line
lexbuf
;
Lexlib
.
comment
lexbuf
;
token
lexbuf
}
|
"(*(*)"
|
"(*"
eof
|
"(*"
[
^
'
)
'
]
{
Lexlib
.
comment
lexbuf
;
token
lexbuf
}
|
"'"
(
lident
as
id
)
{
QUOTE_LIDENT
id
}
...
...
src/parser/parser.mly
View file @
382c98bd
...
...
@@ -147,7 +147,7 @@
%
token
BAR
%
token
COLON
COMMA
%
token
DOT
DOTDOT
EQUAL
LT
GT
LTGT
MINUS
%
token
LEFTPAR
LEFTPAR_STAR_RIGHTPAR
LEFTSQ
%
token
LEFTPAR
LEFTSQ
%
token
LARROW
LRARROW
OR
%
token
RIGHTPAR
RIGHTSQ
%
token
UNDERSCORE
...
...
@@ -1183,11 +1183,6 @@ lident_rich:
lident_op_id
:
|
LEFTPAR
lident_op
RIGHTPAR
{
mk_id
$
2
$
startpos
(
$
2
)
$
endpos
(
$
2
)
}
|
LEFTPAR_STAR_RIGHTPAR
{
(* parentheses are removed from the location *)
let
s
=
let
s
=
$
startpos
in
{
s
with
Lexing
.
pos_cnum
=
s
.
Lexing
.
pos_cnum
+
1
}
in
let
e
=
let
e
=
$
endpos
in
{
e
with
Lexing
.
pos_cnum
=
e
.
Lexing
.
pos_cnum
-
1
}
in
mk_id
(
Ident
.
infix
"*"
)
s
e
}
lident_op
:
|
op_symbol
{
Ident
.
infix
$
1
}
...
...
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