webForumDet fria alternativet

syntax highlightning

9 svar · 331 visningar · startad av Aleph_One

Aleph_OneMedlem sedan juni 2003370 inlägg
#1

Jag håller på och planerar ett slags arkiv på nätet där jag kan spara all möjlig text (till att börja med). Det kan vara anteckningar, kod, länkar osv..
När jag sedan visar en kodsnutt som man har sparat så vill jag att den ska visas med syntax highlightning.

Så jag letar efter en motor där man kan köra in templates för olika språk (Java, C/C++ C# osv) för att sedan visa koden färgkodad. Finns det sådana tillgängliga? Vet fortfarande inte om jag ska skriva det i php, servlets eller asp.net, det beror lite på om jag hittar nån motor...

/r
Nästa steg är väl att få syntaxhighlightning att fungera i en textarea med javascript också, är det möjligt?

Aleph_OneMedlem sedan juni 2003370 inlägg
#2

Okej, om jag frågar så här.. hur är php-färgkodningen gjord på det här forumet?
tex om jag skriver lite php så parsas den och ersätts med lite färgkodning:

$foo = "ost";
if($foo != "keso")
{
	echo "inte samma";
}

hur är det gjort?

spangoMedlem sedan juni 20006 147 inlägg
#3

Inyggt i PHP. D.v.s., skrivet i C.

Aleph_OneMedlem sedan juni 2003370 inlägg
#4

spango skrev:

Inyggt i PHP. D.v.s., skrivet i C.

Aha där ser man, visste inte ens att det fanns.

För att det jag vill ska fungera behövs nåt mer generellt sätt att hantera det på. Borde väl finnas?
Har bestämt mig för att köra på jsp/beans så.. finns nåt i java blir jag glad. (om inte annat så går det ju att porta).

Sang-draxMedlem sedan juli 2002570 inlägg
#5

Borde väl inte vara så svårt att göra från början om du inte hittar något bra.
Search->Replace på keywords, Färga strängar etc.

Aleph_OneMedlem sedan juni 2003370 inlägg
#6

Sang-drax skrev:

Borde väl inte vara så svårt att göra från början om du inte hittar något bra.
Search->Replace på keywords, Färga strängar etc.

Att köra search-replace på nyckelord funkar ju bra så länge det bara finns nyckelord att byta ut men om jag har en sträng tex så kan den ju innehålla ord som är samma som ett nyckelord. Är det så så ska ju inte det ordet bytas ut till nyckelordsfärg. Så det man behöver göra är ju att kolla operatorer och operander och i vilken ordning dom kommer och det är desto meckigare.

Hittade detta:
http://www.beautifier.org/
Den verkar helt ok, förutom att den är skriven i php/perl, men det går ju alltid att porta. :)

spangoMedlem sedan juni 20006 147 inlägg
#7

Annars kan du ju köra strängen genom en StringTokenizer som splittar på whitespace och ". Typ...

StringTokenizer tokens = new StringTokenizer(kodsnutt, " \n\r\t\"", true);
while (tokens.hasMoreTokens()){
    String token = tokens.nextToken();
    if (token.indexOf('"') >= 0) // sträng börjar/slutar
    else // inom/utanför sträng
}

Fast du får förstås fippla lite mer för att känna igen quotade tecken som \" :)
Nackdelen med det här är att det inte är vidare flexibelt...

PeWMedlem sedan juni 20006 839 inlägg
#8

Det där är annars ett fall för en event driven 'finite-state-machine', vilket gör det lätt att implementera och bygga vidare på. (=flexibilitet)

Finns massor av info, varianter och exempel på nätet för allehanda språk. Behöver du en variant i C så har jag en liggandes, bara att säga till ;)

Aleph_OneMedlem sedan juni 2003370 inlägg
#9

spango skrev:

Annars kan du ju köra strängen genom en StringTokenizer som splittar på whitespace och ". Typ...

kod:

StringTokenizer tokens = new StringTokenizer(kodsnutt, " \n\r\t\"", true);
while (tokens.hasMoreTokens()){
String token = tokens.nextToken();
if (token.indexOf('"') >= 0) // sträng börjar/slutar
else // inom/utanför sträng
}

Fast du får förstås fippla lite mer för att känna igen quotade tecken som \"
Nackdelen med det här är att det inte är vidare flexibelt...

Ja, nån sån lösning kan det nog bli om jag inte pallar fixa ihop nåt likande beautifier.org.
Bra ide!

PeW skrev:

Det där är annars ett fall för en event driven 'finite-state-machine', vilket gör det lätt att implementera och bygga vidare på. (=flexibilitet)

Ja det bästa hade väl varit att behandla det som en kompilator hade gjort, men det känns som det blir lite overkill, särskilt om det ska fungera så att man trycker in en template för varje språk.

PeW skrev:

Finns massor av info, varianter och exempel på nätet för allehanda språk. Behöver du en variant i C så har jag en liggandes, bara att säga till ;)

Exempel i Java hade inte suttit helt fel.
Har du några länkar så posta gärna dom :)

PeWMedlem sedan juni 20006 839 inlägg
#10

Ja det bästa hade väl varit att behandla det som en kompilator hade gjort, men det känns som det blir lite overkill, särskilt om det ska fungera så att man trycker in en template för varje språk.

Vilket i praktiken i min variant i C endast hade betytt en ny tabell med structar för varje template. Overkill eller ej, det är ändå en smidig lösning. Har tyvärr ingen länk till liknande i Java, men det borde finnas en hel del att hitta på google.

Genererad på 381 ms · cache AV · v20260730165559-full.f96bc7eb