diff options
author | ronny | 2001-07-25 09:40:41 +0000 |
---|---|---|
committer | ronny | 2001-07-25 09:40:41 +0000 |
commit | ac6bc47447baf6cf638cbd9777aa8ebef11f70b0 (patch) | |
tree | 20ef921d7992116123de8cf9e3915d84aebb121b /frontend/scanner.icl | |
parent | bug fix parsebug_missing_result (diff) |
changed ss_useLayout field to bit vector (in anticipation of more scan state bits)
git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@568 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/scanner.icl')
-rw-r--r-- | frontend/scanner.icl | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/frontend/scanner.icl b/frontend/scanner.icl index b5027f1..54bdd02 100644 --- a/frontend/scanner.icl +++ b/frontend/scanner.icl @@ -63,10 +63,12 @@ where :: * RScanState = { ss_input :: ScanInput , ss_offsides :: ! [(Int, Bool) ] // (column, defines newDefinition) - , ss_useLayout :: ! Bool + , ss_useLayout :: ! Int , ss_tokenBuffer :: ! Buffer LongToken } +UseLayoutBit :== 1 + :: * ScanInput = Input Input | PushedToken LongToken ScanInput @@ -1437,7 +1439,7 @@ openScanner file_name searchPaths files // , inp_curToken = [] } , ss_offsides = [(1,False)] // to generate offsides between global definitions - , ss_useLayout = False + , ss_useLayout = 0 , ss_tokenBuffer = Buffer0 }) , files @@ -1512,22 +1514,23 @@ isNewLine _ = False //------------------------// UseLayout_ :: !RScanState -> (!Bool, !RScanState) -UseLayout_ scanState = scanState!ss_useLayout +UseLayout_ scanState=:{ss_useLayout} + = ((ss_useLayout bitand UseLayoutBit) <> 0, scanState) UseLayout :: !ScanState -> (!Bool, !ScanState) UseLayout (ScanState scanState) - # (ss_useLayout,scanState) = scanState!ss_useLayout - = (ss_useLayout,ScanState scanState) + #! (useLayout, scanState) = UseLayout_ scanState + = (useLayout,ScanState scanState) setUseLayout :: !Bool !ScanState -> ScanState -setUseLayout b (ScanState ss) = ScanState { ss & ss_useLayout = b } +setUseLayout b (ScanState ss) = ScanState (setUseLayout_ b ss) setUseLayout_ :: !Bool !RScanState -> RScanState -setUseLayout_ b ss = { ss & ss_useLayout = b } // -->> ("uselayout set to ",b) +setUseLayout_ b ss=:{ss_useLayout} = { ss & ss_useLayout = if b (ss_useLayout bitor UseLayoutBit) (ss_useLayout bitand (bitnot UseLayoutBit)) } // -->> ("uselayout set to ",b) checkOffside :: !FilePosition !Int !Token !RScanState -> (Token,RScanState) checkOffside pos index token scanState=:{ss_offsides,ss_useLayout,ss_input} - | ~ ss_useLayout + | (ss_useLayout bitand UseLayoutBit) == 0 = (token, scanState) //-->> (token,pos,"No layout rule applied") | isEmpty ss_offsides = newOffside token scanState //-->> "Empty offside stack" |