Syntax highlighting using Mediawiki formatting: Difference between revisions
Content added Content deleted
m (→{{header|PL/M}}: Typos) |
(Added XPL0 example.) |
||
Line 1,254: | Line 1,254: | ||
'' /* a file named */'' |
'' /* a file named */'' |
||
'' syntax_highlighting.wren */'' |
'' syntax_highlighting.wren */'' |
||
=={{header|XPL0}}== |
|||
Key words in XPL0 are easy to distinguish from variable names because |
|||
they start with lowercase letters while variables start with uppercase |
|||
letters. This program highlights its own code properly, but it will not |
|||
properly highlight all possible cases, such as when key words appear |
|||
in quoted strings. |
|||
'''proc''' CharOut(Ch); |
|||
'''int''' Ch; |
|||
'''begin''' |
|||
'''case''' Ch '''of''' |
|||
^': Text(0, "'"); |
|||
^&: Text(0, "&"); |
|||
^<: Text(0, "&lt;"); |
|||
^>: Text(0, "&gt;") |
|||
'''other''' ChOut(1, Ch); |
|||
'''end'''; |
|||
'''int''' Ch; |
|||
'''loop''' '''begin''' |
|||
ChOut(1, $20); ''\leading space'' |
|||
Ch:= ChIn(1); |
|||
'''loop''' '''begin''' |
|||
'''while''' Ch <= $20 '''do''' ''\pass whitespace to output'' |
|||
'''begin''' |
|||
'''if''' Ch = $1A ''\EOF\'' '''then''' '''return'''; |
|||
ChOut(1, Ch); |
|||
'''if''' Ch = $0A ''\LF\'' '''then''' '''quit'''; |
|||
Ch:= ChIn(1); |
|||
'''end'''; |
|||
'''if''' Ch = ^\ '''then''' ''\pass comment to output'' |
|||
'''begin''' |
|||
Text(0, "''"); ''\in italics'' |
|||
ChOut(1, Ch); |
|||
Ch:= ChIn(1); |
|||
'''while''' Ch#^\ & Ch#$0A ''\LF\'' '''do''' |
|||
'''begin''' |
|||
CharOut(Ch); Ch:= ChIn(1); |
|||
'''end'''; |
|||
'''if''' Ch = ^\ '''then''' ChOut(1, Ch); |
|||
Text(0, "''"); |
|||
'''if''' Ch = $0A ''\LF\'' '''then''' |
|||
'''begin''' |
|||
ChOut(1, Ch); '''quit'''; |
|||
'''end'''; |
|||
Ch:= ChIn(1); |
|||
'''end''' |
|||
'''else''' '''if''' Ch>=^a & Ch<=^z '''then''' ''\pass key words to output'' |
|||
'''begin''' |
|||
Text(0, "'''"); ''\in bold'' |
|||
'''while''' Ch>=^a & Ch<=^z '''do''' |
|||
'''begin''' |
|||
ChOut(1, Ch); Ch:= ChIn(1); |
|||
'''end'''; |
|||
Text(0, "'''"); |
|||
'''end''' |
|||
'''else''' '''begin''' ''\pass anything else'' |
|||
'''repeat''' CharOut(Ch); |
|||
Ch:= ChIn(1); |
|||
'''until''' Ch <= $20; ''\until whitespace'' |
|||
'''end'''; |
|||
'''end'''; |
|||
'''end''' |