diff options
Diffstat (limited to 'frontend/ShowWrapped.icl')
-rw-r--r-- | frontend/ShowWrapped.icl | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/frontend/ShowWrapped.icl b/frontend/ShowWrapped.icl new file mode 100644 index 0000000..82b72a1 --- /dev/null +++ b/frontend/ShowWrapped.icl @@ -0,0 +1,80 @@ +implementation module ShowWrapped + +import StdEnv +import Wrap + +ShowWrapped :: WrappedNode -> [{#Char}] +ShowWrapped node + = Show False node + +Show _ (WrappedInt i) + = [toString i] +Show _ (WrappedChar c) + = ["\'" +++ toString c +++ "\'"] +Show _ (WrappedBool b) + = [toString b] +Show _ (WrappedReal r) + = [toString r] +Show _ (WrappedFile f) + = [toString f] +Show _ (WrappedString s) + = ["\"" +++ s +++ "\""] +Show _ (WrappedIntArray a) + = ShowBasicArray a +Show _ (WrappedBoolArray a) + = ShowBasicArray a +Show _ (WrappedRealArray a) + = ShowBasicArray a +Show _ (WrappedFileArray a) + = ShowBasicArray a +Show _ (WrappedArray a) + = ["{" : flatten (Separate [", "] [Show False el \\ el <-: a])] ++ ["}"] +Show _ (WrappedRecord descriptor args) + = ["{" : flatten (Separate [" "] [[ShowDescriptor descriptor] : [Show True arg \\ arg <-: args]])] ++ ["}"] +Show _ (WrappedOther WrappedDescriptorCons args) + | size args == 2 + = ["[" : flatten [Show False args.[0] : ShowTail args.[1]]] ++ ["]"] + where + ShowTail (WrappedOther WrappedDescriptorCons args) + | size args == 2 + = [[", "], Show False args.[0] : ShowTail args.[1]] + ShowTail (WrappedOther WrappedDescriptorNil args) + | size args == 0 + = [] + ShowTail graph // abnormal list + = [[" : " : Show False graph]] +Show _ (WrappedOther WrappedDescriptorTuple args) + = ["(" : flatten (Separate [", "] [Show False arg \\ arg <-: args])] ++ [")"] +Show pars (WrappedOther descriptor args) + | pars && size args > 0 + = ["(" : application] ++ [")"] + // otherwise + = application + where + application + = flatten (Separate [" "] [[ShowDescriptor descriptor] : [Show True arg \\ arg <-: args]]) + +ShowDescriptor (WrappedDescriptorOther id) + = toString id +ShowDescriptor WrappedDescriptorNil + = "[]" +ShowDescriptor WrappedDescriptorCons + = "[:]" +ShowDescriptor WrappedDescriptorTuple + = "(..)" + +ShowBasicArray a + = ["{" : Separate ", " [toString el \\ el <-: a]] ++ ["}"] +ShowWrappedArray a + = ["{" : flatten (Separate [", "] [Show False el \\ el <-: a])] ++ ["}"] + +Separate :: a [a] -> [a] +Separate separator [a : t=:[b : _]] + = [a, separator : Separate separator t] +Separate _ l + = l + +instance toString File +where + toString _ + = "File" |