-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathcamxes.html
136 lines (125 loc) · 5.26 KB
/
camxes.html
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<!doctype html>
<html>
<head>
<title>la camxes - la ilmentufa</title>
<meta name="viewport" content="initial-scale=1.0,width=device-width,user-scalable=0,viewport-fit=cover" />
<style>form, select { margin: 4px 0 }</style>
</head>
<body>
<meta charset='utf-8' />
<span style="font: 15px arial, sans-serif;">Type any Lojban text in the following textarea. The result will be parsed as you type:</span>
<br /><br />
<form id="form1" name="form1" method="post" action="" style="width:100%">
<textarea id="input_textarea" style="width:100%" rows="8" autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false"
autofocus></textarea>
<br />
<span style="font: 15px arial, sans-serif;">Output mode: </span>
<select id="optlist" onChange="run_camxes()">
<option>Raw output</option>
<option>Condensed</option>
<option id="default">Prettified</option>
<option>Prettified + selmaho</option>
<option>Prettified + sm ext</option>
<option>Prettified --fm</option>
<option>Prettified --fm + selmaho</option>
<option>Prettified --fm + sm ext</option>
</select>
<select id="morpho-mode" onChange="run_camxes();">
<option>Remove morphology</option>
<option>Keep morphology</option>
</select>
<select id="spaces-display-mode" onChange="run_camxes();">
<option>Hide spaces</option>
<option>Display spaces as '_'</option>
</select>
<span style="padding-left: 24px; text-align: right; font: 15px arial, sans-serif;">Parser: </span>
<select id="parser" onChange="load_parser();">
<option>Camxes: Standard</option>
<option>Camxes: Beta</option>
<option>Camxes: Beta CBM</option>
<option>Camxes: Beta CBM CKT</option>
<option>Camxes: Experimental</option>
<option>Zantufa</option>
<option>Camxes: Hagiwara</option>
</select>
<script>
var parser_list = [
{p: undefined, g: "camxes.peg"},
{p: undefined, g: "camxes-beta.peg"},
{p: undefined, g: "camxes-beta-cbm.peg"},
{p: undefined, g: "camxes-beta-cbm-ckt.peg"},
{p: undefined, g: "camxes-exp.js.peg"},
{p: undefined, g: "https://raw.githubusercontent.com/guskant/gerna_cipra/master/zantufa-1.9999.peg"},
{p: undefined, g: "camxes-mh.js.peg"}
];
</script>
<span style="padding-left: 24px; text-align: right; font-size: 12px;">
<a href="camxes.pegjs" target="_blank" id="peg-link">[ Grammar file ]</a>
</span>
</form>
<div style="display:block; overflow: scroll; max-height:24em; border: solid 1px; padding: 10px; background-color: #DDDDFF;"
height="24em">
<pre style="white-space: pre-wrap;"><code id="parse_result" width="100%" height="100%"> </code></pre>
</div>
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="camxes.js"></script>
<script>parser_list[0].p = camxes;</script>
<script type="text/javascript" src="camxes-beta.js"></script>
<script>parser_list[1].p = camxes;</script>
<script type="text/javascript" src="camxes-beta-cbm.js"></script>
<script>parser_list[2].p = camxes;</script>
<script type="text/javascript" src="camxes-beta-cbm-ckt.js"></script>
<script>parser_list[3].p = camxes;</script>
<script type="text/javascript" src="camxes-exp.js"></script>
<script>parser_list[4].p = camxes;</script>
<script type="text/javascript" src="http://guskant.github.io/gerna_cipra/js/zantufa-1.9999.js"></script>
<script>parser_list[5].p = camxes;</script>
<script type="text/javascript" src="camxes-mh.js"></script>
<script>parser_list[6].p = camxes;</script>
<script type="text/javascript" src="camxes_preproc.js"></script>
<script type="text/javascript" src="camxes_postproc.js"></script>
<script>
document.getElementById("default").defaultSelected = true;
window.onload = load_parser;
function load_parser() {
var i = document.getElementById("parser").selectedIndex;
document.getElementById("peg-link").href = parser_list[i].g;
camxes = parser_list[i].p;
run_camxes();
}
/*
* Binding the function run_camxes() to keyup event on input_textarea by using jQuery
*/
$('#input_textarea').bind( "keyup",
function(e) {
run_camxes();
} );
function run_camxes() {
try {
var input = $('#input_textarea').val();
input = camxes_preprocessing(input);
var result = camxes.parse(input);
} catch (err) {
if (err.location !== undefined) {
var location_info = '\nLocation: [' + err.location.start.offset + ', ' + err.location.end.offset + ']';
location_info += '\n…' + input.substring(err.location.start.offset, err.location.start.offset + 12) + '…';
} else var location_info = "";
$('#parse_result').text(err.toString() + location_info);
return;
}
/* We get the output mode selected in the combobox */
var mode = document.getElementById("optlist").selectedIndex;
/* Get the parse tree processing selected in the second combobox */
if (1 == document.getElementById("morpho-mode").selectedIndex)
mode |= 16;
var b_display_spaces = (1 == document.getElementById("spaces-display-mode").selectedIndex);
if (b_display_spaces) mode |= 8;
/* Postprocessing: if mode == 0, the below function won't modify camxes' output */
result = camxes_postprocessing(result, mode);
// @ camxes_postproc.js
/* Retrieve the result */
$('#parse_result').text(result);
}
</script>
</body>
</html>