Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
gargantext-ihaskell
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
gargantext-ihaskell
Commits
70ddc14f
Commit
70ddc14f
authored
Feb 07, 2014
by
Andrew Gibiansky
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixing comment removal within strings and such, closes #176
parent
62b063c0
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
1 deletion
+40
-1
build.sh
build.sh
+10
-0
Parser.hs
ghc-parser/Language/Haskell/GHC/Parser.hs
+30
-1
No files found.
build.sh
View file @
70ddc14f
...
@@ -14,6 +14,16 @@ rm -f profile.tar
...
@@ -14,6 +14,16 @@ rm -f profile.tar
tar
-cvf
profile.tar
*
tar
-cvf
profile.tar
*
cd
..
cd
..
if
[
$#
-gt
0
]
;
then
if
[
$1
=
"all"
]
;
then
cd
ghc-parser
;
cabal
install
--force-reinstalls
;
cd
../ghci-lib
;
cabal
install
--force-reinstalls
;
cd
..
;
fi
fi
# Make ihaskell itself
# Make ihaskell itself
cabal clean
cabal clean
cabal
install
--force-reinstalls
cabal
install
--force-reinstalls
...
...
ghc-parser/Language/Haskell/GHC/Parser.hs
View file @
70ddc14f
...
@@ -198,15 +198,35 @@ removeComments = removeOneLineComments . removeMultilineComments 0
...
@@ -198,15 +198,35 @@ removeComments = removeOneLineComments . removeMultilineComments 0
case
str
of
case
str
of
-- Don't remove comments after cmd directives
-- Don't remove comments after cmd directives
':'
:
'!'
:
remaining
->
":!"
++
takeLine
remaining
++
dropLine
remaining
':'
:
'!'
:
remaining
->
":!"
++
takeLine
remaining
++
dropLine
remaining
-- Handle strings.
'"'
:
remaining
->
let
quoted
=
takeString
remaining
len
=
length
quoted
in
'"'
:
quoted
++
removeOneLineComments
(
drop
len
remaining
)
'-'
:
'-'
:
remaining
->
dropLine
remaining
'-'
:
'-'
:
remaining
->
dropLine
remaining
x
:
xs
->
x
:
removeOneLineComments
xs
x
:
xs
->
x
:
removeOneLineComments
xs
[]
->
[]
[]
->
[]
where
where
dropLine
=
removeOneLineComments
.
dropWhile
(
/=
'
\n
'
)
dropLine
=
removeOneLineComments
.
dropWhile
(
/=
'
\n
'
)
takeLine
=
takeWhile
(
/=
'
\n
'
)
removeMultilineComments
nesting
str
=
removeMultilineComments
nesting
str
=
case
str
of
case
str
of
-- Don't remove comments after cmd directives
':'
:
'!'
:
remaining
->
":!"
++
takeLine
remaining
++
removeMultilineComments
nesting
(
dropWhile
(
/=
'
\n
'
)
remaining
)
-- Handle strings.
'"'
:
remaining
->
if
nesting
==
0
then
let
quoted
=
takeString
remaining
len
=
length
quoted
in
'"'
:
quoted
++
removeMultilineComments
nesting
(
drop
len
remaining
)
else
removeMultilineComments
nesting
remaining
'{'
:
'-'
:
remaining
->
removeMultilineComments
(
nesting
+
1
)
remaining
'{'
:
'-'
:
remaining
->
removeMultilineComments
(
nesting
+
1
)
remaining
'-'
:
'}'
:
remaining
->
'-'
:
'}'
:
remaining
->
if
nesting
>
0
if
nesting
>
0
...
@@ -217,3 +237,12 @@ removeComments = removeOneLineComments . removeMultilineComments 0
...
@@ -217,3 +237,12 @@ removeComments = removeOneLineComments . removeMultilineComments 0
then
removeMultilineComments
nesting
xs
then
removeMultilineComments
nesting
xs
else
x
:
removeMultilineComments
nesting
xs
else
x
:
removeMultilineComments
nesting
xs
[]
->
[]
[]
->
[]
takeLine
=
takeWhile
(
/=
'
\n
'
)
-- Take a part of a string that ends in an unescaped quote.
takeString
str
=
case
str
of
escaped
@
(
'
\\
'
:
'"'
:
rest
)
->
escaped
'"'
:
rest
->
"
\"
"
x
:
xs
->
x
:
takeString
xs
[]
->
[]
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