Help:GeSHi: Difference between revisions

From Rosetta Code
Content added Content deleted
(Live list of supported tags.)
Line 1: Line 1:
'''GeSHi''' is currently in Beta on Rosetta Code. Please do not employ it anywhere other than this page for now. --[[User:Short Circuit|Short Circuit]] 20:07, 22 February 2008 (MST)

The following are examples of typical code formated with [http://qbnz.com/highlighter/ GeSHi], the '''Ge'''neric '''S'''yntax '''Hi'''lighter.
The following are examples of typical code formated with [http://qbnz.com/highlighter/ GeSHi], the '''Ge'''neric '''S'''yntax '''Hi'''lighter.


==Supported source tags==
==Supported source tags==
This list is generated by the MediaWiki extension based on per-language syntax files available. Anything not in this list does not yet have syntax highlighting support on Rosetta Code. Feel free to provide a GeSHi script file. It will be reviewed and (probably) added.
The current installation is GeSHi-1.0.7.19, this supports the following tags:
<code list></code>


(Apologies for the lack of sort. It will be fixed.)


==Usage==
GeSHi-1.1.2-alpha3 not currently installed. It is unclear if all of the above languages are supported in the alpha release.
Non-updated examples on this page notwithstanding, all code should be formatted as follows:


<nowiki>
The following language tags are supported:
<code Ada>
<php>
function Is_Prime(Item : Positive) return Boolean is
$langArray = array( "actionscript-french", "actionscript", "ada", "apache",
Result : Boolean := True;
"applescript", "asm", "asp", "bash",
Test : Natural;
"blitzbasic", "caddcl", "cadlisp", "c_mac",
begin
"c", "cpp", "csharp", "css",
if Item /= 2 and Item mod 2 = 0 then
"delphi", "diff", "dos",
Result := False;
"d", "eiffel", "freebasic", "gml",
else
"html4strict", "ini", "inno", "java",
Test := 3;
"javascript", "lisp", "lua", "matlab",
while Test < Integer(Sqrt(Float(Item))) loop
"mpasm", "mysql", "nsis", "objc",
if Item mod Test = 0 then
"ocaml-brief", "ocaml", "oobas", "oracle8",
Result := False;
"pascal", "perl", "php-brief", "php",
exit;
"python", "qbasic", "ruby", "scheme",
end if;
"sdlbasic", "smarty", "sql", "vbnet",
Test := Test + 2;
"vb", "vhdl", "visualfoxpro", "xml" );</php>
end loop;
end if;
return Result;
end Is_Prime;
</code>
</nowiki>


Replace "Ada" with the language tag appropriate to the language of the code in question. It will be formatted using available syntax rules for the language.
==Unsupported languages==
These languages used on Rosetta Code do not have GeSHi support (yet).
* [[ALGOL 68]]
* [[Clean]]
* [[Common Lisp]]
* [[E]]
* [[Forth]]
* [[Fortran]]
* [[Groovy]]
* [[Haskell]]
* [[IDL|idl]]
* [[J]]
* [[LaTeX|latex]]
* [[MAXScript]]
* [[mIRC Scripting Language|mirc]]
* [[PL/SQL|plsql]]
* [[Pop11]]
* [[Prolog]]
* [[SAS|sas]]
* [[smalltalk]]
* [[TCL|tcl]]


== The initial sample program ==
== The initial sample program ==
Line 52: Line 39:


===[[Ada]]===
===[[Ada]]===
<Ada>
<code Ada>
function Is_Prime(Item : Positive) return Boolean is
function Is_Prime(Item : Positive) return Boolean is
Result : Boolean := True;
Result : Boolean := True;
Line 71: Line 58:
return Result;
return Result;
end Is_Prime;
end Is_Prime;
</Ada>
</code>


===[[ALGOL 68]] (unsupported)===
===[[ALGOL 68]] (unsupported)===

Revision as of 02:25, 23 January 2009

The following are examples of typical code formated with GeSHi, the Generic Syntax Hilighter.

Supported source tags

This list is generated by the MediaWiki extension based on per-language syntax files available. Anything not in this list does not yet have syntax highlighting support on Rosetta Code. Feel free to provide a GeSHi script file. It will be reviewed and (probably) added.

(Apologies for the lack of sort. It will be fixed.)

Usage

Non-updated examples on this page notwithstanding, all code should be formatted as follows:

<code Ada> function Is_Prime(Item : Positive) return Boolean is Result : Boolean := True; Test : Natural; begin if Item /= 2 and Item mod 2 = 0 then Result := False; else Test := 3; while Test < Integer(Sqrt(Float(Item))) loop if Item mod Test = 0 then Result := False; exit; end if; Test := Test + 2; end loop; end if; return Result; end Is_Prime; </code>

Replace "Ada" with the language tag appropriate to the language of the code in question. It will be formatted using available syntax rules for the language.

The initial sample program

Use trial division. Even numbers may be eliminated right away. A loop from 3 to √(n) will suffice, but other loops are allowed.

Ada

function Is_Prime(Item : Positive) return Boolean is
   Result : Boolean := True;
   Test : Natural;
begin
   if Item /= 2 and Item mod 2 = 0 then
      Result := False;
   else
      Test := 3;
      while Test < Integer(Sqrt(Float(Item))) loop
         if Item mod Test = 0 then
            Result := False;
            exit;
         end if;
         Test := Test + 2;
      end loop;
  end if;
  return Result;
end Is_Prime;

ALGOL 68 (unsupported)

<ALGOL_68>

main:(
  PROC is prime = ( INT n )BOOL:
  (
    IF n = 2 THEN 
      TRUE
    ELIF n <= 1 OR n MOD 2 = 0 THEN 
      FALSE
    ELSE
      BOOL prime := TRUE;
      FOR i FROM 3 BY 2 TO ENTIER sqrt(n) WHILE prime := n MOD i /= 0 DO
         SKIP
      OD;
      prime
    FI
  );
  
  INT upb=100;
  printf(($" The primes up to "g(-3)" are:"l$,upb));
  FOR i TO upb DO 
    IF is prime(i) THEN
      printf(($g(-4)$,i))
    FI
  OD;
  printf($l$)
)

Output: </ALGOL_68>

The primes up to 100 are:
  2   3   5   7  11  13  17  19  23  29  31  37  41  43  47  53  59  61  67  71  73  79  83  89  97

QuickBasic

Works with: QuickBasic version 4.5

Going with the classic 1 for "true" and 0 for "false": <qbasic>

FUNCTION prime% (n!)
  IF n = 2 THEN prime = 1
  IF n <= 1 OR n MOD 2 = 0 THEN prime = 0
  FOR a = 3 TO INT(SQR(n)) STEP 2
    IF n MOD a = 0 THEN prime = 0
  NEXT a
  prime = 1
END FUNCTION

</qbasic>

C

<C>

#include <math.h>
#define FALSE 0
#define TRUE  1
int isPrime( unsigned int n )
{
    unsigned int i;
    if ( n === 2 )
        return TRUE;
    if ( n <= 1 || ( n & 1 ) === 0 )
        return FALSE;
    for ( i = 3 ; i <= sqrt( n ) ; i += 2 )
        if ( n % i === 0 )
            return FALSE;
    return TRUE;
}

</C>

Lisp

Note: Common Lisp words like "loop" are not highlighted.

<lisp>(defun primep (a)
 (cond ((= a 2) T)
       ((or (<= a 1) (= (mod a 2) 0)) nil)
       ((loop for i from 3 to (sqrt a) by 2 do
               (if (= (mod a i) 0)
                   (return nil))) nil)
       (T T)))</lisp>

D

<D>

import std.math: sqrt;
bool isPrime(int n) {
    if (n === 2)
        return true;
    if (n <= 1 || (n & 1) === 0)
        return false;

    for(int i = 3; i <= sqrt(cast(float)n); i += 2)
        if (n % i === 0)
            return false;
    return true;
}

</D>

Forth (unsupported)

<Forth>

: prime? ( n -- ? )
       dup 2 < if      drop false
  else dup 2 = if      drop true
  else dup 1 and 0= if drop false
  else 3
       begin 2dup dup * >=
       while 2dup mod 0=
             if       2drop false exit
             then 2 +
       repeat         2drop true
  then then then ;

</Forth>

Haskell (unsupported)

Without square roots: <Haskell>

divides k n = n `mod` k === 0

isPrime :: Integer -> Bool
isPrime n | n < 2 = False
isPrime n         = not $ any (`divides` n) $ takeWhile (\k -> k*k <= n) [2..]

</Haskell>

J (unsupported)

Actually 1&p: would do, but the task calls for trial division, so: <J>

isprime=: 3 : 'if. 3>:y do. 1<y else. 0 *./@:< y|~2+i.<.%:y end.'

</J>

Java

<Java>

public static boolean prime(double a){
   if(a === 2){
      return true;
   }else if(a <= 1 || a % 2 === 0){
      return false;
   }
   for(long n= 3; n <= (long)Math.sqrt(a); n+= 2){
      if(a % n === 0){ return false; }
   }
   return true;
}

</Java>

MAXScript (unsupported)

<MAXScript>

fn isPrime n =
(
    if n === 2 then
    (
        return true
    )
    else if (n <= 1) OR (mod n 2 === 0) then
    (
        return false
    )

    for i in 3 to (sqrt n) by 2 do
    (
        if mod n i === 0 then return false
    )
    true
)

</MAXScript>

Perl

<Perl>

sub prime {
  $a = shift;
  if ($a === 2) {
    return 1;
  }
  if ($a <= 1 || $a % 2 === 0) {
    return 0;
  }
  $d = 3;
  while ($d <= sqrt($a)) {
    if ($a % $d === 0) {
      return 0;
    }
    $d += 2;
  }
  return 1;
}

</Perl>

Python

Ugh. Who chose these colors? --IanOsgood 09:20, 25 February 2008 (MST)

The simplest primality test, using trial division:

Works with: Python version 2.5

<Python> def prime(a):

   return not (a < 2 or any(a % x === 0 for x in range(2, int(a**0.5) + 1)))

</Python>

Another test. Exclude even numbers first:

<Python> def prime2(a):

   if a === 2: return True
   if a < 2 or a % 2 === 0: return False
   return not any(a % x === 0 for x in range(3, int(a**0.5) + 1, 2))

</Python>

Yet another test. Exclude multiples of 2 and 3, see http://www.devx.com/vb2themax/Tip/19051:

Works with: Python version 2.4

<Python> def prime3(a):

   if a < 2: return False
   if a === 2 or a === 3: return True # manually test 2 and 3   
   if a % 2 === 0 or a % 3 === 0: return False # exclude multiples of 2 and 3
   maxDivisor = a**0.5
   d, i = 5, 2
   while d <= maxDivisor:
       if a % d === 0: return False
       d += i 
       i = 6 - i # this modifies 2 into 4 and viceversa
   return True

</Python>

Ruby

def prime(a)
  if a===2
   return true
  end

  if a<=1 || a%2===0
    return false
  end

  d=3
  while d <= Math.sqrt(a) do
    if a%d===0
      return false
    end
    d+=2
  end

return true
end

Geshi supported formats

Actionscript

Web page:Actionscript

Sample: <actionscript>

Insert code here: ?

</actionscript> <actionscript-french>

Insert code here: ?

</actionscript-french>

ADA

Sample: <ada>

Insert code here: ?

</ada>

AppleScript

Web page:AppleScript

Sample: <applescript>

Insert code here: ?

</applescript>

ASM

Sample: <asm>

Insert code here: ?

</asm>

ASP

Web page:ASP

Sample: <asp>

Insert code here: ?

</asp>

AutoIT

Web page:AutoIT

Sample: <AutoIT>

Check tag and insert here: ?

</AutoIT>

Backus-Naur form

Web page:Backus-Naur form

Sample: <Backus-Naur>

Check tag and insert here: ?

</Backus-Naur>

Bash

Web page:Bash

Sample: <bash>

Insert code here: ?

</bash>

BlitzBasic

Web page:BlitzBasic

Sample: <blitzbasic>

Insert code here: ?

</blitzbasic>

CAD DCL

Web page:CAD DCL

Sample:

CadLisp

Web page:CadLisp

Sample: <cadlisp>

Insert code here: ?

</cadlisp>

CFDG

Web page:CFDG

Sample: <CFDG>

Check tag and insert here: ?

</CFDG>

C for Macs

Sample: <c_mac>

Insert code here: ?

</c_mac>

ColdFusion

Web page:ColdFusion

Sample:

C#

Sample: <csharp>

Insert code here: ?

</csharp>

CSS

Web page:CSS

Sample: <css>

Insert code here: ?

</css>

C++

Web page:C++

Sample: <cpp>

Insert code here: ?

</cpp>

C

Web page:C

Sample: <c>

Insert code here: ?

</c>

Delphi

Web page:Delphi

Sample: <delphi>

Insert code here: ?

</delphi>

DIV

Web page:DIV

Sample: <diff>

Insert code here: ?

</diff>

DOS

Sample: <dos>

Insert code here: ?

</dos>

D

Sample: <d>

Insert code here: ?

</d>

Eiffel

Web page:Eiffel

Sample: <eiffel>

Insert code here: ?

</eiffel>

Fortran

Web page:Fortran

Sample: <Fortran>

Insert code here: ?
      PROGRAM MAIN
      INTEGER I
      CALL SUBROUTINE
      STOP
      EXIT

</Fortran>

FreeBasic

Web page:FreeBasic

Sample: <freebasic>

Insert code here: ?

</freebasic>

GML

Web page:GML

Sample: <gml>

Insert code here: ?

</gml>

Groovy

Web page:Groovy

Sample: <Groovy>

Check tag and insert here: ?

</Groovy>

HTML

Web page:HTML

Sample: <html4strict>

Insert code here: ?

</html4strict>

Inno

Web page:Inno

Sample: <inno>

Insert code here: ?

</inno>

IO

Web page:IO

Sample: <IO>

Insert code here: ?

</IO>

Java 5

Web page:Java 5

Sample: <java>

Insert code here: ?

</java>

Javascript

Web page:Javascript

Sample: <javascript>

Insert code here: ?

</javascript>

Java

Web page:Java

Sample: <java>

Insert code here: ?

</java>

LaTeX

Web page:LaTeX

Sample: <LaTeX>

Insert code here: ?

</LaTex>

Lisp

Web page:Lisp

Sample: <lisp>

Insert code here: ?

</lisp>

Lua

Web page:Lua

Sample: <lua>

Insert code here: ?

</lua>

MatLab

Sample: <matlab>

Insert code here: ?

</matlab>

Microprocessor ASM

mpasm

Sample: <mpasm>

Insert code here: ?

</mpasm>

MySQL

Web page:MySQL

Sample: <mysql>

Insert code here: ?

</mysql>

NSIS

Web page:NSIS

Sample: <nsis>

Insert code here: ?

</nsis>

Objective C

Sample: <objc>

Insert code here: ?

</objc>

OCaml

Web page:OCaml

Sample: <ocaml-brief>

Insert code here: ?

</ocaml-brief> <ocaml>

Insert code here: ?

</ocaml>

OpenOffice BASIC

Web page:OpenOffice BASIC

Sample: <oobas>

Insert code here: ?

</oobas>

Oracle 8 SQL

Web page:Oracle 8 SQL

Sample: <oracle8>

Insert code here: ?

</oracle8>

Pascal

Sample: <pascal>

Insert code here: ?

</pascal>

Perl

Web page:Perl

Sample: <perl>

Insert code here: ?

</perl>

PHP

Web page:PHP

Sample: <php>

Insert code here: ?

</php> <php-brief>

Insert code here: ?

</php-brief>

PL/SQL

Web page:PL/SQL

Sample: <PLSQL>

Check tag and insert here: ?

</PLSQL>

Python

Web page:Python

Sample: <python>

Insert code here: ?

</python>

QBASIC

Web page:Q(uick)BASIC

Sample: <qbasic>

Insert code here: ?

</qbasic>

Ruby

Web page:Ruby

Sample:

Insert code here: ?

SAS

<SAS>

Check tag and insert here: ?

</SAS> Web page:SAS

Scheme

Web page:Scheme

Sample: <scheme>

Insert code here: ?

</scheme>

SDLBasic

Web page:SDLBasic

Sample: <sdlbasic>

Insert code here: ?

</sdlbasic>

Smalltalk

Web page:Smalltalk

Sample: <Smalltalk>

Check tag and insert here: ?

</Smalltalk>

Smarty

Web page:Smarty

Sample: <smarty>

Insert code here: ?

</smarty>

SQL

Sample: <sql>

Insert code here: ?

</sql>

TCL

Web page:TCL

Sample: <TCL>

Check tag and insert here: ?

</TCL>

thinBasic

Web page:thinBasic

Sample: <ThinBasic>

Check tag and insert here: ?

</ThinBasic>

T-SQL

<T-SQL>

Check tag and insert here: ?

</T-SQL>

Uno IDL

Web page:Uno IDL

Sample: <Uno IDL>

Check tag and insert here: ?

</Uno IDL>

VB.NET

Web page:VB.NET

Sample: <vb>

Insert code here: ?

</vb>

Visual BASIC

Web page:Visual BASIC

Sample: <vbnet>

Insert code here: ?

</vbnet>

Visual Fox Pro

Web page:Visual Fox Pro

Sample: <visualfoxpro>

Insert code here: ?

</visualfoxpro>

Visual VHDL

Sample: <vhdl>

Insert code here: ?

</vhdl>

Winbatch

Web page:Winbatch

Sample: <Winbatch>

Check tag and insert here: ?

</Winbatch>

X++

Web page:X++ Sample: <Xpl>

Insert code here: ?

</Xpl>

Z80 ASM

Web page:Z80 ASM

Sample:

Other GeSHi file formats

Apache Log

Web page:Apache Log

Sample: <apache>

Insert code here: ?

</apache>

Ini

Sample: <ini>

Insert code here: ?

</ini>

mIRC

Web page:mIRC

Sample: <mIRC>

Check tag and insert here: ?

</mIRC>

robots.txt

Web page:robots.txt

Sample: <robots.txt>

Check tag and insert here: ?

</robots.txt>

XML

Web page:XML

Sample: <xml>

Insert code here: ?

</xml>