Menu

Diff of /syntax/asm.jsf [000000] .. [517113]  Maximize  Restore

Switch to side-by-side view

--- a
+++ b/syntax/asm.jsf
@@ -0,0 +1,257 @@
+# JOE syntax highlight file for assembly language
+
+# Highlights ';' comments, C-preprocessor stuff and C-like constants.
+
+# Some assembly languages do not use C-preprocessor and use '#' for
+# comments.  For them, eliminate all states up to ':idle'. and change the
+# ";" line in 'idle' to '#'.
+
+# For UNIX assembly ';' actually separates instructions, but I've only seen
+# this for 'rep; movsb'.  If it bothers you eliminate the ';' line in
+# ':idle'.
+
+# This highlighter is too strict for numeric constants.  Many assembly
+# languages allow '000009', which looks like a bad octal constant in C/UNIX.
+
+=Idle
+=Ident
+=Bad
+=Preproc
+=Define
+=Comment
+=IncLocal	+String +Preproc
+=IncSystem	+Preproc
+=Constant
+=Number		+Constant
+=String		+Constant
+=Character	+String
+=CharacterEscape +Escape +Character
+=StringEscape	+Escape +String
+=Type
+=Brace
+=Control
+
+:reset Idle
+	*		first		noeat
+	" \t"		reset
+
+:first Idle
+	*		idle		noeat
+	"#"		pre		recolor=-1
+
+:pre Preproc
+	*		preproc		noeat
+	" \t"		pre
+	"a-z"		preident	recolor=-1 buffer
+
+:preident Preproc
+	*		preproc		noeat strings
+	"define"	predef
+	"include"	preinc
+done
+	"a-z"		preident
+
+:preinc Preproc
+	*		preinc
+	" \t"		preinc_ws
+	"\n"		reset
+	
+:preinc_ws Preproc
+	*		prebad		recolor=-1
+	" \t"		preinc_ws
+	"\""		preinc_local	recolor=-1
+	"<"		preinc_system	recolor=-1
+
+:preinc_local IncLocal
+	*		preinc_local
+	"\"\n"		reset
+	
+:preinc_system IncSystem
+	*		preinc_system
+	">\n"		reset
+
+:prebad	Bad	
+	*		prebad
+	"\n"		reset
+
+
+:predef Preproc
+	*		predef
+	" \t"		predef_ws
+	"\n"		reset
+	
+:predef_ws Preproc
+	*		prebad		recolor=-1
+	" \t"		predef_ws
+	"a-zA-Z0-9_"	predef_ident	recolor=-1
+
+:predef_ident Define
+	*		idle		noeat
+	"a-zA-Z0-9_"	predef_ident
+
+
+:preproc Preproc
+	*		preproc
+	"\n"		reset
+	"\\"		preproc_cont
+	"/"		preproc_slash
+	
+:preproc_slash Preproc
+	*		preproc		noeat
+	"*"		comment		recolor=-2
+	"/"		line_comment	recolor=-2
+	
+:preproc_cont Preproc
+	*		preproc_cont
+	"\n"		preproc
+
+# All following states are for when we're not in a preprocessor line
+
+:idle Idle
+	*		idle
+	";"		line_comment	recolor=-1
+	"\n"		reset
+	"/"		slash
+	"0"		first_digit	recolor=-1
+	"1-9"		decimal	recolor=-1
+	"."		maybe_float
+	"\""		string		recolor=-1
+	"'"		char		recolor=-1
+	"a-zA-Z_"	ident		buffer
+	"{}"		brace		recolor=-1
+	",:=()><[]*&|!~+\-%^"	control		recolor=-1
+
+:brace Brace
+	*	idle	noeat
+
+:control Control
+	*	idle	noeat
+
+:slash Idle
+	*		idle		noeat recolor=-2	# Not sure about this
+	"*"		comment		recolor=-2
+	"/"		line_comment	recolor=-2
+
+:comment Comment comment
+	*		comment
+	"BFHNTX"        comment         noeat call=comment_todo.comment_todo()
+	"*"		maybe_end_comment
+
+:maybe_end_comment Comment comment
+	*		comment
+	"/"		idle
+	"*"		maybe_end_comment
+
+:line_comment Comment comment
+	*		line_comment
+	"BFHNTX"        line_comment         noeat call=comment_todo.comment_todo()
+	"\n"		reset
+
+:first_digit Number
+	*		idle	noeat
+	"xX"		hex
+	"."		float
+	"eE"		epart
+	"0-7"		octal
+	"89"		bad_number	recolor=-1
+
+:bad_number Bad
+	*		idle	noeat
+	"0-9"		bad_number
+
+:octal Number
+	*		idle	noeat
+	"0-7"		octal
+	"89"		bad_number	recolor=-1
+
+:hex Number
+	*		idle	noeat
+	"0-9A-Fa-f"	hex
+
+:decimal Number
+	*		idle	noeat
+	"0-9"		decimal
+	"eE"		epart
+	"."		float
+
+:maybe_float Number
+	*		idle	recolor=-2	noeat
+	"0-9"		float		recolor=-2
+
+:float Number
+	*		idle	noeat
+	"eE"		epart
+	"0-9"		float
+
+:epart Number
+	*		idle	noeat
+	"0-9+\-"	enum
+
+:enum Number
+	*		idle	noeat
+	"0-9"		enum
+
+:string	String string
+	*		string
+	"\""		idle
+	"\\"		string_escape	recolor=-1
+	"%"		string_control	recolor=-1
+
+:string_escape StringEscape string
+	*		string
+	"x"		string_hex1
+	"0-7"		string_octal2
+	"\n"		string		recolor=-2
+
+:string_hex1 StringEscape string
+	*		string		noeat
+	"0-9a-fA-F"	string_hex2
+
+:string_hex2 StringEscape string
+	*		string		noeat
+	"0-9a-fA-F"	string
+
+:string_octal2 StringEscape string
+	*		string		noeat
+	"0-7"		string_octal3
+
+:string_octal3 StringEscape string
+	*		string		noeat
+	"0-7"		string
+
+:string_control StringEscape string
+	*		string_control
+	"\n"		reset
+	"diouxXeEfFgGaAcspn%SC"	string
+
+:char CharacterEscape
+	*		char
+	"\n"		reset
+	"'"		idle
+	"\\"		char_escape	recolor=-1
+
+:char_escape CharacterEscape
+	*		char
+	"x"		char_hex1
+	"0-7"		char_octal2
+	"\n"		char		recolor=-2
+
+:char_hex1 CharacterEscape
+	*		char		noeat
+	"0-9a-fA-F"	char_hex2
+
+:char_hex2 CharacterEscape
+	*		char		noeat
+	"0-9a-fA-F"	char
+
+:char_octal2 CharacterEscape
+	*		char		noeat
+	"0-7"		char_octal3
+
+:char_octal3 CharacterEscape
+	*		char		noeat
+	"0-7"		char
+
+:ident Ident
+	*		idle		noeat
+	"a-zA-Z0-9_"	ident
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.