Scintilla.iface will need a language number (120 should of course be the next in line):

val SCLEX_VISUALPROLOG=120

And some lexical states (I do not know what the "lex" line means, so the one I have written may be wrong):

# Lexical states for SCLEX_VISUALPROLOG

lex VisualProlog=SCLEX_VISUALPROLOG SCE_VISUALPROLOG_

val SCE_VISUALPROLOG_DEFAULT=0

val SCE_VISUALPROLOG_KEYMAJOR=1

val SCE_VISUALPROLOG_KEYMINOR=2

val SCE_VISUALPROLOG_KEYDIRECTIVE=3

val SCE_VISUALPROLOG_COMMENT=4

val SCE_VISUALPROLOG_COMMENT2=5

val SCE_VISUALPROLOG_COMMENT3=6

val SCE_VISUALPROLOG_COMMENTLINE=7

val SCE_VISUALPROLOG_COMMENTKEY=8

val SCE_VISUALPROLOG_COMMENTKEYERROR=9

val SCE_VISUALPROLOG_IDENTIFIER=10

val SCE_VISUALPROLOG_VARIABLE=11

val SCE_VISUALPROLOG_ANONYMOUS=12

val SCE_VISUALPROLOG_NUMBER=13

val SCE_VISUALPROLOG_STRING=14

val SCE_VISUALPROLOG_STRINGVERBATIM=15

val SCE_VISUALPROLOG_STRINGEOLOPEN=16

val SCE_VISUALPROLOG_CHARACTER=17

val SCE_VISUALPROLOG_OPERATOR=18

val SCE_VISUALPROLOG_STRINGESCAPE=19

val SCE_VISUALPROLOG_STRINGESCAPEERROR=20

val SCE_VISUALPROLOG_STRINGVERBATIMSPECIAL=21

val SCE_VISUALPROLOG_STRINGVERBATIMEOL=22