src/Tools/jEdit/src/prover/IsabelleSKParser.scala
author immler@in.tum.de
Sun, 30 Nov 2008 19:18:59 +0100
changeset 34393 f0e1608a774f
child 34401 44241a37b74a
permissions -rw-r--r--
basic tree structure for sidekick
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34393
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
     1
/*
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
     2
 * IsabelleSKParser.scala
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
     3
 *
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
     4
 * To change this template, choose Tools | Template Manager
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
     5
 * and open the template in the editor.
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
     6
 */
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
     7
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
     8
package isabelle.prover
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
     9
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    10
import isabelle.jedit.Plugin
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    11
import sidekick.{SideKickParser, SideKickParsedData, IAsset}
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    12
import org.gjt.sp.jedit.Buffer
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    13
import javax.swing.tree.DefaultMutableTreeNode
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    14
import errorlist.DefaultErrorSource;
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    15
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    16
class IsabelleSKParser() extends SideKickParser("isabelle") {
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    17
  
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    18
  override def parse(b : Buffer,
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    19
                     errorSource : DefaultErrorSource)
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    20
    : SideKickParsedData = {
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    21
      if(Plugin.plugin == null || Plugin.plugin.theoryView == null
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    22
         || Plugin.plugin.theoryView.buffer == null
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    23
         || !Plugin.plugin.theoryView.buffer.equals(b))
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    24
      {
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    25
        val data = new SideKickParsedData("WARNING:")
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    26
        data.root.add(new DefaultMutableTreeNode("can only parse buffer which is activated via IsabellePlugin -> activate"))
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    27
        data
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    28
      } else{
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    29
        val plugin = Plugin.plugin
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    30
        val prover = plugin.prover
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    31
        val buffer = Plugin.plugin.theoryView.buffer.asInstanceOf[Buffer]
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    32
        val document = prover.document
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    33
        val data = new SideKickParsedData(buffer.getPath)
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    34
        //TODO: catch npe s
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    35
        for(command <- document.commands){
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    36
          data.root.add(command.root_node)
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    37
        }
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    38
        data
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    39
      }
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    40
    }
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    41
f0e1608a774f basic tree structure for sidekick
immler@in.tum.de
parents:
diff changeset
    42
}