javascript.st - enscript - GNU Enscript
(HTM) git clone git://thinkerwim.org/enscript.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
javascript.st (2856B)
---
1 /**
2 * Name: javascript
3 * Description: JavaScript language.
4 * Author: Markku Rossi <mtr@iki.fi>
5 */
6
7 from_vrml = 0;
8
9 state javascript_string extends Highlight
10 {
11 /\\\\./ {
12 language_print ($0);
13 }
14 /[\']/ {
15 language_print ($0);
16 return;
17 }
18 }
19
20 state javascript_internal extends Highlight
21 {
22 /* Comments. */
23 /\/\*/ {
24 comment_face (true);
25 language_print ($0);
26 call (c_comment);
27 comment_face (false);
28 }
29 /\/\// {
30 comment_face (true);
31 language_print ($0);
32 call (eat_one_line);
33 comment_face (false);
34 }
35
36 /* String constants. */
37 /\"/ {
38 if (from_vrml)
39 {
40 reference_face (true);
41 language_print ($0);
42 reference_face (false);
43 return;
44 }
45 string_face (true);
46 language_print ($0);
47 call (c_string);
48 string_face (false);
49 }
50
51 /* '' strings. */
52 /[\']/ {
53 string_face (true);
54 language_print ($0);
55 call (javascript_string);
56 string_face (false);
57 }
58
59 /* Function definitions. */
60 /\b(function)([ \t]+)([A-Za-z\$_][A-Za-z\$_0-9]*)([ \t]*\()/ {
61 keyword_face (true);
62 language_print ($1);
63 keyword_face (false);
64
65 language_print ($2);
66
67 function_name_face (true);
68 language_print ($3);
69 function_name_face (false);
70
71 language_print ($4);
72 }
73
74 /* Keywords.
75 (build-re '(
76 abstract boolean break byte case catch char class const continue
77 default do double else extends false final finally float for function
78 goto if implements import in instanceof int interface long native new
79 null package private protected public return short static super switch
80 synchronized this throw throws transient true try var void while with
81 ))
82 */
83 /\b(abstract|b(oolean|reak|yte)|c(a(se|tch)|har|lass|on(st|tinue))\
84 |d(efault|o(|uble))|e(lse|xtends)|f(alse|inal(|ly)|loat|or|unction)\
85 |goto|i(f|mp(lements|ort)|n(|stanceof|t(|erface)))|long\
86 |n(ative|ew|ull)|p(ackage|r(ivate|otected)|ublic)|return\
87 |s(hort|tatic|uper|witch|ynchronized)|t(h(is|row(|s))|r(ansient|ue|y))\
88 |v(ar|oid)|w(hile|ith))\b/ {
89 keyword_face (true);
90 language_print ($0);
91 keyword_face (false);
92 }
93
94 /* Built-in objects.
95 (build-re '(Math Date eval parseInt parseFloat))
96 */
97 /\b(Date|Math|eval|parse(Float|Int))\b/ {
98 builtin_face (true);
99 language_print ($0);
100 builtin_face (false);
101 }
102
103 /* Terminator for nested JavaScript programs. */
104 /<\/[sS][cC][rR][iI][pP][tT]>/ {
105 from_html_terminator = $0;
106 return;
107 }
108
109 /* Regexes */
110 /\// {
111 string_face (true);
112 language_print ($0);
113 call (javascript_regex);
114 string_face (false);
115 }
116 }
117
118 state javascript_regex {
119 /\\\\\\\// {
120 language_print ($0);
121 }
122 /\\\// {
123 language_print ($0);
124 return;
125 }
126 }
127
128 state javascript extends HighlightEntry
129 {
130 BEGIN {
131 call (javascript_internal);
132 return;
133 }
134 }
135
136
137 /*
138 Local variables:
139 mode: c
140 End:
141 */