--- 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.