Skip to content
This repository was archived by the owner on Apr 22, 2020. It is now read-only.

Commit 73ff5b7

Browse files
author
mikesamuel
committed
language handler for Haskell
1 parent 142f35a commit 73ff5b7

File tree

5 files changed

+223
-21
lines changed

5 files changed

+223
-21
lines changed

CHANGES.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ <h2>14 Jul 2008</h2>
5959
</ul>
6060
<h2>6 Jan 2009</h2>
6161
<ul>
62-
<li>Language handler for Visual Baseic</li>
62+
<li>Language handlers for Visual Basic and Haskell</li>
6363
</ul>
6464
</body>
6565
</html>

README.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ <h3>Which languages does it work for?</h3>
7373
<p>LISPy languages are supported via an extension:
7474
<a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-lisp.js"
7575
><code>lang-lisp.js</code></a>.</p>
76-
<p>And similarly for <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-lua.js"
76+
<p>And similarly for <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-hs"
77+
><code>Haskell</code></a>, <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-lua.js"
7778
><code>LUA</code></a>, <a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-ml.js"
7879
><code>OCAML, SML, F#</code></a>,
7980
<a href="http://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-vb.js"
@@ -84,7 +85,7 @@ <h3>Which languages does it work for?</h3>
8485
><code>Protocol Buffers</code></a>.
8586

8687
<p>If you'd like to add an extension for your favorite language, please
87-
look at lang-lisp.js and file an
88+
look at <tt>src/lang-lisp.js</tt> and file an
8889
<a href="http://code.google.com/p/google-code-prettify/issues/list"
8990
>issue</a> including your language extension, and a testcase.</p>
9091

@@ -95,7 +96,7 @@ <h3>How do I specify which language my code is in?</h3>
9596
<pre class="prettyprint lang-html"
9697
>&lt;pre class=&quot;prettyprint <b>lang-html</b>&quot;&gt;
9798
The lang-* class specifies the language file extensions.
98-
Supported file extensions include
99+
File extensions supported by default include
99100
"c", "cc", "cpp", "cs", "cyc", "java", "bsh", "csh", "sh",
100101
"cv", "py", "perl", "pl", "pm", "rb", "js",
101102
"html", "html", "xhtml", "xml", "xsl".

src/lang-hs.js

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
// Copyright (C) 2009 Google Inc.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
16+
17+
/**
18+
* @fileoverview
19+
* Registers a language handler for Haskell.
20+
*
21+
*
22+
* To use, include prettify.js and this file in your HTML page.
23+
* Then put your code in an HTML tag like
24+
* <pre class="prettyprint lang-hs">(my lisp code)</pre>
25+
* The lang-cl class identifies the language as common lisp.
26+
* This file supports the following language extensions:
27+
* lang-cl - Common Lisp
28+
* lang-el - Emacs Lisp
29+
* lang-lisp - Lisp
30+
* lang-scm - Scheme
31+
*
32+
*
33+
* I used http://www.informatik.uni-freiburg.de/~thiemann/haskell/haskell98-report-html/syntax-iso.html
34+
* as the basis, but ignore the way the ncomment production nests since this
35+
* makes the lexical grammar irregular. It might be possible to support
36+
* ncomments using the lookbehind filter.
37+
*
38+
*
39+
40+
*/
41+
42+
PR.registerLangHandler(
43+
PR.createSimpleLexer(
44+
[
45+
// Whitespace
46+
// whitechar -> newline | vertab | space | tab | uniWhite
47+
// newline -> return linefeed | return | linefeed | formfeed
48+
[PR.PR_PLAIN, /^[\t\n\x0B\x0C\r ]+/, null, '\t\n\x0B\x0C\r '],
49+
// Single line double and single-quoted strings.
50+
// char -> ' (graphic<' | \> | space | escape<\&>) '
51+
// string -> " {graphic<" | \> | space | escape | gap}"
52+
// escape -> \ ( charesc | ascii | decimal | o octal
53+
// | x hexadecimal )
54+
// charesc -> a | b | f | n | r | t | v | \ | " | ' | &
55+
[PR.PR_STRING, /^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,
56+
null, '"'],
57+
[PR.PR_STRING, /^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,
58+
null, "'"],
59+
// decimal -> digit{digit}
60+
// octal -> octit{octit}
61+
// hexadecimal -> hexit{hexit}
62+
// integer -> decimal
63+
// | 0o octal | 0O octal
64+
// | 0x hexadecimal | 0X hexadecimal
65+
// float -> decimal . decimal [exponent]
66+
// | decimal exponent
67+
// exponent -> (e | E) [+ | -] decimal
68+
[PR.PR_LITERAL,
69+
/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,
70+
null, '0123456789']
71+
],
72+
[
73+
// Haskell does not have a regular lexical grammar due to the nested
74+
// ncomment.
75+
// comment -> dashes [ any<symbol> {any}] newline
76+
// ncomment -> opencom ANYseq {ncomment ANYseq}closecom
77+
// dashes -> '--' {'-'}
78+
// opencom -> '{-'
79+
// closecom -> '-}'
80+
[PR.PR_COMMENT, /^(?:(?:--+(?:[^\r\n\x0C_:\"\'\(\),;\[\]`\{\}][^\r\n\x0C_]*)?(?=[\x0C\r\n]|$))|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],
81+
// reservedid -> case | class | data | default | deriving | do
82+
// | else | if | import | in | infix | infixl | infixr
83+
// | instance | let | module | newtype | of | then
84+
// | type | where | _
85+
[PR.PR_KEYWORD, /^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/, null],
86+
// qvarid -> [ modid . ] varid
87+
// qconid -> [ modid . ] conid
88+
// varid -> (small {small | large | digit | ' })<reservedid>
89+
// conid -> large {small | large | digit | ' }
90+
// modid -> conid
91+
// small -> ascSmall | uniSmall | _
92+
// ascSmall -> a | b | ... | z
93+
// uniSmall -> any Unicode lowercase letter
94+
// large -> ascLarge | uniLarge
95+
// ascLarge -> A | B | ... | Z
96+
// uniLarge -> any uppercase or titlecase Unicode letter
97+
[PR.PR_PLAIN, /^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],
98+
// matches the symbol production
99+
[PR.PR_PUNCTUATION, /^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]
100+
]),
101+
['hs']);

src/lang-vb.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ PR.registerLangHandler(
3737
[PR.PR_PLAIN, /^[\t\n\r \xA0\u2028\u2029]+/, null, '\t\n\r \xA0\u2028\u2029'],
3838
// A double quoted string with quotes escaped by doubling them.
3939
// A single character can be suffixed with C.
40-
[PR.PR_STRING, /^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})[\"\u201C\u201D][cC]|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*[\"\u201C\u201D])/, null,
40+
[PR.PR_STRING, /^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D][cC]|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/, null,
4141
'"\u201C\u201D'],
4242
// A comment starts with a single quote and runs until the end of the
4343
// line.

tests/prettify_test.html

Lines changed: 116 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
<title>Code Prettifier</title>
55
<script src="../src/prettify.js" type="text/javascript"
66
onerror="alert('Error: failed to load ' + this.src)"></script>
7+
<script src="../src/lang-hs.js" type="text/javascript"
8+
onerror="alert('Error: failed to load ' + this.src)"></script>
79
<script src="../src/lang-lisp.js" type="text/javascript"
810
onerror="alert('Error: failed to load ' + this.src)"></script>
911
<script src="../src/lang-lua.js" type="text/javascript"
@@ -888,6 +890,36 @@ <h1>Bug 27 - VBScript w/ language specified</h1>
888890
i = (0, 123, 45L, &amp;HA0I, &amp;O177S)
889891
</pre>
890892

893+
<h1>Bug 30 - Haskell w/ language specified</h1>
894+
<pre class="prettyprint lang-hs" id="issue30">
895+
-- A comment
896+
Not(--"a comment&quot;)
897+
Also.not(--(A.comment))
898+
899+
module Foo(bar) where
900+
import Blah
901+
import BlahBlah(blah)
902+
import Monads(Exception(..), FIO(..),unFIO,handle,runFIO,fixFIO,fio,
903+
write,writeln,HasNext(..),HasOutput(..))
904+
905+
{- nested comments
906+
- don't work {-yet-} -}
907+
instance Thingy Foo where
908+
a = b
909+
910+
data Foo :: (* -> * -> *) -&gt; * > * -> * where
911+
Nil :: Foo a b c
912+
Cons :: a b c -> Foo abc -> Foo a b c
913+
914+
str = "Foo\\Bar"
915+
char = 'x'
916+
Not.A.Char = 'too long' -- Don't barf. Show that 't is a lexical error.
917+
918+
(ident, ident', Fo''o.b'ar)
919+
920+
(0, 12, 0x45, 0xA7, 0o177, 0O377, 0.1, 1.0, 1e3, 0.5E-3, 1.0E+45)
921+
</pre>
922+
891923
<h1>Bug 33 - OCaml and F#</h1>
892924
<pre class="prettyprint lang-ml" id="issue33">
893925
(*
@@ -1982,30 +2014,45 @@ <h1>Protocol Buffers</h1>
19822014
'`KWDImports`END`PLN System<br>' +
19832015
'<br>' +
19842016
'`END`KWDClass`END`PLN [class]<br>' +
1985-
'&nbsp; &nbsp; `END`KWDShared`END`PLN `END`KWDSub`END`PLN [shared]`END`PUN(`END`KWDByVal`END`PLN [boolean] `END`KWDAs`END`PLN `END`KWDBoolean`END`PUN)`END`PLN<br>' +
1986-
'&nbsp; &nbsp; &nbsp; &nbsp; `END`KWDIf`END`PLN [boolean] `END`KWDThen`END`PLN<br>' +
1987-
'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"true"`END`PUN)`END`PLN<br>' +
2017+
'&nbsp; &nbsp; `END`KWDShared`END`PLN `END`KWDSub`END`PLN [shared]`END' +
2018+
'`PUN(`END`KWDByVal`END`PLN [boolean] `END`KWDAs`END`PLN `END' +
2019+
'`KWDBoolean`END`PUN)`END`PLN<br>' +
2020+
'&nbsp; &nbsp; &nbsp; &nbsp; `END`KWDIf`END`PLN [boolean] `END' +
2021+
'`KWDThen`END`PLN<br>' +
2022+
'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END' +
2023+
'`PLNWriteLine`END`PUN(`END`STR"true"`END`PUN)`END`PLN<br>' +
19882024
'&nbsp; &nbsp; &nbsp; &nbsp; `END`KWDElse`END`PLN<br>' +
1989-
'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"false"`END`PUN)`END`PLN<br>' +
1990-
'&nbsp; &nbsp; &nbsp; &nbsp; `END`KWDEnd`END`PLN `END`KWDIf`END`PLN<br>' +
2025+
'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END' +
2026+
'`PLNWriteLine`END`PUN(`END`STR"false"`END`PUN)`END`PLN<br>' +
2027+
'&nbsp; &nbsp; &nbsp; &nbsp; `END`KWDEnd`END`PLN `END`KWDIf`END' +
2028+
'`PLN<br>' +
19912029
'&nbsp; &nbsp; `END`KWDEnd`END`PLN `END`KWDSub`END`PLN<br>' +
19922030
'`END`KWDEnd`END`PLN `END`KWDClass`END`PLN<br>' +
19932031
'<br>' +
19942032
'`END`KWDModule`END`PLN [module]<br>' +
19952033
'&nbsp; &nbsp; `END`KWDSub`END`PLN Main`END`PUN()`END`PLN<br>' +
1996-
'&nbsp; &nbsp; &nbsp; &nbsp; [class]`END`PUN.`END`PLN[shared]`END`PUN(`END`LITTrue`END`PUN)`END`PLN<br>' +
2034+
'&nbsp; &nbsp; &nbsp; &nbsp; [class]`END`PUN.`END`PLN[shared]`END' +
2035+
'`PUN(`END`LITTrue`END`PUN)`END`PLN<br>' +
19972036
'<br>' +
1998-
'&nbsp; &nbsp; &nbsp; &nbsp; `END`COM\' This prints out: \".`END`PLN<br>' +
1999-
'&nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR""""`END`PUN)`END`PLN<br>' +
2037+
'&nbsp; &nbsp; &nbsp; &nbsp; `END`COM\' This prints out: \".`END' +
2038+
'`PLN<br>' +
2039+
'&nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END`PLNWriteLine`END' +
2040+
'`PUN(`END`STR""""`END`PUN)`END`PLN<br>' +
20002041
'<br>' +
2001-
'&nbsp; &nbsp; &nbsp; &nbsp; `END`COM\' This prints out: a"b.`END`PLN<br>' +
2002-
'&nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"a""b"`END`PUN)`END`PLN<br>' +
2042+
'&nbsp; &nbsp; &nbsp; &nbsp; `END`COM\' This prints out: a"b.`END' +
2043+
'`PLN<br>' +
2044+
'&nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END`PLNWriteLine`END' +
2045+
'`PUN(`END`STR"a""b"`END`PUN)`END`PLN<br>' +
20032046
'<br>' +
2004-
'&nbsp; &nbsp; &nbsp; &nbsp; `END`COM\' This prints out: a.`END`PLN<br>' +
2005-
'&nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR"a"c`END`PUN)`END`PLN<br>' +
2047+
'&nbsp; &nbsp; &nbsp; &nbsp; `END`COM\' This prints out: a.`END' +
2048+
'`PLN<br>' +
2049+
'&nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END`PLNWriteLine`END' +
2050+
'`PUN(`END`STR"a"c`END`PUN)`END`PLN<br>' +
20062051
'<br>' +
2007-
'&nbsp; &nbsp; &nbsp; &nbsp; `END`COM\' This prints out: ".`END`PLN<br>' +
2008-
'&nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END`PLNWriteLine`END`PUN(`END`STR""""c`END`PUN)`END`PLN<br>' +
2052+
'&nbsp; &nbsp; &nbsp; &nbsp; `END`COM\' This prints out: ".`END' +
2053+
'`PLN<br>' +
2054+
'&nbsp; &nbsp; &nbsp; &nbsp; Console`END`PUN.`END`PLNWriteLine`END' +
2055+
'`PUN(`END`STR""""c`END`PUN)`END`PLN<br>' +
20092056
'&nbsp; &nbsp; `END`KWDEnd`END`PLN `END`KWDSub`END`PLN<br>' +
20102057
'`END`KWDEnd`END`PLN `END`KWDModule`END`PLN<br>' +
20112058
'<br>' +
@@ -2018,10 +2065,63 @@ <h1>Protocol Buffers</h1>
20182065
'd `END`PUN=`END`PLN `END`LIT# 13:45:39PM #`END`PLN<br>' +
20192066
'<br>' +
20202067
'`END`KWDDim`END`PLN n `END`KWDAs`END`PLN Float<br>' +
2021-
'n `END`PUN=`END`PLN `END`PUN(`END`LIT0.0`END`PUN,`END`PLN `END`LIT.99F`END`PUN,`END`PLN `END`LIT1.0E-2D`END`PUN,`END`PLN `END`LIT1.0E+3D`END`PUN,`END`PLN `END`LIT.5E4`END`PUN,`END`PLN `END`LIT1E3R`END`PUN,`END`PLN `END`LIT4D`END`PUN)`END`PLN<br>' +
2068+
'n `END`PUN=`END`PLN `END`PUN(`END`LIT0.0`END`PUN,`END`PLN `END' +
2069+
'`LIT.99F`END`PUN,`END`PLN `END`LIT1.0E-2D`END`PUN,`END`PLN `END' +
2070+
'`LIT1.0E+3D`END`PUN,`END`PLN `END`LIT.5E4`END`PUN,`END`PLN `END' +
2071+
'`LIT1E3R`END`PUN,`END`PLN `END`LIT4D`END`PUN)`END`PLN<br>' +
20222072
'<br>' +
20232073
'`END`KWDDim`END`PLN i `END`KWDAs`END`PLN `END`KWDInteger`END`PLN<br>' +
2024-
'i `END`PUN=`END`PLN `END`PUN(`END`LIT0`END`PUN,`END`PLN `END`LIT123`END`PUN,`END`PLN `END`LIT45L`END`PUN,`END`PLN `END`LIT&amp;HA0I`END`PUN,`END`PLN `END`LIT&amp;O177S`END`PUN)`END'),
2074+
'i `END`PUN=`END`PLN `END`PUN(`END`LIT0`END`PUN,`END`PLN `END' +
2075+
'`LIT123`END`PUN,`END`PLN `END`LIT45L`END`PUN,`END`PLN `END' +
2076+
'`LIT&amp;HA0I`END`PUN,`END`PLN `END`LIT&amp;O177S`END`PUN)`END'),
2077+
issue30: (
2078+
'`COM-- A comment`END`PLN<br>' +
2079+
'Not`END`PUN(--`END`STR"a comment"`END`PUN)`END`PLN<br>' +
2080+
'Also.not`END`PUN(--(`END`PLNA.comment`END`PUN))`END`PLN<br>' +
2081+
'<br>' +
2082+
'`END`KWDmodule`END`PLN Foo`END`PUN(`END`PLNbar`END`PUN)`END`PLN `END' +
2083+
'`KWDwhere`END`PLN<br>' +
2084+
'`END`KWDimport`END`PLN Blah<br>' +
2085+
'`END`KWDimport`END`PLN BlahBlah`END`PUN(`END`PLNblah`END`PUN)`END' +
2086+
'`PLN<br>' +
2087+
'`END`KWDimport`END`PLN Monads`END`PUN(`END`PLNException`END' +
2088+
'`PUN(..),`END`PLN FIO`END`PUN(..),`END`PLNunFIO`END`PUN,`END' +
2089+
'`PLNhandle`END`PUN,`END`PLNrunFIO`END`PUN,`END`PLNfixFIO`END' +
2090+
'`PUN,`END`PLNfio`END`PUN,`END`PLN<br>' +
2091+
'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; write`END`PUN,`END' +
2092+
'`PLNwriteln`END`PUN,`END`PLNHasNext`END`PUN(..),`END' +
2093+
'`PLNHasOutput`END`PUN(..))`END`PLN<br>' +
2094+
'<br>' +
2095+
'`END`COM{- nested comments<br>' +
2096+
'&nbsp;- don\'t work {-yet-}`END`PLN `END`PUN-}`END`PLN<br>' +
2097+
'`END`KWDinstance`END`PLN Thingy Foo `END`KWDwhere`END`PLN<br>' +
2098+
'&nbsp; a `END`PUN=`END`PLN b<br>' +
2099+
'<br>' +
2100+
'`END`KWDdata`END`PLN Foo `END`PUN::`END`PLN `END`PUN(*`END`PLN `END' +
2101+
'`PUN-&gt;`END`PLN `END`PUN*`END`PLN `END`PUN-&gt;`END`PLN `END' +
2102+
'`PUN*)`END`PLN `END`PUN-&gt;`END`PLN `END`PUN*`END`PLN `END' +
2103+
'`PUN&gt;`END`PLN `END`PUN*`END`PLN `END`PUN-&gt;`END`PLN `END' +
2104+
'`PUN*`END`PLN `END`KWDwhere`END`PLN<br>' +
2105+
'&nbsp; Nil `END`PUN::`END`PLN Foo a b c<br>' +
2106+
'&nbsp; Cons `END`PUN::`END`PLN a b c `END`PUN-&gt;`END' +
2107+
'`PLN Foo abc `END`PUN-&gt;`END`PLN Foo a b c<br>' +
2108+
'<br>' +
2109+
'str `END`PUN=`END`PLN `END`STR"Foo\\\\Bar"`END`PLN<br>' +
2110+
'char `END`PUN=`END`PLN `END`STR\'x\'`END`PLN<br>' +
2111+
'Not.A.Char `END`PUN=`END`PLN `END`STR\'t`END`PLNoo long\' &nbsp;`END' +
2112+
'`COM-- Don\'t barf. &nbsp;Show that \'t is a lexical error.`END' +
2113+
'`PLN<br>' +
2114+
'<br>' +
2115+
'`END`PUN(`END`PLNident`END`PUN,`END`PLN ident\'`END`PUN,`END' +
2116+
'`PLN Fo\'\'o.b\'ar`END`PUN)`END`PLN<br>' +
2117+
'<br>' +
2118+
'`END`PUN(`END`LIT0`END`PUN,`END`PLN `END`LIT12`END`PUN,`END`PLN `END' +
2119+
'`LIT0x45`END`PUN,`END`PLN `END`LIT0xA7`END`PUN,`END`PLN `END' +
2120+
'`LIT0o177`END`PUN,`END`PLN `END`LIT0O377`END`PUN,`END`PLN `END' +
2121+
'`LIT0.1`END`PUN,`END`PLN `END`LIT1.0`END`PUN,`END`PLN `END' +
2122+
'`LIT1e3`END`PUN,`END`PLN `END`LIT0.5E-3`END`PUN,`END`PLN `END' +
2123+
'`LIT1.0E+45`END`PUN)`END'
2124+
),
20252125
issue33: (
20262126
'`COM(*<br>' +
20272127
'&nbsp;* Print the 10th fibonacci number<br>' +

0 commit comments

Comments
 (0)