wenzelm@27958
|
1 |
/* Title: Pure/General/markup.scala
|
wenzelm@27958
|
2 |
Author: Makarius
|
wenzelm@27958
|
3 |
|
wenzelm@27958
|
4 |
Common markup elements.
|
wenzelm@27958
|
5 |
*/
|
wenzelm@27958
|
6 |
|
wenzelm@27958
|
7 |
package isabelle
|
wenzelm@27958
|
8 |
|
wenzelm@27970
|
9 |
|
wenzelm@32450
|
10 |
object Markup
|
wenzelm@32450
|
11 |
{
|
wenzelm@38995
|
12 |
/* plain values */
|
wenzelm@38660
|
13 |
|
wenzelm@38660
|
14 |
object Int {
|
wenzelm@38660
|
15 |
def apply(i: scala.Int): String = i.toString
|
wenzelm@38660
|
16 |
def unapply(s: String): Option[scala.Int] =
|
wenzelm@38660
|
17 |
try { Some(Integer.parseInt(s)) }
|
wenzelm@38660
|
18 |
catch { case _: NumberFormatException => None }
|
wenzelm@38660
|
19 |
}
|
wenzelm@38660
|
20 |
|
wenzelm@38660
|
21 |
object Long {
|
wenzelm@38660
|
22 |
def apply(i: scala.Long): String = i.toString
|
wenzelm@38660
|
23 |
def unapply(s: String): Option[scala.Long] =
|
wenzelm@38660
|
24 |
try { Some(java.lang.Long.parseLong(s)) }
|
wenzelm@38660
|
25 |
catch { case _: NumberFormatException => None }
|
wenzelm@38660
|
26 |
}
|
wenzelm@38660
|
27 |
|
wenzelm@38660
|
28 |
|
wenzelm@38995
|
29 |
/* named properties */
|
wenzelm@36721
|
30 |
|
wenzelm@38995
|
31 |
class Property(val name: String)
|
wenzelm@38637
|
32 |
{
|
wenzelm@38995
|
33 |
def apply(value: String): List[(String, String)] = List((name, value))
|
wenzelm@38995
|
34 |
def unapply(props: List[(String, String)]): Option[String] =
|
wenzelm@38995
|
35 |
props.find(_._1 == name).map(_._2)
|
wenzelm@38637
|
36 |
}
|
wenzelm@38637
|
37 |
|
wenzelm@38995
|
38 |
class Int_Property(name: String)
|
wenzelm@36721
|
39 |
{
|
wenzelm@38995
|
40 |
def apply(value: scala.Int): List[(String, String)] = List((name, Int(value)))
|
wenzelm@38995
|
41 |
def unapply(props: List[(String, String)]): Option[Int] =
|
wenzelm@38995
|
42 |
props.find(_._1 == name) match {
|
wenzelm@38995
|
43 |
case None => None
|
wenzelm@38995
|
44 |
case Some((_, value)) => Int.unapply(value)
|
wenzelm@38995
|
45 |
}
|
wenzelm@38995
|
46 |
}
|
wenzelm@38995
|
47 |
|
wenzelm@38995
|
48 |
class Long_Property(name: String)
|
wenzelm@38995
|
49 |
{
|
wenzelm@38995
|
50 |
def apply(value: scala.Long): List[(String, String)] = List((name, Long(value)))
|
wenzelm@38995
|
51 |
def unapply(props: List[(String, String)]): Option[Long] =
|
wenzelm@38995
|
52 |
props.find(_._1 == name) match {
|
wenzelm@38995
|
53 |
case None => None
|
wenzelm@38995
|
54 |
case Some((_, value)) => Long.unapply(value)
|
wenzelm@38995
|
55 |
}
|
wenzelm@36721
|
56 |
}
|
wenzelm@36721
|
57 |
|
wenzelm@36721
|
58 |
|
wenzelm@38792
|
59 |
/* empty */
|
wenzelm@38792
|
60 |
|
wenzelm@38792
|
61 |
val Empty = Markup("", Nil)
|
wenzelm@38792
|
62 |
|
wenzelm@38792
|
63 |
|
wenzelm@38994
|
64 |
/* misc properties */
|
wenzelm@29184
|
65 |
|
wenzelm@29184
|
66 |
val NAME = "name"
|
wenzelm@29184
|
67 |
val KIND = "kind"
|
wenzelm@29184
|
68 |
|
wenzelm@29184
|
69 |
|
wenzelm@33093
|
70 |
/* formal entities */
|
wenzelm@33093
|
71 |
|
wenzelm@33093
|
72 |
val ENTITY = "entity"
|
wenzelm@33093
|
73 |
val DEF = "def"
|
wenzelm@33093
|
74 |
val REF = "ref"
|
wenzelm@33093
|
75 |
|
wenzelm@33093
|
76 |
|
wenzelm@27970
|
77 |
/* position */
|
wenzelm@27970
|
78 |
|
wenzelm@27970
|
79 |
val LINE = "line"
|
wenzelm@27970
|
80 |
val COLUMN = "column"
|
wenzelm@27970
|
81 |
val OFFSET = "offset"
|
wenzelm@27970
|
82 |
val END_LINE = "end_line"
|
wenzelm@27970
|
83 |
val END_COLUMN = "end_column"
|
wenzelm@27970
|
84 |
val END_OFFSET = "end_offset"
|
wenzelm@27970
|
85 |
val FILE = "file"
|
wenzelm@27970
|
86 |
val ID = "id"
|
wenzelm@27970
|
87 |
|
wenzelm@32450
|
88 |
val POSITION_PROPERTIES =
|
wenzelm@32450
|
89 |
Set(LINE, COLUMN, OFFSET, END_LINE, END_COLUMN, END_OFFSET, FILE, ID)
|
wenzelm@29205
|
90 |
|
wenzelm@29184
|
91 |
val POSITION = "position"
|
wenzelm@29184
|
92 |
val LOCATION = "location"
|
wenzelm@29184
|
93 |
|
wenzelm@29184
|
94 |
|
wenzelm@36721
|
95 |
/* pretty printing */
|
wenzelm@36721
|
96 |
|
wenzelm@38997
|
97 |
val Indent = new Int_Property("indent")
|
wenzelm@36721
|
98 |
val BLOCK = "block"
|
wenzelm@38997
|
99 |
val Width = new Int_Property("width")
|
wenzelm@36721
|
100 |
val BREAK = "break"
|
wenzelm@36721
|
101 |
|
wenzelm@36721
|
102 |
|
wenzelm@33994
|
103 |
/* hidden text */
|
wenzelm@33994
|
104 |
|
wenzelm@33994
|
105 |
val HIDDEN = "hidden"
|
wenzelm@33994
|
106 |
|
wenzelm@33994
|
107 |
|
wenzelm@29184
|
108 |
/* logical entities */
|
wenzelm@29184
|
109 |
|
wenzelm@29184
|
110 |
val TCLASS = "tclass"
|
wenzelm@29184
|
111 |
val TYCON = "tycon"
|
wenzelm@29184
|
112 |
val FIXED_DECL = "fixed_decl"
|
wenzelm@29184
|
113 |
val FIXED = "fixed"
|
wenzelm@29184
|
114 |
val CONST_DECL = "const_decl"
|
wenzelm@29184
|
115 |
val CONST = "const"
|
wenzelm@29184
|
116 |
val FACT_DECL = "fact_decl"
|
wenzelm@29184
|
117 |
val FACT = "fact"
|
wenzelm@29184
|
118 |
val DYNAMIC_FACT = "dynamic_fact"
|
wenzelm@29184
|
119 |
val LOCAL_FACT_DECL = "local_fact_decl"
|
wenzelm@29184
|
120 |
val LOCAL_FACT = "local_fact"
|
wenzelm@29184
|
121 |
|
wenzelm@29184
|
122 |
|
wenzelm@29184
|
123 |
/* inner syntax */
|
wenzelm@29184
|
124 |
|
wenzelm@29184
|
125 |
val TFREE = "tfree"
|
wenzelm@29184
|
126 |
val TVAR = "tvar"
|
wenzelm@29184
|
127 |
val FREE = "free"
|
wenzelm@29184
|
128 |
val SKOLEM = "skolem"
|
wenzelm@29184
|
129 |
val BOUND = "bound"
|
wenzelm@29184
|
130 |
val VAR = "var"
|
wenzelm@29184
|
131 |
val NUM = "num"
|
wenzelm@29184
|
132 |
val FLOAT = "float"
|
wenzelm@29184
|
133 |
val XNUM = "xnum"
|
wenzelm@29184
|
134 |
val XSTR = "xstr"
|
wenzelm@29184
|
135 |
val LITERAL = "literal"
|
wenzelm@29184
|
136 |
val INNER_COMMENT = "inner_comment"
|
wenzelm@29184
|
137 |
|
wenzelm@29184
|
138 |
val SORT = "sort"
|
wenzelm@29184
|
139 |
val TYP = "typ"
|
wenzelm@29184
|
140 |
val TERM = "term"
|
wenzelm@29184
|
141 |
val PROP = "prop"
|
wenzelm@29184
|
142 |
|
wenzelm@29184
|
143 |
val ATTRIBUTE = "attribute"
|
wenzelm@29184
|
144 |
val METHOD = "method"
|
wenzelm@29184
|
145 |
|
wenzelm@29184
|
146 |
|
wenzelm@29184
|
147 |
/* embedded source text */
|
wenzelm@29184
|
148 |
|
wenzelm@29184
|
149 |
val ML_SOURCE = "ML_source"
|
wenzelm@29184
|
150 |
val DOC_SOURCE = "doc_source"
|
wenzelm@29184
|
151 |
|
wenzelm@29184
|
152 |
val ANTIQ = "antiq"
|
wenzelm@29184
|
153 |
val ML_ANTIQ = "ML_antiq"
|
wenzelm@29184
|
154 |
val DOC_ANTIQ = "doc_antiq"
|
wenzelm@29184
|
155 |
|
wenzelm@29184
|
156 |
|
wenzelm@30615
|
157 |
/* ML syntax */
|
wenzelm@30615
|
158 |
|
wenzelm@30615
|
159 |
val ML_KEYWORD = "ML_keyword"
|
wenzelm@37196
|
160 |
val ML_DELIMITER = "ML_delimiter"
|
wenzelm@30615
|
161 |
val ML_IDENT = "ML_ident"
|
wenzelm@30615
|
162 |
val ML_TVAR = "ML_tvar"
|
wenzelm@30615
|
163 |
val ML_NUMERAL = "ML_numeral"
|
wenzelm@30615
|
164 |
val ML_CHAR = "ML_char"
|
wenzelm@30615
|
165 |
val ML_STRING = "ML_string"
|
wenzelm@30615
|
166 |
val ML_COMMENT = "ML_comment"
|
wenzelm@30615
|
167 |
val ML_MALFORMED = "ML_malformed"
|
wenzelm@30615
|
168 |
|
wenzelm@30704
|
169 |
val ML_DEF = "ML_def"
|
wenzelm@31472
|
170 |
val ML_OPEN = "ML_open"
|
wenzelm@31472
|
171 |
val ML_STRUCT = "ML_struct"
|
wenzelm@30704
|
172 |
val ML_REF = "ML_ref"
|
wenzelm@30704
|
173 |
val ML_TYPING = "ML_typing"
|
wenzelm@30704
|
174 |
|
wenzelm@30615
|
175 |
|
wenzelm@29184
|
176 |
/* outer syntax */
|
wenzelm@29184
|
177 |
|
wenzelm@29184
|
178 |
val KEYWORD_DECL = "keyword_decl"
|
wenzelm@29184
|
179 |
val COMMAND_DECL = "command_decl"
|
wenzelm@29184
|
180 |
|
wenzelm@29184
|
181 |
val KEYWORD = "keyword"
|
wenzelm@37195
|
182 |
val OPERATOR = "operator"
|
wenzelm@29184
|
183 |
val COMMAND = "command"
|
wenzelm@29184
|
184 |
val IDENT = "ident"
|
wenzelm@29184
|
185 |
val STRING = "string"
|
wenzelm@29184
|
186 |
val ALTSTRING = "altstring"
|
wenzelm@29184
|
187 |
val VERBATIM = "verbatim"
|
wenzelm@29184
|
188 |
val COMMENT = "comment"
|
wenzelm@29184
|
189 |
val CONTROL = "control"
|
wenzelm@29184
|
190 |
val MALFORMED = "malformed"
|
wenzelm@29184
|
191 |
|
wenzelm@29185
|
192 |
val COMMAND_SPAN = "command_span"
|
wenzelm@29185
|
193 |
val IGNORED_SPAN = "ignored_span"
|
wenzelm@29185
|
194 |
val MALFORMED_SPAN = "malformed_span"
|
wenzelm@29185
|
195 |
|
wenzelm@29184
|
196 |
|
wenzelm@29184
|
197 |
/* toplevel */
|
wenzelm@29184
|
198 |
|
wenzelm@38994
|
199 |
val SUBGOALS = "subgoals"
|
wenzelm@38994
|
200 |
val PROOF_STATE = "proof_state"
|
wenzelm@38994
|
201 |
|
wenzelm@29184
|
202 |
val STATE = "state"
|
wenzelm@29184
|
203 |
val SUBGOAL = "subgoal"
|
wenzelm@29184
|
204 |
val SENDBACK = "sendback"
|
wenzelm@29184
|
205 |
val HILITE = "hilite"
|
wenzelm@29184
|
206 |
|
wenzelm@29184
|
207 |
|
wenzelm@29184
|
208 |
/* command status */
|
wenzelm@29184
|
209 |
|
wenzelm@29418
|
210 |
val TASK = "task"
|
wenzelm@29418
|
211 |
|
wenzelm@37186
|
212 |
val FORKED = "forked"
|
wenzelm@37186
|
213 |
val JOINED = "joined"
|
wenzelm@29184
|
214 |
val FAILED = "failed"
|
wenzelm@29184
|
215 |
val FINISHED = "finished"
|
wenzelm@29488
|
216 |
|
wenzelm@29488
|
217 |
|
wenzelm@29488
|
218 |
/* interactive documents */
|
wenzelm@29488
|
219 |
|
wenzelm@38660
|
220 |
val VERSION = "version"
|
wenzelm@38660
|
221 |
val EXEC = "exec"
|
wenzelm@38660
|
222 |
val ASSIGN = "assign"
|
wenzelm@29488
|
223 |
val EDIT = "edit"
|
wenzelm@29184
|
224 |
|
wenzelm@27970
|
225 |
|
wenzelm@27970
|
226 |
/* messages */
|
wenzelm@27970
|
227 |
|
wenzelm@27970
|
228 |
val PID = "pid"
|
wenzelm@39198
|
229 |
val Serial = new Long_Property("serial")
|
wenzelm@27970
|
230 |
|
wenzelm@29195
|
231 |
val MESSAGE = "message"
|
wenzelm@29522
|
232 |
val CLASS = "class"
|
wenzelm@29522
|
233 |
|
wenzelm@29522
|
234 |
val INIT = "init"
|
wenzelm@29522
|
235 |
val STATUS = "status"
|
wenzelm@38492
|
236 |
val REPORT = "report"
|
wenzelm@29522
|
237 |
val WRITELN = "writeln"
|
wenzelm@29522
|
238 |
val TRACING = "tracing"
|
wenzelm@29522
|
239 |
val WARNING = "warning"
|
wenzelm@29522
|
240 |
val ERROR = "error"
|
wenzelm@29522
|
241 |
val DEBUG = "debug"
|
wenzelm@29522
|
242 |
val SYSTEM = "system"
|
wenzelm@38557
|
243 |
val INPUT = "input"
|
wenzelm@29522
|
244 |
val STDIN = "stdin"
|
wenzelm@29522
|
245 |
val STDOUT = "stdout"
|
wenzelm@29522
|
246 |
val SIGNAL = "signal"
|
wenzelm@29522
|
247 |
val EXIT = "exit"
|
wenzelm@29195
|
248 |
|
wenzelm@38487
|
249 |
val Ready = Markup("ready", Nil)
|
wenzelm@31384
|
250 |
|
wenzelm@27970
|
251 |
|
wenzelm@34128
|
252 |
/* system data */
|
wenzelm@27970
|
253 |
|
wenzelm@38487
|
254 |
val Data = Markup("data", Nil)
|
wenzelm@27958
|
255 |
}
|
wenzelm@38486
|
256 |
|
wenzelm@38486
|
257 |
sealed case class Markup(name: String, properties: List[(String, String)])
|