summaryrefslogtreecommitdiff
path: root/static-files/journal/prettify/lang-lisp.js
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2011-03-12 15:45:53 +0100
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2011-03-12 15:45:53 +0100
commit9c1d0dd3041f1a062f2d9708c0dc6eaa7f089c80 (patch)
tree17e3f101f557ae049454038a7d1a1a38feb5f208 /static-files/journal/prettify/lang-lisp.js
parent7d9f81622846a5d775703b765819d887f23dd29c (diff)
Calculate the number of comments for each article. Add Google Code Prettify.
Diffstat (limited to 'static-files/journal/prettify/lang-lisp.js')
-rw-r--r--static-files/journal/prettify/lang-lisp.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/static-files/journal/prettify/lang-lisp.js b/static-files/journal/prettify/lang-lisp.js
new file mode 100644
index 0000000..60cf97d
--- /dev/null
+++ b/static-files/journal/prettify/lang-lisp.js
@@ -0,0 +1,93 @@
+// Copyright (C) 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+
+/**
+ * @fileoverview
+ * Registers a language handler for Common Lisp and related languages.
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ * <pre class="prettyprint lang-lisp">(my lisp code)</pre>
+ * The lang-cl class identifies the language as common lisp.
+ * This file supports the following language extensions:
+ * lang-cl - Common Lisp
+ * lang-el - Emacs Lisp
+ * lang-lisp - Lisp
+ * lang-scm - Scheme
+ *
+ *
+ * I used http://www.devincook.com/goldparser/doc/meta-language/grammar-LISP.htm
+ * as the basis, but added line comments that start with ; and changed the atom
+ * production to disallow unquoted semicolons.
+ *
+ * "Name" = 'LISP'
+ * "Author" = 'John McCarthy'
+ * "Version" = 'Minimal'
+ * "About" = 'LISP is an abstract language that organizes ALL'
+ * | 'data around "lists".'
+ *
+ * "Start Symbol" = [s-Expression]
+ *
+ * {Atom Char} = {Printable} - {Whitespace} - [()"\'']
+ *
+ * Atom = ( {Atom Char} | '\'{Printable} )+
+ *
+ * [s-Expression] ::= [Quote] Atom
+ * | [Quote] '(' [Series] ')'
+ * | [Quote] '(' [s-Expression] '.' [s-Expression] ')'
+ *
+ * [Series] ::= [s-Expression] [Series]
+ * |
+ *
+ * [Quote] ::= '' !Quote = do not evaluate
+ * |
+ *
+ *
+ * I used <a href="http://gigamonkeys.com/book/">Practical Common Lisp</a> as
+ * the basis for the reserved word list.
+ *
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR.registerLangHandler(
+ PR.createSimpleLexer(
+ [
+ ['opn', /^\(|\[/, null, ''],
+ ['clo', /^\)|\]/, null, ''],
+ // A line comment that starts with ;
+ [PR.PR_COMMENT, /^;[^\r\n]*/, null, ';'],
+ // Whitespace
+ [PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
+ // A double quoted, possibly multi-line, string.
+ [PR.PR_STRING, /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"']
+ ],
+ [
+ [PR.PR_KEYWORD, /^(?:block|c[ad]+r|catch|cons|defun|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind|loop|with--*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?|define--*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?|for|in|from|to|fn|defn|def)\b/, null],
+ [PR.PR_LITERAL,
+ /^[+\-]?(?:0x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],
+ // A single quote or a colon possibly followed by a word that optionally ends with
+ // = ! or ?.
+ [PR.PR_LITERAL,
+ /^(\'|\:)(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],
+ // A word that optionally ends with = ! or ?.
+ [PR.PR_PLAIN,
+ /^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],
+ // A printable non-space non-special character
+ [PR.PR_PUNCTUATION, /^[^\w\t\n\r \xA0\"\\\';]+/]
+ ]),
+ ['cl', 'el', 'lisp', 'scm']);