fortran.jsf.in (13075B)
1 # JOE syntax highlight file for FORTRAN 2 # Heavily improved by: Malte Thoma (thoma@uni-muenster.de) 3 4 # Bugs: 5 # in: 4. eq. -- does not recognize the .eq. 6 # needs more intrinsics. 7 8 =Idle 9 =Comment green 10 =Constant cyan 11 =Type red 12 =Keyword bold 13 =Intrinsic magenta 14 =Preproc blue 15 =Operator magenta 16 =Bad bold red 17 18 # First character of line... 19 20 :reset Idle 21 * idle noeat 22 "\n" reset 23 "cC*" comment recolor=-1 24 "#" pre recolor=-1 25 26 :pre Preproc 27 * pre 28 "\n" reset 29 30 :comment Comment 31 * comment 32 "\n" reset 33 34 :idle Idle 35 * idle 36 "!" comment recolor=-1 37 "\n" reset 38 "0-9" first_number recolor=-1 39 "." have_dot 40 "'" string recolor=-1 41 "a-zA-Z_" ident buffer 42 43 :first_number Constant 44 * idle noeat 45 "0-9" first_number 46 "." second_start 47 "eEdD" epart 48 49 :have_dot Constant 50 * idle recolor=-2 noeat 51 "0-9" second_number recolor=-2 52 " \ta-zA-Z" operator1 noeat recolor=-2 53 54 # Color the left . 55 56 :operator1 Operator 57 * operator buffer noeat 58 " \t" operator1 59 60 # Default color is Idle for unknown operator 61 62 :operator Idle 63 * idle noeat 64 "a-zA-Z" operator 65 ". \t" unknown noeat istrings 66 "gt" op 67 "ge" op 68 "eq" op 69 "le" op 70 "ne" op 71 "lt" op 72 "and" op 73 "or" op 74 "llt" op 75 "lle" op 76 "lgt" op 77 "lge" op 78 "not" op 79 "false" const 80 "true" const 81 done 82 83 # Eat the right . 84 85 :unknown Operator 86 * idle 87 " \t" unknown 88 89 :op Operator 90 * idle 91 " \t" op 92 93 :const Constant 94 * idle 95 "." op noeat 96 " \t" const 97 98 # For distrinuishing between 4.e1 and 4.eq. 99 100 :second_start Constant 101 * idle noeat 102 "a-zA-Z" operator1 noeat recolor=-2 103 "dD" epart 104 "eE" epart1 105 "0-9" second_number 106 107 :epart1 Constant 108 * idle noeat 109 "q" epart2 110 "0-9+\-" enum 111 112 :epart2 Idle 113 * idle noeat 114 ". \t" op noeat recolor=-4 115 116 :second_number Constant 117 * idle noeat 118 "eEdD" epart 119 "0-9" second_number 120 121 :epart Constant 122 * idle noeat 123 "0-9+\-" enum 124 125 :enum Constant 126 * idle noeat 127 "0-9" enum 128 129 :string Constant 130 * string 131 "\n" reset 132 "'" maybe_end_string 133 134 :maybe_end_string Constant 135 * idle noeat 136 "'" string 137 138 :ident Idle 139 * idle noeat istrings 140 "allocate" kw 141 "allocatable" kw 142 "assign" kw 143 "assignment" kw 144 "backspace" kw 145 "block" kw 146 "blockdata" kw 147 "call" kw 148 "case" kw 149 "character" type 150 "close" kw 151 "common" kw 152 "complex" type 153 "contains" kw 154 "continue" kw 155 "cycle" kw 156 "data" kw 157 "deallocate" kw 158 "default" kw 159 "dimension" type 160 "do" kw 161 "double" type 162 "doubleprecision" type 163 "elemental" kw 164 "else" kw 165 "elseif" kw 166 "elsewhere" kw 167 "end" kw 168 "endblock" kw 169 "endblockdata" kw 170 "enddo" kw 171 "endfile" kw 172 "endforall" kw 173 "endif" kw 174 "endinterface" kw 175 "endmodule" kw 176 "endselect" kw 177 "endtype" kw 178 "endwhere" kw 179 "entry" kw 180 "equivalence" kw 181 "exit" kw 182 "external" kw 183 "forall" kw 184 "format" kw 185 "function" kw 186 "go" kw 187 "goto" kw 188 "if" kw 189 "implicit" kw 190 "implicit" kw 191 "in" kw 192 "inout" kw 193 "inquire" kw 194 "integer" type 195 "intent" kw 196 "interface" kw 197 "intrinsic" kw 198 "iolength" kw 199 "kind" kw 200 "logical" type 201 "module" kw 202 "namelist" kw 203 "none" kw 204 "nullify" kw 205 "only" kw 206 "open" kw 207 "optional" kw 208 "out" kw 209 "parameter" kw 210 "pause" kw 211 "pointer" kw 212 "precision" type 213 "print" kw 214 "private" kw 215 "procedure" kw 216 "program" kw 217 "publc" kw 218 "public" kw 219 "pure" kw 220 "read" kw 221 "real" type 222 "recursive" kw 223 "result" kw 224 "return" kw 225 "rewind" kw 226 "save" kw 227 "select" kw 228 "selectcase" kw 229 "sequence" kw 230 "stat" kw 231 "stop" kw 232 "subroutine" kw 233 "target" kw 234 "then" kw 235 "to" kw 236 "type" kw 237 "use" kw 238 "where" kw 239 "while" kw 240 "write" kw 241 done 242 "(" idle noeat istrings 243 # Keywords have to be duplicated here... 244 "allocate" kw 245 "allocatable" kw 246 "assign" kw 247 "assignment" kw 248 "backspace" kw 249 "block" kw 250 "blockdata" kw 251 "call" kw 252 "case" kw 253 "character" kw 254 "close" kw 255 "common" kw 256 "complex" kw 257 "contains" kw 258 "continue" kw 259 "cycle" kw 260 "data" kw 261 "deallocate" kw 262 "default" kw 263 "dimension" type 264 "do" kw 265 "double" type 266 "doubleprecision" type 267 "elemental" kw 268 "else" kw 269 "elseif" kw 270 "elsewhere" kw 271 "end" kw 272 "endblock" kw 273 "endblockdata" kw 274 "enddo" kw 275 "endfile" kw 276 "endforall" kw 277 "endif" kw 278 "endinterface" kw 279 "endmodule" kw 280 "endselect" kw 281 "endtype" kw 282 "endwhere" kw 283 "entry" kw 284 "equivalence" kw 285 "exit" kw 286 "external" kw 287 "forall" kw 288 "format" kw 289 "function" kw 290 "go" kw 291 "goto" kw 292 "if" kw 293 "implicit" kw 294 "implicit" kw 295 "in" kw 296 "inout" kw 297 "inquire" kw 298 "integer" kw 299 "intent" kw 300 "interface" kw 301 "intrinsic" kw 302 "iolength" kw 303 "kind" kw 304 "logical" type 305 "module" kw 306 "namelist" kw 307 "none" kw 308 "nullify" kw 309 "only" kw 310 "open" kw 311 "optional" kw 312 "out" kw 313 "parameter" kw 314 "pause" kw 315 "pointer" kw 316 "precision" type 317 "print" kw 318 "private" kw 319 "procedure" kw 320 "program" kw 321 "publc" kw 322 "public" kw 323 "pure" kw 324 "read" kw 325 "real" kw 326 "recursive" kw 327 "result" kw 328 "return" kw 329 "rewind" kw 330 "save" kw 331 "select" kw 332 "selectcase" kw 333 "sequence" kw 334 "stat" kw 335 "stop" kw 336 "subroutine" kw 337 "target" kw 338 "then" kw 339 "to" kw 340 "type" kw 341 "use" kw 342 "where" kw 343 "while" kw 344 "write" kw 345 # Here are instrinsics 346 "abs" intrinsic 347 "achar" intrinsic 348 "acos" intrinsic 349 "adjustl" intrinsic 350 "adjustr" intrinsic 351 "aimag" intrinsic 352 "aint" intrinsic 353 "all" intrinsic 354 "allocated" intrinsic 355 "alog" intrinsic 356 "alog10" intrinsic 357 "anint" intrinsic 358 "any" intrinsic 359 "asin" intrinsic 360 "associated" intrinsic 361 "atan" intrinsic 362 "atan2" intrinsic 363 "bit_size" intrinsic 364 "btest" intrinsic 365 "ceiling" intrinsic 366 "char" intrinsic 367 "cmplx" intrinsic 368 "conjg" intrinsic 369 "cos" intrinsic 370 "cosh" intrinsic 371 "count" intrinsic 372 "cpu_time" intrinsic 373 "cshift" intrinsic 374 "date_and_time" intrinsic 375 "dble" intrinsic 376 "digits" intrinsic 377 "dim" intrinsic 378 "dot_product" intrinsic 379 "dprod" intrinsic 380 "eoshift" intrinsic 381 "epsilon" intrinsic 382 "exp" intrinsic 383 "exponent" intrinsic 384 "false" intrinsic 385 "floor" intrinsic 386 "float" intrinsic 387 "fraction" intrinsic 388 "huge" intrinsic 389 "iachar" intrinsic 390 "iand" intrinsic 391 "ibclr" intrinsic 392 "ibits" intrinsic 393 "ibset" intrinsic 394 "ichar" intrinsic 395 "ieor" intrinsic 396 "index" intrinsic 397 "int" intrinsic 398 "int2" intrinsic 399 "ior" intrinsic 400 "ishft" intrinsic 401 "ishftc" intrinsic 402 "kind" intrinsic 403 "lbound" intrinsic 404 "len" intrinsic 405 "len_trim" intrinsic 406 "lge" intrinsic 407 "lgt" intrinsic 408 "lle" intrinsic 409 "llt" intrinsic 410 "log" intrinsic 411 "log10" intrinsic 412 "matmul" intrinsic 413 "max" intrinsic 414 "maxexponent" intrinsic 415 "maxloc" intrinsic 416 "maxval" intrinsic 417 "merge" intrinsic 418 "min" intrinsic 419 "minexponent" intrinsic 420 "minloc" intrinsic 421 "minval" intrinsic 422 "mod" intrinsic 423 "modulo" intrinsic 424 "mvbits" intrinsic 425 "nearest" intrinsic 426 "nint" intrinsic 427 "not" intrinsic 428 "null" intrinsic 429 "pack" intrinsic 430 "present" intrinsic 431 "product" intrinsic 432 "radix" intrinsic 433 "random_number" intrinsic 434 "random_seed" intrinsic 435 "range" intrinsic 436 "real" intrinsic 437 "repeat" intrinsic 438 "reshape" intrinsic 439 "rrspacing" intrinsic 440 "scale" intrinsic 441 "scan" intrinsic 442 "selected_int_kind" intrinsic 443 "selected_real_kind" intrinsic 444 "set_exponent" intrinsic 445 "shape" intrinsic 446 "sign" intrinsic 447 "sin" intrinsic 448 "sinh" intrinsic 449 "size" intrinsic 450 "spacing" intrinsic 451 "spread" intrinsic 452 "sqrt" intrinsic 453 "sum" intrinsic 454 "system_clock" intrinsic 455 "tan" intrinsic 456 "tanh" intrinsic 457 "tiny" intrinsic 458 "transfer" intrinsic 459 "transpose" intrinsic 460 "trim" intrinsic 461 "true" intrinsic 462 "ubound" intrinsic 463 "unpack" intrinsic 464 "verify" intrinsic 465 done 466 "a-zA-Z0-9_" ident 467 " \t" ws_ident hold 468 469 470 # Whitespace after an identifier... we wait to see if there is a "(" 471 :ws_ident Idle 472 * idle noeat istrings 473 "allocate" kw 474 "allocatable" kw 475 "assign" kw 476 "assignment" kw 477 "backspace" kw 478 "block" kw 479 "blockdata" kw 480 "call" kw 481 "case" kw 482 "character" type 483 "close" kw 484 "common" kw 485 "complex" type 486 "contains" kw 487 "continue" kw 488 "cycle" kw 489 "data" kw 490 "deallocate" kw 491 "default" kw 492 "dimension" type 493 "do" kw 494 "double" type 495 "doubleprecision" type 496 "elemental" kw 497 "else" kw 498 "elseif" kw 499 "elsewhere" kw 500 "end" kw 501 "endblock" kw 502 "endblockdata" kw 503 "enddo" kw 504 "endfile" kw 505 "endforall" kw 506 "endif" kw 507 "endinterface" kw 508 "endmodule" kw 509 "endselect" kw 510 "endtype" kw 511 "endwhere" kw 512 "entry" kw 513 "equivalence" kw 514 "exit" kw 515 "external" kw 516 "forall" kw 517 "format" kw 518 "function" kw 519 "go" kw 520 "goto" kw 521 "if" kw 522 "implicit" kw 523 "in" kw 524 "inout" kw 525 "inquire" kw 526 "integer" type 527 "intent" kw 528 "interface" kw 529 "intrinsic" kw 530 "iolength" kw 531 "kind" kw 532 "logical" type 533 "module" kw 534 "namelist" kw 535 "none" kw 536 "nullify" kw 537 "only" kw 538 "open" kw 539 "optional" kw 540 "out" kw 541 "parameter" kw 542 "pause" kw 543 "pointer" kw 544 "precision" type 545 "print" kw 546 "private" kw 547 "procedure" kw 548 "program" kw 549 "publc" kw 550 "public" kw 551 "pure" kw 552 "read" kw 553 "real" type 554 "recursive" kw 555 "result" kw 556 "return" kw 557 "rewind" kw 558 "save" kw 559 "select" kw 560 "selectcase" kw 561 "sequence" kw 562 "stat" kw 563 "stop" kw 564 "subroutine" kw 565 "target" kw 566 "then" kw 567 "to" kw 568 "type" kw 569 "use" kw 570 "where" kw 571 "while" kw 572 "write" kw 573 done 574 "(" idle noeat istrings 575 # Keywords have to be duplicated here... 576 "allocate" kw 577 "allocatable" kw 578 "assign" kw 579 "assignment" kw 580 "backspace" kw 581 "block" kw 582 "blockdata" kw 583 "call" kw 584 "case" kw 585 "character" type 586 "close" kw 587 "common" kw 588 "complex" type 589 "contains" kw 590 "continue" kw 591 "cycle" kw 592 "data" kw 593 "deallocate" kw 594 "default" kw 595 "dimension" type 596 "do" kw 597 "double" type 598 "doubleprecision" type 599 "elemental" kw 600 "else" kw 601 "elseif" kw 602 "elsewhere" kw 603 "end" kw 604 "endblock" kw 605 "endblockdata" kw 606 "enddo" kw 607 "endfile" kw 608 "endforall" kw 609 "endif" kw 610 "endinterface" kw 611 "endmodule" kw 612 "endselect" kw 613 "endtype" kw 614 "endwhere" kw 615 "entry" kw 616 "equivalence" kw 617 "exit" kw 618 "external" kw 619 "forall" kw 620 "format" kw 621 "function" kw 622 "go" kw 623 "goto" kw 624 "if" kw 625 "implicit" kw 626 "in" kw 627 "inout" kw 628 "inquire" kw 629 "integer" kw 630 "intent" kw 631 "interface" kw 632 "intrinsic" kw 633 "iolength" kw 634 "kind" kw 635 "logical" type 636 "module" kw 637 "namelist" kw 638 "none" kw 639 "nullify" kw 640 "only" kw 641 "open" kw 642 "optional" kw 643 "out" kw 644 "parameter" kw 645 "pause" kw 646 "pointer" kw 647 "precision" type 648 "print" kw 649 "private" kw 650 "procedure" kw 651 "program" kw 652 "publc" kw 653 "public" kw 654 "pure" kw 655 "read" kw 656 "real" type 657 "recursive" kw 658 "result" kw 659 "return" kw 660 "rewind" kw 661 "save" kw 662 "select" kw 663 "selectcase" kw 664 "sequence" kw 665 "stat" kw 666 "stop" kw 667 "subroutine" kw 668 "target" kw 669 "then" kw 670 "to" kw 671 "type" kw 672 "use" kw 673 "where" kw 674 "while" kw 675 "write" kw 676 # Here are instrinsics 677 "abs" intrinsic 678 "achar" intrinsic 679 "acos" intrinsic 680 "adjustl" intrinsic 681 "adjustr" intrinsic 682 "aimag" intrinsic 683 "aint" intrinsic 684 "all" intrinsic 685 "allocated" intrinsic 686 "alog" intrinsic 687 "alog10" intrinsic 688 "anint" intrinsic 689 "any" intrinsic 690 "asin" intrinsic 691 "associated" intrinsic 692 "atan" intrinsic 693 "atan2" intrinsic 694 "bit_size" intrinsic 695 "btest" intrinsic 696 "ceiling" intrinsic 697 "char" intrinsic 698 "cmplx" intrinsic 699 "conjg" intrinsic 700 "cos" intrinsic 701 "cosh" intrinsic 702 "count" intrinsic 703 "cpu_time" intrinsic 704 "cshift" intrinsic 705 "date_and_time" intrinsic 706 "dble" intrinsic 707 "digits" intrinsic 708 "dim" intrinsic 709 "dot_product" intrinsic 710 "dprod" intrinsic 711 "eoshift" intrinsic 712 "epsilon" intrinsic 713 "exp" intrinsic 714 "exponent" intrinsic 715 "false" intrinsic 716 "floor" intrinsic 717 "float" intrinsic 718 "fraction" intrinsic 719 "huge" intrinsic 720 "iachar" intrinsic 721 "iand" intrinsic 722 "ibclr" intrinsic 723 "ibits" intrinsic 724 "ibset" intrinsic 725 "ichar" intrinsic 726 "ieor" intrinsic 727 "index" intrinsic 728 "int" intrinsic 729 "int2" intrinsic 730 "ior" intrinsic 731 "ishft" intrinsic 732 "ishftc" intrinsic 733 "kind" intrinsic 734 "lbound" intrinsic 735 "len" intrinsic 736 "len_trim" intrinsic 737 "lge" intrinsic 738 "lgt" intrinsic 739 "lle" intrinsic 740 "llt" intrinsic 741 "log" intrinsic 742 "log10" intrinsic 743 "matmul" intrinsic 744 "max" intrinsic 745 "maxexponent" intrinsic 746 "maxloc" intrinsic 747 "maxval" intrinsic 748 "merge" intrinsic 749 "min" intrinsic 750 "minexponent" intrinsic 751 "minloc" intrinsic 752 "minval" intrinsic 753 "mod" intrinsic 754 "modulo" intrinsic 755 "mvbits" intrinsic 756 "nearest" intrinsic 757 "nint" intrinsic 758 "not" intrinsic 759 "null" intrinsic 760 "pack" intrinsic 761 "present" intrinsic 762 "product" intrinsic 763 "radix" intrinsic 764 "random_number" intrinsic 765 "random_seed" intrinsic 766 "range" intrinsic 767 "real" intrinsic 768 "repeat" intrinsic 769 "reshape" intrinsic 770 "rrspacing" intrinsic 771 "scale" intrinsic 772 "scan" intrinsic 773 "selected_int_kind" intrinsic 774 "selected_real_kind" intrinsic 775 "set_exponent" intrinsic 776 "shape" intrinsic 777 "sign" intrinsic 778 "sin" intrinsic 779 "sinh" intrinsic 780 "size" intrinsic 781 "spacing" intrinsic 782 "spread" intrinsic 783 "sqrt" intrinsic 784 "sum" intrinsic 785 "system_clock" intrinsic 786 "tan" intrinsic 787 "tanh" intrinsic 788 "tiny" intrinsic 789 "transfer" intrinsic 790 "transpose" intrinsic 791 "trim" intrinsic 792 "true" intrinsic 793 "ubound" intrinsic 794 "unpack" intrinsic 795 "verify" intrinsic 796 done 797 " \t" ws_ident 798 799 800 :intrinsic Intrinsic 801 * idle noeat 802 803 :kw Keyword 804 * idle noeat 805 806 :type Type 807 * idle noeat