lib/jedit/plugin/isabelle/IsabelleParser.scala
author wenzelm
Sun, 24 Aug 2008 18:11:20 +0200
changeset 27985 fb774d10ea4c
parent 27659 e40273830fa6
permissions -rw-r--r--
repackaged as isabelle.jedit;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
25851
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
     1
/*  Title:      jedit/plugin/IsabelleParser.scala
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
     2
    ID:         $Id$
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
     3
    Author:     Makarius
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
     4
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
     5
Isabelle parser setup for Sidekick plugin.
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
     6
*/
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
     7
27985
fb774d10ea4c repackaged as isabelle.jedit;
wenzelm
parents: 27659
diff changeset
     8
package isabelle.jedit
25851
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
     9
27659
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    10
import javax.swing.text.Position
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    11
import javax.swing.tree.DefaultMutableTreeNode
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    12
import javax.swing.tree.DefaultTreeModel
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    13
25851
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    14
import org.gjt.sp.jedit.Buffer
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    15
import org.gjt.sp.util.Log
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    16
27659
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    17
import sidekick.Asset
25851
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    18
import sidekick.SideKickParsedData
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    19
import sidekick.SideKickParser
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    20
import errorlist.DefaultErrorSource
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    21
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    22
27659
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    23
private class IsabelleAsset(name: String, content: String) extends Asset(name)
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    24
{
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    25
  override def getShortString() = { name }
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    26
  override def getLongString() = { content }
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    27
  override def getIcon() = { null }
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    28
}
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    29
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    30
25851
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    31
class IsabelleParser extends SideKickParser("isabelle") {
27659
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    32
  private var stopped = false
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    33
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    34
  override def stop () { stopped = true }
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    35
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    36
  def parse(buffer: Buffer, e: DefaultErrorSource): SideKickParsedData = {
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    37
    stopped = false
25851
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    38
27659
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    39
    var text: String = null
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    40
    var data: SideKickParsedData = null
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    41
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    42
    try {
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    43
      buffer.readLock()
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    44
      text = buffer.getText(0, buffer.getLength())
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    45
      data = new SideKickParsedData(buffer.getName())
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    46
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    47
      val asset = new IsabelleAsset("theory", null)
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    48
      asset.setStart(buffer.createPosition(0))
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    49
      asset.setEnd(buffer.createPosition(buffer.getLength()))
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    50
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    51
      val node = new DefaultMutableTreeNode(asset)
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    52
      data.root.insert(node, node.getChildCount())
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    53
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    54
    } finally {
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    55
      buffer.readUnlock()
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    56
    }
e40273830fa6 SideKickParsedData: minimal content;
wenzelm
parents: 25851
diff changeset
    57
25851
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    58
    data
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    59
  }
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    60
}
606850a6fc1a basic setup for Isabelle/jEdit plugin;
wenzelm
parents:
diff changeset
    61