Menu

[9a052e]: / syntax / vhdl.jsf  Maximize  Restore  History

Download this file

213 lines (183 with data), 3.0 kB

# JOE syntax highlight file for VHDL

# Define colors

=Idle
=Comment green
=Constant cyan
=Escape bold cyan
=Keyword bold
=Operator bold

# All following states are for when we're not in a preprocessor line

:idle Idle
	*		idle
	"-"		maybe_comment
	"'"		char		recolor=-1
	"\""		string		recolor=-1
	"0-9"		first_digit	recolor=-1
	"."		maybe_float
	"\""		string		recolor=-1
	"Bb"		maybe_binary	buffer
	"Oo"		maybe_octal	buffer
	"Xx"		maybe_hex	buffer
	"ac-np-wyzAC-NP-WYZ"	ident	buffer

:maybe_comment Idle
	*		idle		noeat
	"-"		comment		recolor=-2

:comment Comment
	*		comment
	"\n"		idle


# Character constant

:char Constant
	*		char
	"'"		idle

# Strings

:maybe_binary Idle
	*		ident		noeat
	"\""		string		recolor=-2

:maybe_octal Idle
	*		ident		noeat
	"\""		string		recolor=-2

:maybe_hex Idle
	*		ident		noeat
	"\""		string		recolor=-2

:string	Constant
	*		string
	"\n"		idle
	"\""		idle
	"\\"		string_escape	recolor=-1

:string_escape Escape
	*		string
	"\n"		string		recolor=-2

# Integer constants

:first_digit Constant
	*		idle		noeat
	"."		float
	"_"		first_digit
	"0-9"		first_digit

# Floating point

:maybe_float Constant
	*		idle	recolor=-2	noeat
	"0-9"		float		recolor=-2

:float Constant
	*		idle	noeat
	"eE"		epart
	"0-9"		float

:epart	Constant
	*		idle	noeat
	"0-9+\-"	enum

:enum	Constant
	*		idle	noeat
	"0-9"		enum

# Identifiers

:ident	Idle
	*		quote		noeat istrings
	"abs"		operator
	"access"	kw
	"after"		kw
	"alias"		kw
	"all"		kw
	"and"		operator
	"architecture"	kw
	"array"		kw
	"assert"	kw
	"attribute"	kw
	"begin"		kw
	"block"		kw
	"body"		kw
	"buffer"	kw
	"bus"		kw
	"case"		kw
	"component"	kw
	"configuration"	kw
	"constant"	kw
	"disconnect"	kw
	"downto"	kw
	"else"		kw
	"elsif"		kw
	"end"		kw
	"entity"	kw
	"exit"		kw
	"file"		kw
	"for"		kw
	"function"	kw
	"generate"	kw
	"generic"	kw
	"group"		kw
	"guarded"	kw
	"if"		kw
	"impure"	kw
	"in"		kw
	"inertial"	kw
	"inout"		kw
	"is"		kw
	"label"		kw
	"library"	kw
	"linkage"	kw
	"literal"	kw
	"loop"		kw
	"map"		kw
	"mod"		operator
	"nand"		operator
	"new"		kw
	"next"		kw
	"nor"		operator
	"not"		operator
	"null"		kw
	"of"		kw
	"on"		kw
	"open"		kw
	"or"		operator
	"others"	kw
	"out"		kw
	"package"	kw
	"port"		kw
	"postponed"	kw
	"procedure"	kw
	"process"	kw
	"process"	kw
	"pure"		kw
	"range"		kw
	"record"	kw
	"register"	kw
	"reject"	kw
	"rem"		operator
	"report"	kw
	"return"	kw
	"rol"		operator
	"ror"		operator
	"select"	kw
	"severity"	kw
	"shared"	kw
	"signal"	kw
	"sla"		operator
	"sll"		operator
	"sra"		operator
	"srl"		operator
	"subtype"	kw
	"then"		kw
	"to"		kw
	"transport"	kw
	"type"		kw
	"unaffected"	kw
	"units"		kw
	"until"		kw
	"use"		kw
	"variable"	kw
	"wait"		kw
	"when"		kw
	"while"		kw
	"with"		kw
	"xnor"		operator
	"xor"		operator
done
	"a-zA-Z0-9_"	ident

:operator Operator
	*	idle	noeat

:kw Keyword
	*	idle	noeat

# identifiers separated with quote '

:quote	Idle
	*	idle	noeat
	"'"	quote_word

:quote_word	Idle
	*	idle	noeat
	"a-zA-Z"	ident	buffer
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.