aboutsummaryrefslogtreecommitdiff
path: root/frontend/scanner.icl
diff options
context:
space:
mode:
authorronny2001-07-24 14:48:10 +0000
committerronny2001-07-24 14:48:10 +0000
commita09502c8302fe54770ede62d8c290d099ed68a6d (patch)
tree00652b1509247678e021e11d0b3341986205d508 /frontend/scanner.icl
parentThis commit was generated by cvs2svn to compensate for changes in r563, (diff)
bug fix funny_id_after_type
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@566 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/scanner.icl')
-rw-r--r--frontend/scanner.icl33
1 files changed, 6 insertions, 27 deletions
diff --git a/frontend/scanner.icl b/frontend/scanner.icl
index 25ebe79..b5027f1 100644
--- a/frontend/scanner.icl
+++ b/frontend/scanner.icl
@@ -1,6 +1,7 @@
implementation module scanner
import StdEnv, compare_constructor, StdCompare, general, compilerSwitches
+import RWSDebug
from utilities import revCharListToString, isSpecialChar
@@ -278,19 +279,14 @@ class nextToken state :: !Context !*state -> (!Token, !*state)
instance nextToken RScanState
where
-/* RWS ... rolled back from Pieter's version
-
- this fixes the bug funny_id_after_type, but failes on
- g = let x = 1 in x
-
nextToken newContext (scanState=:{ss_input=inp=:PushedToken token=:{lt_position,lt_token,lt_context,lt_index} rest_inp,ss_tokenBuffer,ss_offsides,ss_useLayout})
| lt_context == newContext || notContextDependent lt_token
= ( lt_token
, { scanState & ss_input = rest_inp , ss_tokenBuffer = store token ss_tokenBuffer }
- ) //-->> ("nextToken: pushed token", lt_token)
+ ) -->> ("nextToken: pushed token", lt_token)
= token_back rest_inp
where
- token_back input=:(Input {inp_pos,inp_stream=OldLine _ string stream,inp_filename,inp_tabsize}) // one old token in wrong context.
+ token_back input=:(Input {inp_pos,inp_stream=OldLine currentIndex string stream,inp_filename,inp_tabsize}) // one old token in wrong context.
| inp_pos.fp_line == lt_position.fp_line
# old_input
= { inp_stream = OldLine lt_index string stream
@@ -306,26 +302,6 @@ where
= ( lt_token
, {ss_input = input , ss_tokenBuffer = store token ss_tokenBuffer, ss_offsides=ss_offsides, ss_useLayout=ss_useLayout}
) -->> ("unable to push token_back in input; generated token", lt_token)
-*/
- nextToken newContext scanState=:{ss_input=input=:PushedToken token=:{lt_position,lt_token/*,lt_context*/} rest,ss_tokenBuffer}
-// | lt_context == newContext || ~ (contextDependent lt_token) || isGeneratedToken lt_token
-
- = ( lt_token
- , { scanState & ss_input = rest , ss_tokenBuffer = store token ss_tokenBuffer }
-// , { ss_input = rest , ss_tokenBuffer = store token ss_tokenBuffer,ss_useLayout=ss_useLayout, ss_offsides=ss_offsides }
- ) //-->> ("nextToken: pushed token", lt_token)
-/*
- = nextToken newContext { scanState & ss_input = pushTokensBack input}
- where
- pushTokensBack input=:(Input _) = input
- pushTokensBack (PushedToken token input)
- # (Input input=:{inp_stream}) = pushTokensBack input
- = Input
- { input
- & inp_stream = OldToken token inp_stream
- } //-->> ("pushTokensBack",token)
-*/
-// ... RWS
nextToken context {ss_input=Input inp,ss_tokenBuffer,ss_offsides,ss_useLayout}
# (error, c, inp) = SkipWhites inp
@@ -419,6 +395,9 @@ notContextDependent :: !Token -> Bool
notContextDependent NewDefinitionToken = True
notContextDependent EndGroupToken = True
notContextDependent EndOfFileToken = True
+// RWS ..
+notContextDependent InToken = True
+// ... RWS
notContextDependent (ErrorToken _) = True
notContextDependent (CodeBlockToken _) = True
notContextDependent _ = False