|
13 | 13 | "lang-lisp.js", |
14 | 14 | "lang-xq.js", |
15 | 15 | "lang-n.js", |
| 16 | + "lang-r.js", |
16 | 17 | "lang-tcl.js", |
17 | 18 | "lang-tex.js" |
18 | 19 | ]; |
@@ -557,6 +558,161 @@ <h1>TCL_lang</h1> |
557 | 558 | } |
558 | 559 | </pre> |
559 | 560 |
|
| 561 | +<h1>R, S language support</h1> |
| 562 | +<pre class="prettyprint lang-r" id="r_lang"> |
| 563 | +### Example R script for syntax highlighting |
| 564 | + |
| 565 | +# This is a comment |
| 566 | + |
| 567 | +## Valid names |
| 568 | +abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV0123456789._a <- NULL |
| 569 | +.foo_ <- NULL |
| 570 | +._foo <- NULL |
| 571 | + |
| 572 | +## Invalid names |
| 573 | +0abc <- NULL |
| 574 | +.0abc <- NULL |
| 575 | +abc+cde <- NULL |
| 576 | + |
| 577 | +## Reserved Words |
| 578 | +NA |
| 579 | +NA_integer_ |
| 580 | +NA_real_ |
| 581 | +NA_character_ |
| 582 | +NA_complex_ |
| 583 | +NULL |
| 584 | +NaN |
| 585 | +Inf |
| 586 | +## Not reserved |
| 587 | +NULLa <- NULL |
| 588 | +NULL1 <- NULL |
| 589 | +NULL. <- NULL |
| 590 | +NA_foo_ <- NULL |
| 591 | + |
| 592 | +## Numbers |
| 593 | +12345678901 |
| 594 | +123456.78901 |
| 595 | +123e3 |
| 596 | +123E3 |
| 597 | +1.23e-3 |
| 598 | +1.23e3 |
| 599 | +1.23e-3 |
| 600 | +## integer constants |
| 601 | +123L |
| 602 | +1.23L |
| 603 | +## imaginary numbers |
| 604 | +123i |
| 605 | +-123i |
| 606 | +123e4i |
| 607 | +123e-4i |
| 608 | +## Hex numbers |
| 609 | +0xabcdefABCDEF01234 |
| 610 | +0xabcp123 |
| 611 | +0xabcP123 |
| 612 | +## Not hex |
| 613 | +0xg |
| 614 | + |
| 615 | +## Special operators %xyz% |
| 616 | +## %xyz% |
| 617 | +1 %% 2 |
| 618 | +diag(2) %*% diag(2) |
| 619 | +1 %/% 2 |
| 620 | +1 %in% 1:10 |
| 621 | +diag(2) %o% diag(2) |
| 622 | +diag(2) %x% diag(2) |
| 623 | +`%foo bar%` <- function(x, y) x + y |
| 624 | +1 %foo bar% 2 |
| 625 | + |
| 626 | +## Control Structures (3.2) and Function |
| 627 | +## if, else |
| 628 | +if (TRUE) print("foo") else print("bar") |
| 629 | +## For, in |
| 630 | +for(i in 1:5) { |
| 631 | + print(i) |
| 632 | +} |
| 633 | +## While, break |
| 634 | +i <- 1 |
| 635 | +while (TRUE) { |
| 636 | + i <- i + 1 |
| 637 | + if (i > 3) break |
| 638 | +} |
| 639 | +## Repeat |
| 640 | +repeat {1+1} |
| 641 | +## Switch |
| 642 | +x <- 3 |
| 643 | +switch(x, 2+2, mean(1:10), rnorm(5)) |
| 644 | +## Function, dot-dot-dot, return |
| 645 | +foo <- function(...) { |
| 646 | + return(sum(...)) |
| 647 | +} |
| 648 | +# Not keywords |
| 649 | +functiona <- 2 + 2 |
| 650 | +function. <- 2 + 2 |
| 651 | +function1 <- 2 + 2 |
| 652 | + |
| 653 | + |
| 654 | +## Grouping Tokens 10.3.7 |
| 655 | +## Parentheses |
| 656 | +1 + (2 + 3) |
| 657 | +## brackets |
| 658 | +foo <- function(a) { |
| 659 | + a + 1 |
| 660 | +} |
| 661 | + |
| 662 | +## Indexing 10.3.8 |
| 663 | +## [] |
| 664 | +bar <- 1:10 |
| 665 | +bar[3] |
| 666 | +## [[]] |
| 667 | +foo <- list(a=1, b=2, c=3) |
| 668 | +foo[["a"]] |
| 669 | +## $ |
| 670 | +foo$a |
| 671 | +foo$"a" |
| 672 | + |
| 673 | +## Operators |
| 674 | +2 - 2 |
| 675 | +2 + 2 |
| 676 | +2 ~ 2 |
| 677 | +! TRUE |
| 678 | +?"help" |
| 679 | +1:2 |
| 680 | +2 * 2 |
| 681 | +2 / 2 |
| 682 | +2^2 |
| 683 | +2 < 2 |
| 684 | +2 > 2 |
| 685 | +2 == 2 |
| 686 | +2 >= 2 |
| 687 | +2 <= 2 |
| 688 | +2 != 2 |
| 689 | +TRUE & FALSE |
| 690 | +TRUE && FALSE |
| 691 | +TRUE | FALSE |
| 692 | +TRUE || FALSE |
| 693 | +foo <- 2 + 2 |
| 694 | +foo = 2 + 2 |
| 695 | +2 + 2 -> foo |
| 696 | +foo <<- 2 + 2 |
| 697 | +2 + 2 ->> foo |
| 698 | +base:::sum |
| 699 | +base::sum |
| 700 | + |
| 701 | +## Strings |
| 702 | +foo <- "hello, world!" |
| 703 | +foo <- 'hello, world!' |
| 704 | +foo <- "Hello, 'world!" |
| 705 | +foo <- 'Hello, "world!' |
| 706 | +foo <- 'Hello, \'world!\'' |
| 707 | +foo <- "Hello, \"world!\"" |
| 708 | +foo <- "Hello, |
| 709 | +world!" |
| 710 | +foo <- 'Hello, |
| 711 | +world!' |
| 712 | + |
| 713 | +## Backtick strings |
| 714 | +`foo123 +!"bar'baz` <- 2 + 2 |
| 715 | +</pre> |
560 | 716 |
|
561 | 717 | <script type="text/javascript"> |
562 | 718 | /** |
@@ -1037,6 +1193,160 @@ <h1>TCL_lang</h1> |
1037 | 1193 | ' `END`CLO}`END`PLN\n' + |
1038 | 1194 | ' `END`KWDreturn`END`PLN `END`PUN$`END`PLNa\n' + |
1039 | 1195 | '`END`CLO}`END' |
| 1196 | + ), |
| 1197 | + r_lang: ( |
| 1198 | + '`COM### Example R script for syntax highlighting`END`PLN\n' + |
| 1199 | + '\n' + |
| 1200 | + '`END`COM# This is a comment`END`PLN\n' + |
| 1201 | + '\n' + |
| 1202 | + '`END`COM## Valid names`END`PLN\n' + |
| 1203 | + 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV0123456789._a `END`PUN<-`END`PLN `END`LITNULL`END`PLN\n' + |
| 1204 | + '.foo_ `END`PUN<-`END`PLN `END`LITNULL`END`PLN\n' + |
| 1205 | + '._foo `END`PUN<-`END`PLN `END`LITNULL`END`PLN\n' + |
| 1206 | + '\n' + |
| 1207 | + '`END`COM## Invalid names`END`PLN\n' + |
| 1208 | + '`END`LIT0`END`PLNabc `END`PUN<-`END`PLN `END`LITNULL`END`PLN\n' + |
| 1209 | + '`END`LIT.0`END`PLNabc `END`PUN<-`END`PLN `END`LITNULL`END`PLN\n' + |
| 1210 | + 'abc`END`PUN+`END`PLNcde `END`PUN<-`END`PLN `END`LITNULL`END`PLN\n' + |
| 1211 | + '\n' + |
| 1212 | + '`END`COM## Reserved Words`END`PLN\n' + |
| 1213 | + '`END`LITNA`END`PLN\n' + |
| 1214 | + '`END`LITNA_integer_`END`PLN\n' + |
| 1215 | + '`END`LITNA_real_`END`PLN\n' + |
| 1216 | + '`END`LITNA_character_`END`PLN\n' + |
| 1217 | + '`END`LITNA_complex_`END`PLN\n' + |
| 1218 | + '`END`LITNULL`END`PLN\n' + |
| 1219 | + '`END`LITNaN`END`PLN\n' + |
| 1220 | + '`END`LITInf`END`PLN\n' + |
| 1221 | + '`END`COM## Not reserved`END`PLN\n' + |
| 1222 | + 'NULLa `END`PUN<-`END`PLN `END`LITNULL`END`PLN\n' + |
| 1223 | + 'NULL1 `END`PUN<-`END`PLN `END`LITNULL`END`PLN\n' + |
| 1224 | + 'NULL. `END`PUN<-`END`PLN `END`LITNULL`END`PLN\n' + |
| 1225 | + 'NA_foo_ `END`PUN<-`END`PLN `END`LITNULL`END`PLN\n' + |
| 1226 | + '\n' + |
| 1227 | + '`END`COM## Numbers`END`PLN\n' + |
| 1228 | + '`END`LIT12345678901`END`PLN\n' + |
| 1229 | + '`END`LIT123456.78901`END`PLN\n' + |
| 1230 | + '`END`LIT123e3`END`PLN\n' + |
| 1231 | + '`END`LIT123E3`END`PLN\n' + |
| 1232 | + '`END`LIT1.23e-3`END`PLN\n' + |
| 1233 | + '`END`LIT1.23e3`END`PLN\n' + |
| 1234 | + '`END`LIT1.23e-3`END`PLN\n' + |
| 1235 | + '`END`COM## integer constants`END`PLN\n' + |
| 1236 | + '`END`LIT123L`END`PLN\n' + |
| 1237 | + '`END`LIT1.23L`END`PLN\n' + |
| 1238 | + '`END`COM## imaginary numbers`END`PLN\n' + |
| 1239 | + '`END`LIT123i`END`PLN\n' + |
| 1240 | + '`END`LIT-123i`END`PLN\n' + |
| 1241 | + '`END`LIT123e4i`END`PLN\n' + |
| 1242 | + '`END`LIT123e-4i`END`PLN\n' + |
| 1243 | + '`END`COM## Hex numbers`END`PLN\n' + |
| 1244 | + '`END`LIT0xabcdefABCDEF01234`END`PLN\n' + |
| 1245 | + '`END`LIT0xabcp123`END`PLN\n' + |
| 1246 | + '`END`LIT0xabcP123`END`PLN\n' + |
| 1247 | + '`END`COM## Not hex`END`PLN\n' + |
| 1248 | + '`END`LIT0`END`PLNxg\n' + |
| 1249 | + '\n' + |
| 1250 | + '`END`COM## Special operators %xyz%`END`PLN\n' + |
| 1251 | + '`END`COM## %xyz%`END`PLN\n' + |
| 1252 | + '`END`LIT1`END`PLN `END`PUN%%`END`PLN `END`LIT2`END`PLN\n' + |
| 1253 | + 'diag`END`PUN(`END`LIT2`END`PUN)`END`PLN `END`PUN%*%`END`PLN diag`END`PUN(`END`LIT2`END`PUN)`END`PLN\n' + |
| 1254 | + '`END`LIT1`END`PLN `END`PUN%/%`END`PLN `END`LIT2`END`PLN\n' + |
| 1255 | + '`END`LIT1`END`PLN `END`PUN%in%`END`PLN `END`LIT1`END`PUN:`END`LIT10`END`PLN\n' + |
| 1256 | + 'diag`END`PUN(`END`LIT2`END`PUN)`END`PLN `END`PUN%o%`END`PLN diag`END`PUN(`END`LIT2`END`PUN)`END`PLN\n' + |
| 1257 | + 'diag`END`PUN(`END`LIT2`END`PUN)`END`PLN `END`PUN%x%`END`PLN diag`END`PUN(`END`LIT2`END`PUN)`END`PLN\n' + |
| 1258 | + '`END`STR`%foo bar%``END`PLN `END`PUN<-`END`PLN `END`KWDfunction`END`PUN(`END`PLNx`END`PUN,`END`PLN y`END`PUN)`END`PLN x `END`PUN+`END`PLN y\n' + |
| 1259 | + '`END`LIT1`END`PLN `END`PUN%foo bar%`END`PLN `END`LIT2`END`PLN\n' + |
| 1260 | + '\n' + |
| 1261 | + '`END`COM## Control Structures (3.2) and Function`END`PLN\n' + |
| 1262 | + '`END`COM## if, else`END`PLN\n' + |
| 1263 | + '`END`KWDif`END`PLN `END`PUN(`END`LITTRUE`END`PUN)`END`PLN print`END`PUN(`END`STR"foo"`END`PUN)`END`PLN `END`KWDelse`END`PLN print`END`PUN(`END`STR"bar"`END`PUN)`END`PLN\n' + |
| 1264 | + '`END`COM## For, in`END`PLN\n' + |
| 1265 | + '`END`KWDfor`END`PUN(`END`PLNi `END`KWDin`END`PLN `END`LIT1`END`PUN:`END`LIT5`END`PUN)`END`PLN `END`PUN{`END`PLN\n' + |
| 1266 | + ' print`END`PUN(`END`PLNi`END`PUN)`END`PLN\n' + |
| 1267 | + '`END`PUN}`END`PLN\n' + |
| 1268 | + '`END`COM## While, break`END`PLN\n' + |
| 1269 | + 'i `END`PUN<-`END`PLN `END`LIT1`END`PLN\n' + |
| 1270 | + '`END`KWDwhile`END`PLN `END`PUN(`END`LITTRUE`END`PUN)`END`PLN `END`PUN{`END`PLN\n' + |
| 1271 | + ' i `END`PUN<-`END`PLN i `END`PUN+`END`PLN `END`LIT1`END`PLN\n' + |
| 1272 | + ' `END`KWDif`END`PLN `END`PUN(`END`PLNi `END`PUN>`END`PLN `END`LIT3`END`PUN)`END`PLN `END`KWDbreak`END`PLN\n' + |
| 1273 | + '`END`PUN}`END`PLN\n' + |
| 1274 | + '`END`COM## Repeat`END`PLN\n' + |
| 1275 | + '`END`KWDrepeat`END`PLN `END`PUN{`END`LIT1+1`END`PUN}`END`PLN\n' + |
| 1276 | + '`END`COM## Switch`END`PLN\n' + |
| 1277 | + 'x `END`PUN<-`END`PLN `END`LIT3`END`PLN\n' + |
| 1278 | + '`END`KWDswitch`END`PUN(`END`PLNx`END`PUN,`END`PLN `END`LIT2+2`END`PUN,`END`PLN mean`END`PUN(`END`LIT1`END`PUN:`END`LIT10`END`PUN),`END`PLN rnorm`END`PUN(`END`LIT5`END`PUN))`END`PLN\n' + |
| 1279 | + '`END`COM## Function, dot-dot-dot, return`END`PLN\n' + |
| 1280 | + 'foo `END`PUN<-`END`PLN `END`KWDfunction`END`PUN(`END`LIT...`END`PUN)`END`PLN `END`PUN{`END`PLN\n' + |
| 1281 | + ' `END`KWDreturn`END`PUN(`END`PLNsum`END`PUN(`END`LIT...`END`PUN))`END`PLN\n' + |
| 1282 | + '`END`PUN}`END`PLN\n' + |
| 1283 | + '`END`COM# Not keywords`END`PLN\n' + |
| 1284 | + 'functiona `END`PUN<-`END`PLN `END`LIT2`END`PLN `END`PUN+`END`PLN `END`LIT2`END`PLN\n' + |
| 1285 | + 'function. `END`PUN<-`END`PLN `END`LIT2`END`PLN `END`PUN+`END`PLN `END`LIT2`END`PLN\n' + |
| 1286 | + 'function1 `END`PUN<-`END`PLN `END`LIT2`END`PLN `END`PUN+`END`PLN `END`LIT2`END`PLN\n' + |
| 1287 | + '\n' + |
| 1288 | + '\n' + |
| 1289 | + '`END`COM## Grouping Tokens 10.3.7`END`PLN\n' + |
| 1290 | + '`END`COM## Parentheses`END`PLN\n' + |
| 1291 | + '`END`LIT1`END`PLN `END`PUN+`END`PLN `END`PUN(`END`LIT2`END`PLN `END`PUN+`END`PLN `END`LIT3`END`PUN)`END`PLN\n' + |
| 1292 | + '`END`COM## brackets`END`PLN\n' + |
| 1293 | + 'foo `END`PUN<-`END`PLN `END`KWDfunction`END`PUN(`END`PLNa`END`PUN)`END`PLN `END`PUN{`END`PLN\n' + |
| 1294 | + ' a `END`PUN+`END`PLN `END`LIT1`END`PLN\n' + |
| 1295 | + '`END`PUN}`END`PLN\n' + |
| 1296 | + '\n' + |
| 1297 | + '`END`COM## Indexing 10.3.8`END`PLN\n' + |
| 1298 | + '`END`COM## []`END`PLN\n' + |
| 1299 | + 'bar `END`PUN<-`END`PLN `END`LIT1`END`PUN:`END`LIT10`END`PLN\n' + |
| 1300 | + 'bar`END`PUN[`END`LIT3`END`PUN]`END`PLN\n' + |
| 1301 | + '`END`COM## [[]]`END`PLN\n' + |
| 1302 | + 'foo `END`PUN<-`END`PLN list`END`PUN(`END`PLNa`END`PUN=`END`LIT1`END`PUN,`END`PLN b`END`PUN=`END`LIT2`END`PUN,`END`PLN c`END`PUN=`END`LIT3`END`PUN)`END`PLN\n' + |
| 1303 | + 'foo`END`PUN[[`END`STR"a"`END`PUN]]`END`PLN\n' + |
| 1304 | + '`END`COM## $`END`PLN\n' + |
| 1305 | + 'foo`END`PUN$`END`PLNa\n' + |
| 1306 | + 'foo`END`PUN$`END`STR"a"`END`PLN\n' + |
| 1307 | + '\n' + |
| 1308 | + '`END`COM## Operators`END`PLN\n' + |
| 1309 | + '`END`LIT2`END`PLN `END`PUN-`END`PLN `END`LIT2`END`PLN\n' + |
| 1310 | + '`END`LIT2`END`PLN `END`PUN+`END`PLN `END`LIT2`END`PLN\n' + |
| 1311 | + '`END`LIT2`END`PLN `END`PUN~`END`PLN `END`LIT2`END`PLN\n' + |
| 1312 | + '`END`PUN!`END`PLN `END`LITTRUE`END`PLN\n' + |
| 1313 | + '`END`PUN?`END`STR"help"`END`PLN\n' + |
| 1314 | + '`END`LIT1`END`PUN:`END`LIT2`END`PLN\n' + |
| 1315 | + '`END`LIT2`END`PLN `END`PUN*`END`PLN `END`LIT2`END`PLN\n' + |
| 1316 | + '`END`LIT2`END`PLN `END`PUN/`END`PLN `END`LIT2`END`PLN\n' + |
| 1317 | + '`END`LIT2`END`PUN^`END`LIT2`END`PLN\n' + |
| 1318 | + '`END`LIT2`END`PLN `END`PUN<`END`PLN `END`LIT2`END`PLN\n' + |
| 1319 | + '`END`LIT2`END`PLN `END`PUN>`END`PLN `END`LIT2`END`PLN\n' + |
| 1320 | + '`END`LIT2`END`PLN `END`PUN==`END`PLN `END`LIT2`END`PLN\n' + |
| 1321 | + '`END`LIT2`END`PLN `END`PUN>=`END`PLN `END`LIT2`END`PLN\n' + |
| 1322 | + '`END`LIT2`END`PLN `END`PUN<=`END`PLN `END`LIT2`END`PLN\n' + |
| 1323 | + '`END`LIT2`END`PLN `END`PUN!=`END`PLN `END`LIT2`END`PLN\n' + |
| 1324 | + '`END`LITTRUE`END`PLN `END`PUN&`END`PLN `END`LITFALSE`END`PLN\n' + |
| 1325 | + '`END`LITTRUE`END`PLN `END`PUN&&`END`PLN `END`LITFALSE`END`PLN\n' + |
| 1326 | + '`END`LITTRUE`END`PLN `END`PUN|`END`PLN `END`LITFALSE`END`PLN\n' + |
| 1327 | + '`END`LITTRUE`END`PLN `END`PUN||`END`PLN `END`LITFALSE`END`PLN\n' + |
| 1328 | + 'foo `END`PUN<-`END`PLN `END`LIT2`END`PLN `END`PUN+`END`PLN `END`LIT2`END`PLN\n' + |
| 1329 | + 'foo `END`PUN=`END`PLN `END`LIT2`END`PLN `END`PUN+`END`PLN `END`LIT2`END`PLN\n' + |
| 1330 | + '`END`LIT2`END`PLN `END`PUN+`END`PLN `END`LIT2`END`PLN `END`PUN->`END`PLN foo\n' + |
| 1331 | + 'foo `END`PUN<<-`END`PLN `END`LIT2`END`PLN `END`PUN+`END`PLN `END`LIT2`END`PLN\n' + |
| 1332 | + '`END`LIT2`END`PLN `END`PUN+`END`PLN `END`LIT2`END`PLN `END`PUN->>`END`PLN foo\n' + |
| 1333 | + 'base`END`PUN:::`END`PLNsum\n' + |
| 1334 | + 'base`END`PUN::`END`PLNsum\n' + |
| 1335 | + '\n' + |
| 1336 | + '`END`COM## Strings`END`PLN\n' + |
| 1337 | + 'foo `END`PUN<-`END`PLN `END`STR"hello, world!"`END`PLN\n' + |
| 1338 | + 'foo `END`PUN<-`END`PLN `END`STR\'hello, world!\'`END`PLN\n' + |
| 1339 | + 'foo `END`PUN<-`END`PLN `END`STR"Hello, \'world!"`END`PLN\n' + |
| 1340 | + 'foo `END`PUN<-`END`PLN `END`STR\'Hello, "world!\'`END`PLN\n' + |
| 1341 | + 'foo `END`PUN<-`END`PLN `END`STR\'Hello, \\\'world!\\\'\'`END`PLN\n' + |
| 1342 | + 'foo `END`PUN<-`END`PLN `END`STR"Hello, \\"world!\\""`END`PLN\n' + |
| 1343 | + 'foo `END`PUN<-`END`PLN `END`STR"Hello,\n' + |
| 1344 | + 'world!"`END`PLN\n' + |
| 1345 | + 'foo `END`PUN<-`END`PLN `END`STR\'Hello,\n' + |
| 1346 | + 'world!\'`END`PLN\n' + |
| 1347 | + '\n' + |
| 1348 | + '`END`COM## Backtick strings`END`PLN\n' + |
| 1349 | + '`END`STR`foo123 +!"bar\'baz``END`PLN `END`PUN<-`END`PLN `END`LIT2`END`PLN `END`PUN+`END`PLN `END`LIT2`END' |
1040 | 1350 | ) |
1041 | 1351 | }; |
1042 | 1352 | </script> |
|
0 commit comments