#!/usr/local/bin/perl -U use CGI; # CGI-paketet till Perl 5. $query = new CGI; if ($query->param) { # Initieringar $gammal_text=$query->param('text'); $slutet=substr($gammal_text,-1); if (!($slutet =~ /\n/)) { # Laegg till newline i slutet om det inte $gammal_text .= "\n"; # finns redan } } $tmpfile1="/tmp/markorA$$"; $tmpfile2="/tmp/markorB$$"; $satsstart=""; $satsslut=""; $ordstart=""; $ordslut=""; $kommentarstart="("; $kommentarslut=")"; #chdir("/usr/svmud/lib/etc/www/spelare/magnus/markor2"); chdir("/.hej"); $h2="

"; $h2slut="

"; print "Content-type: text/html\n"; # Sidhuvud print "\n"; print "\n"; print "Markör - granskning\n"; print "

\n"; print "\"SvenskMud\"\n"; print "Markör - granskning\n"; print "

\n"; print "${h2}Text${h2slut}\n"; # Form foer textmassan print $query->startform("GET"); print $query->textarea('text',$gammal_text,10,70); print "
\n"; print $query->submit('Kör'); print "
\n"; print "\n"; print "${h2}\n"; print "Inställningar\n"; print "${h2slut}\n"; print "

\n"; print $query->checkbox('Stavningskontroll',$query->param('Stavningskontroll')); print "

\n"; print "

\n"; print "Särskilda markeringar\n"; print "

\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
",$query->checkbox('Satsstruktur',$query->param('Satsstruktur')),"",$query->checkbox('Styckesinledare',$query->param('Styckesinledare')),"",$query->checkbox('Mening på egen rad',$query->param('Mening på egen rad')),"
",$query->checkbox('Syftningar',$query->param('Syftningar')),"",$query->checkbox('Samband',$query->param('Samband')),"",$query->checkbox('Meningsinledare',$query->param('Meningsinledare')),"
",$query->checkbox('Funktionsord',$query->param('Funktionsord')),"",$query->checkbox('Innehållsord',$query->param('Innehållsord')),"",$query->checkbox('Negation',$query->param('Negation')),"
\n"; print "

\n"; print "

\n"; print "Norm\n"; print "

\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
",$query->checkbox('Sats',$query->param('Sats')),"",$query->checkbox('Adjektiv',$query->param('Adjektiv')),"",$query->checkbox('Dubbel passivum',$query->param('Dubbel passivum')),"
",$query->checkbox('Dubbel supinum',$query->param('Dubbel supinum')),"",$query->checkbox('Genitiv',$query->param('Genitiv')),"",$query->checkbox('Infinitiv',$query->param('Tempus')),"
",$query->checkbox('Pluralform',$query->param('Pluralform')),"",$query->checkbox('Samman-/Särskrivning',$query->param('Samman-/Särskrivning')),"",$query->checkbox('Skiftfel',$query->param('Skiftfel')),"
",$query->checkbox('Skiljetecken',$query->param('Skiljetecken')),"",$query->checkbox('Ordmellanrum',$query->param('Ordmellanrum')),"
\n"; print "

\n"; print "

\n"; print "Språklig stil\n"; print "

\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
",$query->checkbox('Adverbial',$query->param('Adverbial')),"",$query->checkbox('Prepositionsmöte',$query->param('Prepositionsmöte')),"",$query->checkbox('Språklig skönhet',$query->param('Språklig skönhet')),"
",$query->checkbox('Dubbel negation',$query->param('Dubbel negation')),"",$query->checkbox('Högtidligt språk',$query->param('Högtidligt språk')),"",$query->checkbox('Talspråk',$query->param('Talspråk')),"
",$query->checkbox('Tempus',$query->param('Tempus')),"",$query->checkbox('Tillkrånglat språk',$query->param('Tillkrånglat språk')),"",$query->checkbox('Presens particip',$query->param('Presens particip')),"
",$query->checkbox('Presens passivum',$query->param('Presens passivum')),"
\n"; print "

\n"; print "

\n"; print "Helhetsbedömningar\n"; print "

\n"; print "\n"; print "\n"; print "
",$query->checkbox('Läsbarhetsindex',$query->param('Läsbarhetsindex')),"
\n"; print "

\n"; print "

\n"; print "",$query->checkbox('Ordklasser',$query->param('Ordklasser')),"\n"; print "

\n"; print $query->endform; print "\n"; if (length($gammal_text) <= 5) { # Om textmassan foer kort: laegg av print "

\n"; print "

\n"; print "Sidan är författad av Magnus Cedergren <magnus\@svmud.lysator.liu.se>\n"; print "
\n"; exit; }; if (length($gammal_text) >= 5000) { # Om texten foer laang: trunkera $gammal_text = substr($gammal_text,5000); } if ($query->param('Stavningskontroll')) { open(STAVNING,"|./etc/stava -eafnsr8 > $tmpfile1"); print STAVNING $gammal_text; close(STAVNING); open(STAVADTEXT,"$tmpfile1"); @stavadtext=; close(STAVADTEXT); unlink $tmpfile1; $gammal_fnutt=$"; # Slaetar ut $"=""; $stavadtext="@stavadtext"; $"=$gammal_fnutt; print "${h2}Stavning${h2slut}\n"; $stavadtext =~ s/\n/
\n/g; # Radbrytning aeven i html print "

Felstavade ord

\n"; if ($stavadtext) { print "$stavadtext\n"; } else { print "Kunde inte hitta några felstavade ord.\n"; } print "\n"; print "\n"; } open(TAGGNING,"|./etc/ma -r ./etc/swedish.ma > $tmpfile1"); # Goer grundtaggning print TAGGNING $gammal_text; close(TAGGNING); open(TAGGADTEXT,"$tmpfile1"); @taggadtext=; close(TAGGADTEXT); unlink $tmpfile1; $gammal_fnutt=$"; # Slaetar ut $"=""; $taggadtext="@taggadtext"; $"=$gammal_fnutt; $taggadtext =~ s/\n/
\n/g; # Radbrytning aeven i html $markeringar = $query->param('Satsstruktur') || $query->param('Funktionsord') || $query->param('Innehållsord') || $query->param('Samband') || $query->param('Negation') || $query->param('Mening på egen rad') || $query->param('Meningsinledare') || $query->param('Styckesinledare') || $query->param('Syftningar') ; if ($markeringar) { # Om skall utfoeras naagra markeringar alls $_=$taggadtext; if ($query->param('Satsstruktur')) { s/¤[Kr].[^×]+×../$ordstart$&$ordslut/g; # Konjunktioner s/×[^o].[^¤]+/$ordstart$&$ordslut/g; # Skiljetecken } if ($query->param('Funktionsord')) { s/¤[fghFGHKRrEDQAiMKEBabc].[^×]+×../$ordstart$&$ordslut${kommentarstart}F$kommentarslut/g; } if ($query->param('Innehållsord')) { s/¤[^fghFGHKRrEDQAiMKEBabc].[^×]+×../$ordstart$&$ordslut${kommentarstart}I$kommentarslut/g; } if ($query->param('Negation')) { s/¤..(inte|ej|icke|varken|minst|knappast|utan|sakna(r|de|t)?s?|(o(a|b[aeiloruyäö]|d[eijoruyö]|e|f[aeijoruäö]|g|h|i|j|k|l[aouyåäö]|n[ouåäö]|o|p[alorsuå]|r[uäö]|s[^t]|t[^t]|u|v|å|ä|ö)|im|ir|ill|miss|van|dis|kvasi|icke|non)[^×]*[aouåeiyäö][^×]+)×../$ordstart$&$ordslut${kommentarstart}Neg$kommentarslut/g; } if ($query->param('Mening på egen rad')) { s/×[sm].[^¤]+¤../$&
/g; } if ($query->param('Meningsinledare')) { s/(×[sm].[^¤]+|^)(¤..[^×]+)/\1$ordstart\2$ordslut/g; } if ($query->param('Styckesinledare')) { s/(×s.[^¤]+|×m.[^\n×]*\n[^\n×]*|^)((¤..[^×]+×[^m].[^¤]+)*¤..[^×]+×[sm].[^¤]+)/\1$satsstart\2$satsslut/g; } if ($query->param('Syftningar')) { s/(¤.N([^×]+)(×..[^¤]+(¤.[^S][^×]+×..[^¤])*¤.S[^×]+))×..[^¤]+¤r.[^×]+((×o.[^¤]+¤..[^×]+)+)×[^o]./
${satsstart}\u\2\3 \5$satsslut. ${kommentarstart}Syftningskontroll$kommentarslut
/g; s/(¤EP[^×]+×..[^¤]+)?¤[LN].([^×]+)×..[^¤]+¤r.[^×]+((×o.[^¤]+¤..[^×]+)+)×[^o]./
${satsstart}\u\2 \3$satsslut. ${kommentarstart}Syftningskontroll$kommentarslut
/g; if (s/(¤EP[^×]+×..[^¤]+)?¤R.([^×]+)×..[^¤]+¤r.[^×]+((×o.[^¤]+¤..[^×]+)+)×[^o]./
${satsstart}¥\2¥ \3$satsslut. ${kommentarstart}Syftningskontroll$kommentarslut
/g) { s/¥(mig|mig)¥/Jag/g; s/¥(dig|dej)¥/Du/g; s/¥(sig|sej)¥/Den\/han\/hon/g; s/¥honom¥/Han/g; s/¥henne¥/Hon/g; s/¥oss¥/Vi/g; s/¥er¥/Ni/g; s/¥dem¥/De/g; s/¥denne¥/Den/g; s/¥varandra¥/De/g; } } if ($query->param('Samband')) { s/¤..(även|och|också|därtill×..[^¤]+¤..kommer|tillika|dessutom|lika×..[^¤]+¤..viktigt×..[^¤]+¤..är|vidare|vad×..[^¤]+¤..mer×..[^¤]+¤..är|ytterligare|nästa|för×..[^¤]+¤..det×..[^¤]+¤..första|för×..[^¤]+¤..det×..[^¤]+¤..andra|tilläggas×..[^¤]+¤..kan|sist×..[^¤]+¤..men×..[^¤]+¤..inte×..[^¤]+¤..minst)×../$ordstart$&$ordslut${kommentarstart}Tillägg$kommentarslut/g; s/¤..(inledningsvis|omedelbart×..[^¤]+¤..efter|under×..[^¤]+¤..tiden|medan|samtidigt|före|efter|så×..[^¤]+¤..småningom|snart|efter×..[^¤]+¤..ett×..[^¤]+¤..tag|först|sedan|tidigare|senare|till×..[^¤]+¤..sist)×../$ordstart$&$ordslut${kommentarstart}Tid$kommentarslut/g; s/¤..(däremot|men|emellertid|dock|ändå|icke×..[^¤]+¤..desto×..[^¤]+¤..mindre|trots×..[^¤]+¤..allt|trots|å×..[^¤]+¤..ena×..[^¤]+¤..sidan|å×..[^¤]+¤..andra×..[^¤]+¤..sidan|när×..[^¤]+¤..allt×..[^¤]+¤..kommer×..[^¤]+¤..omkring|tvärtemot|tvärtom|en×..[^¤]+¤..skillnad×..[^¤]+¤..är|i×..[^¤]+¤..gengäld|i×..[^¤]+¤..sin×..[^¤]+¤..tur|i×..[^¤]+¤..stället|fördelarna|nackdelarna|på×..[^¤]+¤..så×..[^¤]+¤..sätt|på×..[^¤]+¤..samma×..[^¤]+¤..sätt|liknande(×..[^¤]+¤..resonemang)?|likartat(×..[^¤]+¤..resonerar)?|en×..[^¤]+¤..likartad×..[^¤]+¤..uppfattning)×../$ordstart$&$ordslut${kommentarstart}Jämförelse\/motsättning$kommentarslut/g; s/¤..(såsom|till×..[^¤]+¤..exempel|exempelvis|bland×..[^¤]+¤..annat|det×..[^¤]+¤..vill×..[^¤]+¤..säga|illustrera[sr]|som×..[^¤]+¤..ett×..[^¤]+¤..exempel×..[^¤]+¤..på|visar|belyser|här×..[^¤]+¤..urskiljer×..[^¤]+¤..sig|närmare×..[^¤]+¤..bestämt|särskilt|i×..[^¤]+¤..synnerhet)×../$ordstart$&$ordslut${kommentarstart}Exemplifiering\/precisering$kommentarslut/g; s/¤..(av×..[^¤]+¤..detta×..[^¤]+¤..skäl|mot×..[^¤]+¤..den×..[^¤]+¤..bakgrunden|på×..[^¤]+¤..grund×..[^¤]+¤..av×..[^¤]+¤..detta|orsaken×..[^¤]+¤..(var|är)|en×..[^¤]+¤..förklaring×..[^¤]+¤..till×..[^¤]+¤..detta|som×..[^¤]+¤..en×..[^¤]+¤..följd×..[^¤]+¤..av|härav×..[^¤]+¤..följer|följdaktligen|således|sålunda|alltså|därför|resultatet×..[^¤]+¤..blir|slutsatsen×..[^¤]+¤..blir|vilket×..[^¤]+¤..leder×..[^¤]+¤..till|det(ta)?×..[^¤]+¤..beror×..[^¤]+¤..på|anledningen×..[^¤]+¤..är|följden×..[^¤]+¤..blir)×../$ordstart$&$ordslut${kommentarstart}Orsak\/slutsats$kommentarslut/g; s/¤..(som×..[^¤]+¤..tidigare×..[^¤]+¤..nämnts|som×..[^¤]+¤..nämnt|som×..[^¤]+¤..jag×..[^¤]+¤..tidigare×..[^¤]+¤..antytt|med×..[^¤]+¤..andra×..[^¤]+¤..ord)×../$ordstart$&$ordslut${kommentarstart}Upprepning$kommentarslut/g; s/¤..(det×..[^¤]+¤..är×..[^¤]+¤..tydligt|tydligen|faktum×..[^¤]+¤..är|i×..[^¤]+¤..själva×..[^¤]+¤..verket|det×..[^¤]+¤..vill×..[^¤]+¤..säga|nämligen)×../$ordstart$&$ordslut${kommentarstart}Emfas$kommentarslut/g; s/¤..(slutligen|kort×..[^¤]+¤..sagt|avslutningsvis|sammantaget|sammanfattningsvis)×../$ordstart$&$ordslut${kommentarstart}Sammanfattning$kommentarslut/g; s/¤..(i×..[^¤]+¤..fråga×..[^¤]+¤..om|i×..[^¤]+¤..samband×..[^¤]+¤..med|i×..[^¤]+¤..detta×..[^¤]+¤..sammanhang|mot×..[^¤]+¤..bakgrund×..[^¤]+¤..av|med×..[^¤]+¤..hänsyn×..[^¤]+¤..till|när×..[^¤]+¤..det×..[^¤]+¤..gäller|har×..[^¤]+¤..att×..[^¤]+¤..göra×..[^¤]+¤..med)×../$ordstart$&$ordslut${kommentarstart}Allmänt samband$kommentarslut/g; } s/¤..//g; # Ta bort det som inte anvaents s/×..//g; s/$ordstart$satsslut/$satsslut$ordstart/g; s/$satsstart$ordslut/$ordslut$satsstart/g; s/$ordstart$satsstart/$satsstart$ordstart/g; s/$satsslut$ordslut/$ordslut$satsslut/g; $markeradtext=$_; print "${h2}Markerad text${h2slut}\n"; print $markeradtext; print "\n"; } %verbal = ('Felaktig adjektivböjning','Predikativet skall inte sluta på -t.', 'Felaktig komparation','Komparera med mer eller mest i stället.', 'Dubbel komparation','Komparera med ändelse eller mer/mest.', 'Adverbialkedja','Alltför många adverbial i en kedja gör texten svårläst.', 'Dubbel negation','Vanligen tar två negationer ut varandra.', 'Dubbel passivum','Bägge verben skall inte stå i passivum.', 'Dubbel supinum','Det senare av de bägge verben skall inte stå i supinum-form.', 'Gruppgenitiv','Det anses numera bättre att säga ' .'"Kungen av Danmarks bröstkarameller" ' . ' än "Kungens av Danmark bröstkarameller".', 'Engelsk genitiv','Svensk genitiv form skrivs utan \'.', 'Genitiv saknas','Skall inte egennamnet vara i genitivform?', 'Konsekvens - högtidligt','Var konsekvent vad gäller ' .'verbformer, högtidligt, t.ex. taga, gentemot lite ' .'mer normalt, t.ex. ta.', 'Konsekvens - talspråk','Var konsekvent vad gäller ' .'verbformer, talspråk, t.ex. dan, gentemot lite ' .'mindre ledigt, t.ex. dagen.', 'Infinitivmärke saknas','Ett infinitiv skall normal ' .'föregås av ett infintivmärke "att" eller ett ' .'hjälpverb som t.ex. "kan".', 'Tillkrånglat ord','Detta ord kan ofta ersättas med ett ' .'enklare och kortare ord.', 'Dubbelt mellanrum','Dubbelt mellanrum är ofta resultatet ' .'att fingrarna slinter på tangentbordet.', 'Mellanrum före skiljetecken','Före detta skiljetecken skall ' .'det inte vara mellanrum.', 'Mellanrum efter skiljetecken','Efter detta skiljetecken skall ' .'det inte vara mellanrum.', 'Inget mellanrum före skiljetecken','Före detta skiljetecken ' .'skall det vara mellanrum.', 'Inget mellanrum efter skiljetecken','Efter detta skiljetecken ' .'skall det vara mellanrum.', 'Mellanrum omkring skiljetecken','Kring detta skiljetecken skall ' .'det inte vara mellanrum på båda sidor.', 'Hopning av skiljetecken','Detta är ingen lämplig kombination ' .'av skiljetecken.', 'Felaktig pluralform','Detta är en pluralform, inte singular.', 'Prepositionsmöte','Flera prepositioner i rad brukar sällan ' .'fungera bra.', 'Presens particip','Presens particip-former gör ofta texten ' .'mer tungläst. Skriv enkel presens, t.ex. ' .'"sjunger" i stället för "är sjungande".', 'Presens passivum','Presens passivum skrivs ofta hellre med ' .'-s i stället för -es, t.ex. "skrivs" i stället för "skrives".', 'Sammanskrivet ord','Detta sammanskrivna ord bör delas upp ' .'som flera ord.', 'Särskrivet ord','Detta särskrivna ord skrivs normal enbart som ' .'ett enda ord.', 'Ofullständig sats','Denna sats förefaller inte innehålla något ' .'verb.', 'Skiftfel','Kombinationen av små och stora bokstäver i detta ord ' .'är inte normal.', 'Vokalmöte','Samma vokal i slutet av ett ord och i början av ' .'nästa ger inte alltid så bra uttal.', ); $granskningar = $query->param('Adjektiv') || $query->param('Adverbial') || $query->param('Dubbel negation') || $query->param('Dubbel passivum') || $query->param('Dubbel supinum') || $query->param('Genitiv') || $query->param('Högtidligt språk') || $query->param('Talspråk') || $query->param('Tempus') || $query->param('Infinitiv') || $query->param('Tillkrånglat språk') || $query->param('Ordmellanrum') || $query->param('Skiljetecken') || $query->param('Pluralform') || $query->param('Prepositionsmöte') || $query->param('Presens particip') || $query->param('Presens passivum') || $query->param('Samman-/Särskrivning') || $query->param('Sats') || $query->param('Skiftfel') || $query->param('Språklig skönhet') ; if ($granskningar) { # Om skall utfoeras naagra granskningar alls $_=$taggadtext; if ($query->param('Adjektiv')) { $traeffar{"Felaktig adjektivböjning"} += s/(¤N.[^×]+×o.[^¤]+¤[afF].[^×]+×o.[^¤]+)(¤J.[^×]+t)(×..[^¤]+)/\1$ordstart\2$ordslut${kommentarstart}Felaktig adjektivböjning${kommentarslut}\3/g; $traeffar{"Felaktig komparation"} += s/¤J.([a-zåäö]+[aouåeiyäö][^×]+(ande?|ende?|sk|samm?|ad)|[a-zåäö]*[aouåeiyäö][a-zåäö]*[aouåeiyäö][a-zåäö]*[aouåeiyäö][a-zåäö]*[aouåeiyäö][a-zåäö]*)(are|aste?)×../$ordstart$&$ordslut${kommentarstart}Felaktig komparation$kommentarslut/g; $traeffar{"Dubbel komparation"} += s/¤..(mer|mest)×o.[^¤]+(¤..[^×]+×o.[^¤]+)?¤..[^×]+(are|aste?)×../$ordstart$&$ordslut${kommentarstart}Dubbel komparation$kommentarslut/g; } if ($query->param('Adverbial')) { $traeffar{"Adverbialkedja"} += s/(¤.P[^¤]+(¤[QJ][^S][^¤]+)*¤.S[^×]+|¤A.[^×]+)×[^ksm].[^¤]+((¤.P[^¤]+(¤[QJ][^S][^¤]+)*¤.S[^×]+|¤A.[^×]+)×[^ksm].[^¤]+)+(¤.P[^¤]+(¤[QJ][^S][^¤]+)*¤.S[^×]+|¤A.[^×]+)×../$ordstart$&$ordslut${kommentarstart}Adverbialkedja$kommentarslut/g; } if ($query->param('Dubbel negation')) { $traeffar{"Dubbel negation"} += s/¤..(inte|ej|icke|varken|minst|knappast|utan|sakna(r|de|t)?s?)×o.[^¤]+(¤..[^×]+×o.[^¤]+)?(¤..[^×]+×o.[^¤]+)?¤..(inte|ej|icke|varken|minst|knappast|utan|sakna(r|de|t)?s?|(o(a|b[aeiloruyäö]|d[eijoruyö]|e|f[aeijoruäö]|g|h|i|j|k|l[aouyåäö]|n[ouåäö]|o|p[alorsuå]|r[uäö]|s[^t]|t[^t]|u|v|å|ä|ö)|im|ir|ill|miss|van|dis|kvasi|icke|non)[^×]*[aouåeiyäö][^×]+)×../$ordstart$&$ordslut${kommentarstart}Dubbel negation$kommentarslut/g; } if ($query->param('Dubbel passivum')) { $traeffar{"Dubbel passivum"} += s/(¤[ghvUIHGbc].[^×]+s×o.[^¤]+(¤[^K].[^×]+×o.[^¤]+)?¤[ghvUIHGbc].[^×]+s×..|¤[vUI].[^×]+s×o.[^¤]+(¤[^KM].[^×]+×o.[^¤]+)?¤[I0].[^×]+×..)/$ordstart$&$ordslut${kommentarstart}Dubbel passivum$kommentarslut/g; } if ($query->param('Dubbel supinum')) { $traeffar{"Dubbel supinum"} += s/(¤G.[^×]+t|¤U.[^×]+)×o.[^¤]+(¤[^K].[^×]+×o.[^¤]+)?¤U.[^×]+×../$ordstart$&$ordslut${kommentarstart}Dubbel supinum$kommentarslut/g; } if ($query->param('Genitiv')) { $traeffar{"Engelsk genitiv"} += s/¤[LN].[^×]+×..['¤]¤..s×../$ordstart$&$ordslut${kommentarstart}Engelsk genitiv$kommentarslut/g; $traeffar{"Gruppgenitiv"} += s/¤O.[^×]+×o.[^¤]+¤[EB].[^×]+×o.[^¤]+¤[LN].[^×]+×../$ordstart$&$ordslut${kommentarstart}Gruppgenitiv$kommentarslut/g; $traeffar{"Genitiv saknas"} += s/(¤L.[^×]+[^s])(×o.[^¤]+¤N.[^×]+×..)/$ordstart\1$ordslut${kommentarstart}Genitiv saknas$kommentarslut\2/g; } #verb-konsekvens-2¶konsekvens¶¤[HIF0].[^×]*(bli|ge|ha|ta)×...+¤[IHF].[^×]*(bliva|giva|hava|taga)×..|¤[HIF0].[^×]*(bliva|giva|hava|taga)×...+¤[IHF].[^×]*(bli|ge|ha|ta)×..¶¤[HIF0].[^×]*(bliva|giva|hava|taga|bli|ge|ha|ta)×..¶¶Högtidligt/Modernt språk¶ordmarkering if ($query->param('Högtidligt språk')) { $traeffar{"Konsekvens - högtidligt"} += s/(¤[HIF0].[^×]*(bliva|giva|hava|taga)×..)(.+)(¤[HIF0].[^×]*(bli|ge|ha|ta)×..)/$ordstart\1$ordslut${kommentarstart}Konsekvens - högtidligt$kommentarslut\3$ordstart\5$ordslut${kommentarstart}Konsekvens - högtidligt$kommentarslut/g; $traeffar{"Konsekvens - högtidligt"} += s/(¤[HIF0].[^×]*(bli|ge|ha|ta)×..)(.+)(¤[HIF0].[^×]*(bliva|giva|hava|taga)×..)/$ordstart\1$ordslut${kommentarstart}Konsekvens - högtidligt$kommentarslut\3$ordstart\5$ordslut${kommentarstart}Konsekvens - högtidligt$kommentarslut/g; } if ($query->param('Talspråk')) { $traeffar{"Konsekvens - talspråk"} += s/(¤..(nån|sån|sen)×..|¤..([^×]*[aouåeiyäö][^×]*)?(dan|stan)×..)(.+)(¤..(någon|sådan|sedan)×..|¤..([^×]*[aouåeiyäö][^×]*)?(dagen|staden)×..)/$ordstart\1$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut\5$ordstart\6$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut/g; $traeffar{"Konsekvens - talspråk"} += s/(¤..(någon|sådan|sedan)×..|¤..([^×]*[aouåeiyäö][^×]*)?(dagen|staden)×..)(.+)(¤..(nån|sån|sen)×..|¤..([^×]*[aouåeiyäö][^×]*)?(dan|stan)×..)/$ordstart\1$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut\5$ordstart\6$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut/g; $traeffar{"Konsekvens - talspråk"} += s/(¤..[mds]ig×..)(.+)(¤..[mds]ej×..)/$ordstart\1$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut\2$ordstart\3$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut/g; $traeffar{"Konsekvens - talspråk"} += s/(¤..[mds]ej×..)(.+)(¤..[mds]ig×..)/$ordstart\1$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut\2$ordstart\3$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut/g; $traeffar{"Konsekvens - talspråk"} += s/(¤..dem?×..)(.+)(¤..dom×..)/$ordstart\1$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut\2$ordstart\3$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut/g; $traeffar{"Konsekvens - talspråk"} += s/(¤..dom×..)(.+)(¤..dem?×..)/$ordstart\1$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut\2$ordstart\3$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut/g; $traeffar{"Konsekvens - talspråk"} += s/(¤..ska×..)(.+)(¤..skall×..)/$ordstart\1$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut\2$ordstart\3$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut/g; $traeffar{"Konsekvens - talspråk"} += s/(¤..skall×..)(.+)(¤..ska×..)/$ordstart\1$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut\2$ordstart\3$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut/g; $traeffar{"Konsekvens - talspråk"} += s/(¤v.(la|([^×]*[aouåeiyäö][^×]*)?sa))×..(.+)(¤v.(lade|([^×]*[aouåeiyäö][^×]*)?sade))×../$ordstart\1$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut\4$ordstart\5$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut/g; $traeffar{"Konsekvens - talspråk"} += s/(¤v.(lade|([^×]*[aouåeiyäö][^×]*)?sade))×..(.+)(¤v.(la|([^×]*[aouåeiyäö][^×]*)?sa))×../$ordstart\1$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut\4$ordstart\5$ordslut${kommentarstart}Konsekvens - talspråk$kommentarslut/g; } if ($query->param('Tempus')) { $traeffar{"Konsekvens - tempus"} += s/(¤[fghv].[^×]+)(.+)(¤[abcV].[^×]+)/$ordstart\1$ordslut${kommentarstart}Konsekvens - tempus$kommentarslut\2$ordstart\3$ordslut${kommentarstart}Konsekvens - tempus$kommentarslut/g; $traeffar{"Konsekvens - tempus"} += s/(¤[abcV].[^×]+)(.+)(¤[fghv].[^×]+)/$ordstart\1$ordslut${kommentarstart}Konsekvens - tempus$kommentarslut\2$ordstart\3$ordslut${kommentarstart}Konsekvens - tempus$kommentarslut/g; } if ($query->param('Infinitiv')) { $traeffar{"Infinitivmärke saknas"} += s/(^|×[ksm].[^¤]+)(¤[^MGgb].[^×]+×o.[^¤]+)*(¤I.[^×]+)×../\1\2$ordstart\3$ordslut${kommentarstart}Infinitivmärke saknas$kommentarslut/g; } if ($query->param('Tillkrånglat språk')) { $traeffar{"Tillkrånglat ord"} += s/(¤[UvVI][^×]*[aouåeiyäö][^×]*(ivisera|iktiga)[^×]*|¤..[^×]*[aouåeiyäö][^×]*(aktivitet|beteende|bild|enhet|funktion|förfarande|håll|komponent|läge|nivå|process|ram|resurs|sektor|sida|situation|struktur|ställning|system|verksamhet)(en|n|t|et)?(er|ar|ena|na|erna|arna)?s?|¤..(an|av|be|bort|efter|er|ex|fort|fram|från|före|för|genom|hän|här|inne|in|i|med|mot|ned|ner|om|på|samman|till|undan|under|uppe|upp|ur|utan|ut|över|åter|åt)[a-zåäö]*[aouåeiyäö][^×]+((het|ing)(en|er|erna)?s?|ande(t|n|ena)?s?))×../$ordstart$&$ordslut${kommentarstart}Tillkrånglat ord$kommentarslut/g; } if ($query->param('Ordmellanrum')) { $traeffar{"Dubbelt mellanrum"} += s/×.. +¤../$ordstart$&$ordslut${kommentarstart}Dubbelt mellanrum$kommentarslut/g; } if ($query->param('Skiljetecken')) { $traeffar{"Mellanrum före skiljetecken"} += s/×.. +([!\?]([^!¤\?]|¤..)|[\);,:\.])/$ordstart$&$ordslut${kommentarstart}Mellanrum före skiljetecken$kommentarslut/g; # Mellanrum foere skiljetecken $traeffar{"Inget mellanrum efter skiljetecken"} += s/(×..([\?!]+|;)(¤..|[^ ~"¤])|×..,([^ ¤]|¤[^Q].)|×m.\.¤..|×..[:\)]¤[^Q].)¶[;\?!,\.:\)\-]/$ordstart$&$ordslut${kommentarstart}Inget mellanrum efter skiljetecken$kommentarslut/g; #Inget mellanrum efter skiljetecken $traeffar{"Inget mellanrum före skiljetecken"} += s/×..\(/$ordstart$&$ordslut${kommentarstart}Inget mellanrum före skiljetecken$kommentarslut/g;#Inget mellanrum foere skiljetecken $traeffar{"Mellanrum efter skiljetecken"} += s/\( +¤../$ordstart$&$ordslut${kommentarstart}Mellanrum efter skiljetecken$kommentarslut/g;#Mellanrum efter skiljetecken $traeffar{"Mellanrum omkring skiljetecken"} += s/×..[^×]+"[^¤]+¤../$ordstart$&$ordslut${kommentarstart}Mellanrum omkring skiljetecken$kommentarslut/g; #Mellanrum baade foere och efter skiljetecken $traeffar{"Mellanrum omkring skiljetecken"} += s/×..[^×]+"[^¤]+¤../$ordstart$&$ordslut${kommentarstart}Mellanrum omkring skiljetecken$kommentarslut/g; #Mellanrum baade foere och efter skiljetecken $traeffar{"Hopning av skiljetecken"} += s/((×..|[^\.])\.\.([^¤\.]|¤..)|\.\.\.\.+¤..|[&;:,=+\-][&;:,=+\-\.\?!]+)/$ordstart$&$ordslut${kommentarstart}Hopning av skiljetecken$kommentarslut/g; } if ($query->param('Pluralform')) { $traeffar{"Felaktig pluralform"} += s/(¤..(ett|något|inget|detta)×o.[^¤]+(¤..[^×]+×o.[^¤]+)?¤..(data|centra|fakta|fora|futura|kuriosa|media)×..|¤..(datat|centrat|faktat|forat|futurat|kuriosat|mediat)×..)/$ordstart$&$ordslut${kommentarstart}Felaktig pluralform$kommentarslut/g; } if ($query->param('Prepositionsmöte')) { $traeffar{"Prepositionsmöte"} += s/(¤[BE][^×]+×o.[^¤]+)+¤[BE][^×]+×../$ordstart$&$ordslut${kommentarstart}Prepositionsmöte$kommentarslut/g; } if ($query->param('Presens particip')) { $traeffar{"Presens particip"} += s/¤[afF].[^×]+×o.[^¤]+((¤.P[^¤]+(¤[QJ][^S][^¤]+)*¤.S[^×]+|¤[AJ].[^×]+)×o.[^¤]+)*¤..[^×]*[aouåeiyäö][^×]*[ae]nde×../$ordstart$&$ordslut${kommentarstart}Presens particip$kommentarslut/g; } if ($query->param('Presens passivum')) { $traeffar{"Presens passivum"} += s/¤[VUIHGbc].[a-zåäö]+es×../$ordstart$&$ordslut${kommentarstart}Presens passivum$kommentarslut/g; } if ($query->param('Samman-/Särskrivning')) { $traeffar{"Sammanskrivet ord"} += s/¤[vVUI].((av|bort|dit|efter|fast|fel|fram|genom|hem|hit|hop|in|jämn|kvar|lös|med|mot|ned|ner|om|på|ren|samman|sönder|undan|upp|ur|ut|vid|kring|till|helig|hemlig|hädan|hän|istånd|isär|klar|kull|ledig|loss|överens)[^×]*[aouåeiyäö][^×]*|[^×]*[aouåeiyäö][^×]*(göra?|gjor(de|t)|(förklara|måla|betsa|färga)(r|de|t)?))×../$ordstart$&$ordslut${kommentarstart}Sammanskrivet ord$kommentarslut/g; $traeffar{"Sammanskrivet ord"} += s/¤..(akter(ifrån|om|ut)|allra(bäst|främst|först|helst|högst|minst)|allt(bättre|eftersom|fler|merochmer|som(×..[^¤]+)*oftast)|dess(bättre|värre)|dåför(×..[^¤]+)*tiden|där(bakom|borta|bortom|bredvid|framme|förbi|hemma|ikring|ini|inifrån|innanför|inne|inom|intill|inunder|inuti|invid|nedan|nedanför|nedifrån|nere|nerifrån|omkring|ovan|uppe|uppifrån|utanför|ute|utifrån|utmed|utomkring|utmed)|efterhand|enface|engros|enpassant|ettervärre|framförallt|fulltut|för(all(×..[^¤]+)*del|den(×..[^¤]+)*skull|handen|händer|ifrån|när|om|(×..[^¤]+)*såvitt|tidigt|ut|över|övrigt|edetta)|god(dag|natt|morgon|kväll|afton|middag|natt)|hartnära?|heltvisst|i(akt|går|dag|år|fjol|morgon|fred|fråga|gång|kapp|kraft|kras|land|styr|stånd|stället|synnerhet|väg|övrigt)|medens|mitt(emellan|inne|på|under|upp|över)|nogav|nu(×..[^¤]+)*förtiden|nuför(×..[^¤]+)*tiden|näranog|näst(efter|intill|invid)|om(hand|händer|intet)|på(nytt|väg)|rent(av|ut|utav)|runt(ikring|om|omkring)|spik(nykter|full)|splitt[a-zåäö]+|spritt[a-zåäö]+|så(här|där|ja|pass|när(×..[^¤]+)*som)|tidsnog|till(buds|dels|dess|finnandes|freds|fullo|fyllest|fånga|godo|handa|hands|känna|mötes|pass|reds|rygga|rätta|sinnes|sist|spillo|vara|viljes|väga|ända|äventyrs|övers|svidare)|tvärs(igenom|över)|tvärtigenom|underhand|uppochner[rd][a-zåäö]*|urstånd|utochin[a-zåäö]*|var(sin|sitt|sina)|åfärde|över(bord|huvud((×..[^¤]+)*taget)?|hövan|lag|nog|stag|styr|stäv|sig(×..[^¤]+)*given))×../$ordstart$&$ordslut${kommentarstart}Sammanskrivet ord$kommentarslut/g; $traeffar{"Särskrivet ord"} += s/¤..(allt×..[^¤]+¤..(efter(som)?|emellanåt|fort|för|ifrån|igenom|ihop|intill|mera?|nog|sedan)|apro×..[^¤]+¤..på|bort×..[^¤]+¤..emot|dess×..[^¤]+¤..förinnan|dess(×..[^¤]+¤..)?för×..[^¤]+¤..innan|därvid×..[^¤]+¤..lag|(en|ett)×..[^¤]+¤..var|för×..[^¤]+¤..(utom|visso)|gente×..[^¤]+¤..mot|hittill×..[^¤]+¤..dags|härom×..[^¤]+¤..(dagen|kvällen|natten|sistens|året)|härvid×..[^¤]+¤..|här(×..[^¤]+¤..)?vid×..[^¤]+¤..lag|i×..[^¤]+¤..(hjäl|hop|håg|sär|tu)|in×..[^¤]+¤..emot|engen×..[^¤]+¤..stans|lika×..[^¤]+¤..fullt|lik×..[^¤]+¤..väl|norr×..[^¤]+¤..(ifrån|ut)|nutill×..[^¤]+¤..dags|nu(×..[^¤]+¤..)?till×..[^¤]+¤..dags|någon×..[^¤]+¤..stans|nära×..[^¤]+¤..på|så×..[^¤]+¤..(vitt|väl)|söder×..[^¤]+¤..(ifrån|ut)|tvärt×..[^¤]+¤..(emot|om)|upp×..[^¤]+¤..emot|var×..[^¤]+¤..stans|visa×..[^¤]+¤..vi|väster×..[^¤]+¤..(ifrån|ut)|å×..[^¤]+¤..(sido|nyo)|åter×..[^¤]+¤..igen|öster×..[^¤]+¤..(ifrån|ut)|över×..[^¤]+¤..allt)×../$ordstart$&$ordslut${kommentarstart}Särskrivet ord$kommentarslut/g; } if ($query->param('Sats')) { $traeffar{"Ofullständig sats"} += s/(^|×[sm].[^¤]+)(¤[^fghvFGHVIabc].[^×]+×o.[^¤]+)*¤[^fghvFGHVI].[^×]+($|×[sm].[^¤]?)/$satsstart$&$satsslut${kommentarstart}Ofullständig sats$kommentarslut/g; } if ($query->param('Skiftfel')) { $traeffar{"Skiftfel"} += s/¤..(([^×]*[a-zåäö][A-ZÅÄÖ][^×]*)|([A-ZÅÄÖ][A-ZÅÄÖ]+[a-zåäö][^×]*))×../$ordstart$&$ordslut${kommentarstart}Skiftfel$kommentarslut/g; } if ($query->param('Språklig skönhet')) { $traeffar{"Vokalmöte"} += s/¤..[^×]*(a×o.[^¤]+¤..a|o×o.[^¤]+¤..o|u×o.[^¤]+¤..u|å×o.[^¤]+¤..å|e×o.[^¤]+¤..e|i×o.[^¤]+¤..i|y×o.[^¤]+¤..y|ä×o.[^¤]+¤..ä|ö×o.[^¤]+¤..ö)[^×]*×../$ordstart$&$ordslut${kommentarstart}Vokalmöte$kommentarslut/g; } # if ($query->param('')) { # $traeffar{""} += s//$ordstart$&$ordslut${kommentarstart}$kommentarslut/g; # } # if ($query->param('')) { # $traeffar{""} += s//$ordstart$&$ordslut${kommentarstart}$kommentarslut/g; # } # if ($query->param('')) { # $traeffar{""} += s//$ordstart$&$ordslut${kommentarstart}$kommentarslut/g; # } # if ($query->param('')) { # $traeffar{""} += s//$ordstart$&$ordslut${kommentarstart}$kommentarslut/g; # } # if ($query->param('')) { # $traeffar{""} += s//$ordstart$&$ordslut${kommentarstart}$kommentarslut/g; # } s/¤..//g; # Ta bort det som inte anvaents s/×..//g; s/$ordstart$satsslut/$satsslut$ordstart/g; s/$satsstart$ordslut/$ordslut$satsstart/g; s/$ordstart$satsstart/$satsstart$ordstart/g; s/$satsslut$ordslut/$ordslut$satsslut/g; $granskadtext=$_; print "${h2}Granskning${h2slut}\n"; print "

Granskad text

\n"; print $granskadtext, # $taggadtext ; print "

Kommentarer

\n"; print "\n"; while(($komm,$ver) = each(%verbal)) { if ($traeffar{$komm}) { print "\n"; } } print "<\/table>\n"; print "\n"; } if ($query->param('Läsbarhetsindex')) { print "${h2}Helhetsbedömningar${h2slut}\n"; $_ = $query->param("text");; $antaltecken = s/[^ ]//g; $_ = $taggadtext; $antalord = s/¤//g; $_ = $taggadtext; $antallaangaord = s/¤..[^×][^×][^×][^×][^×][^×][^×]+//g; $_ = $taggadtext; $hej = 3; # $antalmeningar = s/..//g; print $taggadtext; print "Antal tecken: ",$antaltecken,"
\n"; print "Antal ord: ",$antalord,"

\n"; print "Antal långa ord: ",$antallaangaord,"

\n"; print "Antal meningar: ",$hej,"

\n"; print "\n"; print "\n"; } if ($query->param('Ordklasser')) { # Ordklasser skall analyseras # Rubriktaggar @rubrik=('Okänt','Adverb','Partikel','Bestämning','Preposition','Kopula', 'Hjälpverb','Inifinitiv','Adjektiv','Konjunktion', # 'Egennamn','Infinitivmärke','Substantiv','Possesiv','Kvantifierare', 'Pronomen','Verb','Interjektion','Blandord', 'Versalord','Förkortning'); print $taggadtext; $_=$taggadtext; $antal[20]=s/¤..([^×]+(×t.\. ?¤..[^×][^×]?[^×]?)*×t.\. ?)/<\/b>$rubrik[20]<\/font>\1/g; s/×..//g; # Laesbara taggar: $antal[0]=s/¤0./<\/b><\/font>/g; $antal[1]=s/¤A./<\/b>$rubrik[1]<\/font>/g; $antal[2]=s/¤B./<\/b>$rubrik[2]<\/font>/g; $antal[3]=s/¤D./<\/b>$rubrik[3]<\/font>/g; $antal[4]=s/¤E./<\/b>$rubrik[4]<\/font>/g; $antal[5]=s/¤F./<\/b>$rubrik[5]<\/font>/g; $antal[5]+=s/¤a./<\/b>$rubrik[5]<\/font>/g; $antal[5]+=s/¤f./<\/b>$rubrik[5]<\/font>/g; $antal[6]=s/¤G./<\/b>$rubrik[6]<\/font>/g; $antal[6]+=s/¤H./<\/b>$rubrik[6]<\/font>/g; $antal[6]+=s/¤g./<\/b>$rubrik[6]<\/font>/g; $antal[6]+=s/¤h./<\/b>$rubrik[6]<\/font>/g; $antal[6]+=s/¤b./<\/b>$rubrik[6]<\/font>/g; $antal[6]+=s/¤c./<\/b>$rubrik[6]<\/font>/g; $antal[7]=s/¤I./<\/b>$rubrik[7]<\/font>/g; $antal[8]=s/¤J./<\/b>$rubrik[8]<\/font>/g; $antal[9]=s/¤K./<\/b>$rubrik[9]<\/font>/g; $antal[10]=s/¤L./<\/b>$rubrik[10]<\/font>/g; $antal[11]=s/¤M./<\/b>$rubrik[11]<\/font>/g; $antal[12]=s/¤N./<\/b>$rubrik[12]<\/font>/g; $antal[13]=s/¤O./<\/b>$rubrik[13]<\/font>/g; $antal[14]=s/¤Q./<\/b>$rubrik[14]<\/font>/g; $antal[15]=s/¤R./<\/b>$rubrik[15]<\/font>/g; $antal[16]=s/¤U./<\/b>$rubrik[16]<\/font>/g; $antal[16]+=s/¤V./<\/b>$rubrik[16]<\/font>/g; $antal[17]=s/¤i./<\/b>$rubrik[17]<\/font>/g; $antal[18]=s/¤l./<\/b>$rubrik[18]<\/font>/g; $antal[19]=s/¤q./<\/b>$rubrik[19]<\/font>/g; $antal[15]+=s/¤r./<\/b>$rubrik[15]<\/font>/g; $antal[16]+=s/¤v./<\/b>$rubrik[16]<\/font>/g; $antal[12]+=s/¤W./<\/b>$rubrik[12]<\/font>/g; $ordkltext=$_; # Presentation av ordklasser print "${h2}Ordklasser${h2slut}\n"; print "

Ordklassmarkeringar

$ordkltext",""; print "

Frekvenser

\n"; print "
NamnKommentar
",$komm,"", $ver,"
\n"; for ($i=1;$i<=20;$i++) { if ($antal[$i]) { print "\n"; } } } print "
OrdklassAntal
",$rubrik[$i],"", $antal[$i],"
"; print "

\n"; print "

\n"; print "Sidan är författad av Magnus Cedergren <magnus\@svmud.lysator.liu.se>\n"; print "
\n"; print "\n";