summaryrefslogtreecommitdiff
path: root/testdata/osmlparser/user_defined_syntax.osml
blob: 3d44c2929cfcd63aff02c2728684b80c66f63bdd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
\begin{document}

\ontology#article{
	\struct#article[root=true]
		\field
			\childRef[ref=section]
			\childRef[ref=paragraph]
	\struct#section
		\primitive#title[type=string,subtree=true]
			\syntax
				\open{==}
				\close{==}
		\field
			\childRef[ref=paragraph]
	\struct#paragraph[transparent=true]
		\syntax
			\close{\paragraph}
		\field
			\childRef[ref=text]
			\childRef[ref=code]
	\struct#code
		\syntax
			\open{`}
			\close{`}
		\field
			\childRef[ref=text]
	\struct#speech
		\syntax
			\open{<<}
			\close{>>}
		\fieldRef[ref=paragraph.$default]
	\struct#text[transparent=true]
		\primitive[type=string]
}

\begin{article}
== This tests somewhat plays with user defined syntax ==

As you can see, just the tiny `\\syntax` definitions above make writing documents
much easier.

For instance, this is a new paragraph.

And here goes another one.

All with the power of just adding `\\close\{\\paragraph\}` to the `\\syntax`
definition of the paragraph structure.

<<Well, that's insane!>>, I hear you say. Right so! This indeed is insane.

== One last thing ==

Did you notice how we started sections here?

Sections can be allowed to use Wiki-like syntax with only three lines of code.
\end{article}
\end{document}