# PASCAL highlighter for JOE # With support for Delphi and FPC by Michael Van Canneyt =Idle =Comment =Constant =String +Constant =Number +Constant =Type =Keyword =Statement +Keyword =Operator +Keyword =Loop +Statement =Conditional +Statement =DefinedFunction +DefinedIdent =Builtin +DefinedFunction =Structure +Type =Bad :idle Idle * idle "\i" ident buffer "(" maybe_comment "/" maybe_linecomment "{" comment recolor=-1 "'" string recolor=-1 "$" maybe_hex_number "%" maybe_bin_number "&" maybe_oct_number "0-9" number recolor=-1 # Comments :maybe_comment Idle * idle noeat "*" comment recolor=-2 :maybe_linecomment Idle * idle noeat "/" line_comment recolor=-2 :line_comment Comment comment * line_comment "BFHNTX" line_comment noeat call=comment_todo.comment_todo() "\n" reset :comment Comment comment * comment "BFHNTX" comment noeat call=comment_todo.comment_todo() "*" maybe_end_comment "}" idle :maybe_end_comment Comment comment * comment noeat ")" idle # String constant :string String string * string "\n" idle "'" maybe_end_string :maybe_end_string String string * idle recolor=-1 noeat "'" string # Numeric constant :maybe_hex_number Idle * idle noeat "0-9A-Fa-f" hex_number recolor=-2 :maybe_bin_number Idle * idle noeat "01" bin_number recolor=-2 :maybe_oct_number Idle * idle noeat "0-7" oct_number recolor=-2 :bad Bad * idle noeat :hex_number Number * idle noeat "0-9" hex_number "a-fA-F" hex_number :bin_number Number * idle noeat "01" bin_number "2-9" bad recolor=-1 :oct_number Number * idle noeat "0-7" oct_number "89" bad recolor=-1 :number Number * idle noeat "0-9" number "eE" epart "." dot :dot Number * idle noeat "0-9" float :float Number * idle noeat "eE" epart "0-9" float :epart Number * idle noeat "0-9+\-" enum :enum Number * idle noeat "0-9" enum # Keywords :ident Idle * idle noeat istrings "and" operator "array" type "begin" kw "case" cond "const" kw "div" operator "do" kw "downto" kw "else" cond "end" kw "file" kw "for" loop "function" kw "goto" loop "if" cond "in" kw "label" kw "mod" operator "nil" word_constant "not" operator "of" kw "or" operator "packed" kw "procedure" kw "program" kw "record" kw "repeat" loop "set" kw "then" kw "type" kw "until" loop "var" kw "while" loop "with" kw # Delphi keywords "to" kw "try" kw "finally" kw "raise" kw "absolute" kw "cdecl" kw "stdcall" kw "register" kw "interface" struct "library" kw "constructor" kw "destructor" kw "dispinterface" kw "inherited" kw "public" kw "private" kw "published" kw "protected" kw "initialization" kw "finalization" kw "class" struct "object" kw "resourcestring" kw "property" kw "threadvar" kw "integer" type "boolean" type "real" type "char" type "string" type "text" type "abs" function "atan" function "arctan" function "concat" function "cos" function "eof" function "eoln" function "exp" function "insert" function "length" function "ln" function "log" function "odd" function "ord" function "page" function "pred" function "round" function "sin" function "sqr" function "sqrt" function "succ" function "trun" function done "\c" ident :kw Keyword * idle noeat :type Type * idle noeat :loop Loop * idle noeat :cond Conditional * idle noeat :struct Structure * idle noeat :operator Operator * idle noeat :word_constant Constant * idle noeat :function Builtin * idle noeat