module FPPrac.Trees.ParseTree
        ( ParseTree(..)
        , showTree
        , showTreeList
        , exampleTree
        ) where

import EventLoop.Output.Single (outSingle)
import EventLoop.Output
import EventLoop.CommonTypes
import FPPrac.Trees.GeneralTree

data ParseTree = ParseNode String [ParseTree]
                deriving (Show, Eq)

                
                
                
------------------------
instance GeneralizeTree ParseTree where
    generalizeTree (ParseNode str children) = GeneralTreeBox content children'WithLines
                                            where
                                                content = [GeneralNodeText (0,0,0) str]
                                                children'WithLines = zip (repeat line) (map generalizeTree children)
                                                line = GeneralLine (125,125,125)
 
exampleTree = ParseNode "z"
                        [ ParseNode "aaa"
                                    [ ParseNode "bbb"
                                                [ ParseNode "ccc" [],
                                                  ParseNode "ddd" []
                                                ],
                                      ParseNode ""
                                                [ParseNode "fff" [],
                                                 ParseNode "ggg" [],
                                                 ParseNode "hhh" []
                                                ],
                                      ParseNode "iii"
                                                [ParseNode "" []
                                                ]
                                    ],
                          ParseNode "kkk"
                                    [ParseNode "lll" [],
                                     ParseNode "mmm"
                                               [ParseNode "nnn"
                                                          [ParseNode "q" [],
                                                           ParseNode "r" []
                                                          ],
                                                ParseNode "ooo" [],
                                                ParseNode "ppp" []
                                               ]
                                    ]
                        ]