flat assembler
Message board for the users of flat assembler.
Index
> Tutorials and Examples > Syntax Highlighter: Convert Code 2 HTML |
Author |
|
m3ntal 10 Apr 2014, 19:55
A minimal syntax highlighter (HTML+CSS) written in FASM's preprocessor language. Supports comments, numbers, 'strings' and operators. Easily customizable and upgradable.
How To: In NAME.ASM, specify SOURCE.EXT file/s then Run/F9 to generate *.HTML. Preview: Code: ; EXAMPLE.ASM>*.HTML include 'html.inc' source.file equ 'DRAW.INC' title.t equ 'Drawing Functions' comment.color equ '#A0A0A0' number.color equ '#5E00F7' symbol.color equ '#2207FF' string.color equ '#FF1777' html.begin html.code source.file html.end Code: ;;;;;;;;;;;;;;;;;;;; HTML.INC ;;;;;;;;;;;;;;;;;;;; format binary as 'HTML' is.symbol? equ \ a=';' | a=27h | a=22h | a='=' | a=',' | \ a='+' | a='-' | a='*' | a='/' | a='%' | \ a='\' | a='(' | a=')' | a='{' | a='}' | \ a='[' | a=']' | a='<' | a='>' | a='~' | \ a='&' | a='|' | a='^' | a=':' | a='#' | a='`' is.symbolic? equ \ a='_' | a='.' | a='?' | a='!' | a='@' | a='$' is.space? equ (a=' ' | a=9) is.return? equ (a=0Dh | a=0Ah) is.white? equ (is.space? | is.return?) is.string? equ (a=27h | a=22h) is.upper? equ (a>='A' & a<='Z') is.lower? equ (a>='a' & a<='z') is.alpha? equ (is.upper? | is.lower?) is.name? equ (is.alpha? | is.symbolic?) is.number? equ (a>='0' & a<='9') is.hex.a? equ (a>='a' & a<='f') is.hex.A? equ (a>='A' & a<='F') is.digit? equ (is.hex.a? | is.hex.A?) is.suffix? equ (a='h' | a='H' | a='b' | a='B') is.end? equ (is.white? | is.symbol?) R equ 0Dh,0Ah macro htmlx [p] { forward db p } macro html [p] { common htmlx p, R } macro html.begin title { html '<!DOCTYPE html>', '<html>', '<head>' html '<meta http-equiv="content-type"' html 'context="text/html; charset=windows-1252">' html '<title>', title.t, '</title>', '</head>' html '<body bgcolor="#FFFFFF">', '<b>', R html '<style>', R, 'body {' html ' font-size: 18px;' html ' font-weight: bold;' html ' width: 720px;' html ' font-family: "Consolas",' html ' "Bitstream Vera Sans Mono",' html ' "Courier New", "Courier",' html ' "Andale Mono WT", "Andale Mono",' html ' "Lucida Console", "DejaVu Sans Mono",' html ' "Monaco", monospace;' html '}', R html '.comment {' htmlx ' color: ', comment.color, ';', R html ' font-style: italic;' html '}', R htmlx '.symbol { color: ', symbol.color, '; }', R htmlx '.number { color: ', number.color, '; }', R htmlx '.string { color: ', string.color, '; }', R html '</style>', R } macro html.text t, a { db '<font color="#000000" size="4" ' db 'face="Times New Roman">', R db '<p align="', `a, '">', R db t, R, '</p>', '</font>', R, R } macro html.subject s, a { db '<font color="#000000" size="5" ' db 'face="Times New Roman">', R db '<p align="', `a, '"><u><i>', R db s, R, '</i></u></p>', '</font>', R, R } macro html.end { html '</body>', '</html>' } macro style name { db '<span class=''', `name, '''>' } macro end.style { db '</span>' } Code: ;;;;;;;;; SOURCE CODE, SYNTAX HIGHLIGHT ;;;;;;;;;; ; load/extract/insert source file with ; syntax highlighting macro html.code name { local p, i, line.n,\ in.comment?, in.number?, in.string? db '<pre style="background:white; color:black;', R db 'border:2px solid white; padding:.2em .2em;">', R virtual at 0 p:: file name file.$=$ end virtual line.n=1 in.comment?=0 in.number?=0 in.string?=0 i=0 while i<file.$ load a byte from p:i if a=0Dh line.n=line.n+1 end if if in.comment? if a=0Dh in.comment?=0 end.style end if db a else if in.number? if is.end? in.number?=0 end.style end if db a else if in.string? if is.string? in.string?=0 db a end.style else db a end if else if is.number? c=a if in.number?=0 if i>0 load a byte \ from p:i-1 if ((is.end? | \ ~is.name?) & \ ~is.number?) in.number?=1 style number end if else in.number?=1 style number end if end if db c else if is.string? in.string?=1 style string db a else if is.symbol? if a=';' in.comment?=1 style comment db a else style symbol db a end.style end if else db a end if i=i+1 end while db '</pre>' } New: [ARM] Magic-ARM Library, Import/Export
|
|||||||||||
10 Apr 2014, 19:55 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.