////////////////////////////////////////////////////////////////////////////// // // ConTEXT highlighter for Hugo // ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// // language name Language: Hugo Description: ConTEXT highlighter for the Hugo IF language. ////////////////////////////////////////////////////////////////////////////// // default file filter // note: if more than one extension is associated, eg: // C/C++ files (*.c,*.cpp,*.h,*.hpp)|*.c;*.cpp;*.h;*.hpp Filter: Hugo files (*.hug,*.h,*.g)|*.hug;*.h;*.g ////////////////////////////////////////////////////////////////////////////// // help file which will be invokend when F1 is pressed HelpFile: ////////////////////////////////////////////////////////////////////////////// // language case sensitivity // 0 - no // 1 - yes CaseSensitive: 0 ////////////////////////////////////////////////////////////////////////////// // comment type: LineComment - comment to the end of line // BlockCommentBeg - block comment begin, it could be // multiline // BlockCommentEnd - block comment end LineComment: ! BlockCommentBeg: !\ BlockCommentEnd: \! ////////////////////////////////////////////////////////////////////////////// // identifier characters (vbScript characters must begin with alphabetic char)... // note: characters shouldn't be delimited, except arrays // array of chars could be defined as from_char..to_char IdentifierBegChars: A..Z a..z _ 0..9 IdentifierChars: a..z A..Z _ 0..9 ////////////////////////////////////////////////////////////////////////////// // numeric constants begin characters (vbs: exc. &Hnnnn, inc. # for date consts)... // note: characters shouldn't be delimited, except arrays // array of chars could be defined as from_char..to_char // number always starts with 0..9 except when NumConstBeg // defines other NumConstBegChars: 0..9 +- ////////////////////////////////////////////////////////////////////////////// // numeric constants characters // note: characters shouldn't be delimited, except arrays // array of chars could be defined as from_char..to_char // number always starts with 0..9 except when NumConstBeg // defines other NumConstChars: 0..9 +- ////////////////////////////////////////////////////////////////////////////// // escape character EscapeChar: \ ////////////////////////////////////////////////////////////////////////////// // keyword table // note: delimited with spaces, lines can be wrapped. // You may divide keywords into two (or more) groups, // which may then be highlighted differently... KeyWords1: // Global variables that look like constants (well, they're capitalized...) MAX_MENUITEMS MAX_SCORE MAX_RANK SL_TEXTCOLOR SL_BGCOLOR STATUSTYPE TEXTCOLOR TIME_DAY TIME_HOURS TIME_MINUTES TIME_MONTH TIME_SECONDS TIME_YEAR UNDO_OFF WAIT_TURN_COUNT INVENTORY_MASK // Compilation constants DEBUG DEBUG_SMALL PRECOMPILED_LIBRARY OLD_STYLE_PRONOUNS // library functionality inclusion/exclusion NO_AUX_MATH NO_FUSES NO_MENUS NO_OBJLIB NO_RECORDING NO_SCRIPTS NO_STRING_ARRAYS NO_UNDO NO_VERBS NO_XVERBS USE_ATTACHABLES USE_CHECKHELD USE_PLURAL_OBJECTS USE_VEHICLES VERBSTUBS // All other constants // static limit settings MAXATTRIBUTES MAXGLOBALS MAXLOCALS MAXALIASES MAXARRAYS MAXCONSTANTS MAXDICT MAXDICTEXTEND MAXEVENTS MAXFLAGS MAXLABELS MAXOBJECTS MAXPROPERTIES MAXROUTINES MAX_PLURALS MAX_SCRIPTS MAX_SCRIPT_STEPS MAX_WORDS // rousource file constants MUSIC_STOP SOUND_STOP STAT_UNAVAILABLE STAT_NOFILE STAT_NORESOURCE STAT_LOADERROR // game setup and display constants AFTER_PERIOD BGCOLOR DEFAULT_FONT FORMAT INDENT_SIZE DEF_FOREGROUND DEF_BACKGROUND DEF_SL_FOREGROUND DEF_SL_BACKGROUND MATCH_FOREGROUND BLACK BLUE GREEN CYAN RED MAGENTA BROWN WHITE DARK_GRAY LIGHT_BLUE LIGHT_GREEN LIGHT_CYAN LIGHT_RED LIGHT_MAGENTA YELLOW BRIGHT_WHITE LIST_F NORECURSE_F NOINDENT_F DESCFORM_F GROUPPLURALS_F NOPARENTHESES_F BOLD_ON ITALIC_ON UNDERLINE_ON PROP_ON BOLD_OFF ITALIC_OFF UNDERLINE_OFF PROP_OFF MENU_TEXTCOLOR MENU_BGCOLOR MENU_SELECTCOLOR MENU_SELECTBGCOLOR // system constants and device interaction DOWN_ARROW ENTER_KEY ESCAPE_KEY FILE_CHECK GAME_RESET INIT_RANDOM LEFT_ARROW MINIMAL_INTERFACE MOUSE_CLICK NORMALIZE_RANDOM PAUSE_100TH_SECOND PAUSE_SECOND READ_KEY RIGHT_ARROW SYSTEM_TIME UP_ARROW // miscellaneous AND_WORD ARE_WORD BANNER BEST_PARSE_RANK CHECKHELD_LIMIT D_FINDOBJECT D_FUSES D_OBJNUM D_PARSE D_PARSE_RANK D_SCRIPTS FINDOBJECT_KNOWN FINDOBJECT_NONLIVING FIRSTCAPITAL_F HERE_WORD HUGO_VERSION INVENTORY_F IN_WORD ISORAREHERE_F ISORARE_F IS_WORD LAST_PARSER_STATUS LAST_SINGLE_OBJECT ON_WORD PARSE_RANK_TESTS PARSER_ACTIVE PARSER_RESET PARSER_STATUS PERFORM_QUEUE PRONOUNS_SET STAT_NOERROR TEMPLIST_F USECHARNAMES_F VERB_IS_XVERB _COMPILING_HUGOLIB _HUGOFIX_H _HUGOFIX_G _HUGOLIB_H _OBJLIB_H _RESOURCE_H _SYSTEM_H _VERBLIB_G _VERBLIB_H _VERBSTUB_G _VERBSTUB_H _WINDOW_H KeyWords2: // Compilation controls endif include ifclear ifset link set switches warning // Keywords and commands alias and anything array attribute break call capital case child children class cls color colour compound constant else elseif enumerate event for global globals if in input is jump local locate move multi multiheld multinotheld music nearby newline not // I'm going with "object" as a global, since the syntax highlighter can't interpret usage. notheld number or parent parse pause picture playback print printchar prompt property quit random readfile readval recordoff recordon removal remove repeat replace restart restore resource return routine run runevents save scriptoff scripton select serial sibling sound start step string synonym system text to undo undefined verb video while window writefile writeval xverb younger youngest KeyWords3: // Parser routines (verbs, commands, etc.) // standard action verb routines DoAsk DoAskQuestion DoAttachObject DoClose DoDetachObject DoDrink DoDrop DoEat DoEmpty DoEnter DoExit DoGet DoGive DoGo DoHello DoHit DoInventory DoListen DoLock DoLook DoLookAround DoLookIn DoLookThrough DoLookUnder DoMove DoMoveinVehicle DoOpen DoPutIn DoPutOnGround DoShow DoSit DoStand DoSwitchOff DoSwitchOn DoTakeOff DoTalk DoTell DoUnlock DoVague DoWait DoWaitforChar DoWaitUntil DoWear // non-action verb routines DoBrief DoDisplay DoRecordOnOff DoRestart DoRestore DoSave DoScriptOnOff DoScore DoSuperbrief DoUndo DoVerbose DoQuit // verb stub routines DoBurn DoClimb DoClimbOut DoCut DoDig DoFollow DoHelp DoHelpChar DoJump DoKiss DoNo DoPull DoPush DoSearch DoSleep DoSmell DoSorry DoSwim DoThrowAt DoTie DoTieR DoTouch DoUntie DoUse DoWake DoWakeCharacter DoWave DoWaveHands DoYell DoYes // library parser routines DoDropOrExit DoEmptyGround DoEmptyOrGet DoDrop_CheckHeld DoPutIn_CheckHeld DoPutonGround_CheckHeld DoSwitchOnOff // NPC action Routines CharWait CharMove CharGet CharDrop // Other library routines // text printing routines Art The CArt CThe IsorAre MatchPlural MatchSubject // string array routines StringCompare StringCopy StringDictCompare StringEqual StringLength StringPrint // fuse/daemon routines Activate Deactivate // character script routines CancelScript FindScript LoopScript PauseScript ResumeScript SkipScript Script RunScripts // debugging routines CheckParserConflicts DoHugoFix DrawBranch HugoFixAudit ListParserConflicts OnorOff PrintParserInfoForObject // resource routines LoadPicture PictureinText PlaySound PlayMusic // higher math routines abs higher lower mod pow // fundamental game routines main init // miscellaneous Acquire AddIdentical AddSpecialDesc AfterRoutines AnyVerb AssignPronoun Attachable_CheckAttachedTo Attachable_CheckAttachments Attachable_CheckChildren Attachable_MoveAttached Attachable_MoveAttachedTo Attachable_MoveChildren BeforeRoutines CalculateHolding CallVerbCheckHeld CenterTitle CheckReach Contains CurrentCommandWords CustomError DarkWarning DeleteWord DescribePlace DigitWord EndGame ExcludeFromAll FindLight FindObject Font GetInput GetSystemTimeValue HoursMinutes ImplicitTake ImplicitTakeForDrop Indent InList InitPluralObjects InsertWord IsPossibleXobject KeepWaiting ListAttachments ListObjects Menu Message MoveAllAttachables MovePlayer NewMessages NewOMessages NewParseError NewVMessages NumberWord ObjectAttach ObjectDetach ObjectIs ObjectisAttached ObjectisKnown ObjectisLight ObjWord OMessage Parse ParseCheckHeld ParseError ParseError_ObjectIsKnown ParsePluralObjects Perform PreParse PrintEndGame PrintReplacedPronouns PrintScore PrintStatusLine PropertyList PutInScope RemoveCheckHeldObj RemoveFromScope RemoveIdentical ResetCheckHeld ResetParse RunScripts SetObjWord SetupDirectionObjects SetVerbHeldmode ShortDescribe SpeakTo SpecialDesc StringToNumber TestObjectIs TheorThat VerbWord VerbHeldMode VMessage WhatsIn WordisNumber YesorNo KeyWords4: // Library objects // compass direction objects n_obj e_obj ne_obj ne_obj se_obj s_obj sw_obj w_obj nw_obj u_obj d_obj in_obj out_obj // pronoun objects it_obj her_obj him_obj them_obj // other library objects audio checkheld display her_object him_object it_object them_object last_library_object // Library classes // pronoun classes himself herself itself themselves // miscellaneous attachable character component daemon direction door female_character fuse identical_class player_character player_class plural_class room scenery self_class vehicle window_class KeyWords5: // Most global variables actor counter customerror_flag debug_flags endflag event_flag general last_object last_resourcefile // ("last_resource_file" seems to be a misprint in the Hugo book for "last_resourcefile") last_resource_file light_source list_count list_nest location need_newline nothing number_scripts object objects obstacle old_location override_indent player player_person pluralobj_heldmode plural_count score self speaking system_status verbosity verbroutine words xobject // Library properties // room direction properties n_to ne_to e_to s_to se_to w_to sw_to nw_to u_to d_to in_to out_to cant_go // fuse and daemon properties activate_event deactivate_event tick timer // display object properties cursor_column cursor_row hasgraphics hasvideo linelenght needs_repaint pointer_x pointer_y screenheight screenwidth statusline_height title_caption windowlines // audio object properties current_music current_music_looping current_music_resfile current_music_volume current_sound current_sound_looping current_sound_resfile current_sound_volume // window class properties win_active win_backcolor win_bottom win_clear win_end win_init win_left win_textcolor win_title win_titleback win_titlecolor win_top win_right // miscellaneous properties adjective adjectives after article attachable_to attached_desc attached_to attach_drop attach_immobile attach_longdesc attach_prep attach_shortdesc attach_take attach_verb attach_verbs before between capacity contains_desc desc_detail detach_prep detach_verb detach_verbs dir_to dir_from door_to each_turn exclude_from_all extra_scenery found_in holding identical_to ignore_response initial_desc inv_desc in_scope key_object linelength list_contents long_desc misc name noun nouns nounspreposition order_response parse_rank part_of pluralobj_number plural_is plural_of plural_parse_rank plural_verbs prep preposition pronoun pronouns reach react_before react_after short_desc single_noun size type vehicle_move vehicle_path vehicle_verb vehicle_verbs when_closed when_open self_object self_resolve // Library arrays // Character script arrays scriptdata setscript // other library arrays menuitem oldword parser_data plurals ranking replace_pronoun word _time_string _temp_string _win_title_string // Library attributes active already_listed checkheld_flag clothing container enterable female hidden known light living lockable locked mobile moved open openable platform plural quiet readable special static switchable switchedon transparent unfriendly visited worn workflag ////////////////////////////////////////////////////////////////////////////// // string delimiter: StringBegChar - string begin char // StringEndChar - string end char // MultilineStrings - enables multiline strings, (as in perl) StringBegChar: " StringEndChar: " MultilineStrings: 1 ////////////////////////////////////////////////////////////////////////////// // use preprocessor: 0 - no; 1 - yes // note: if yes, '#' and statements after it will be // highlighted with Preprocessor defined colors UsePreprocessor: 0 ////////////////////////////////////////////////////////////////////////////// // highlight line: 0 - no; 1 - yes // note: if yes, current line will be highlighted CurrLineHighlighted: 1 ////////////////////////////////////////////////////////////////////////////// // colors // note: first value is foreground, second is background color // and third (optional) represents font attribute: // B - bold // I - italic // U - underline // S - strike out // attributes can be combined: eg. B or BI // may be specified as text (any standard windows color): // clBlack, clMaroon, clGreen, clOlive, clNavy, // clPurple, clTeal, clGray, clSilver, clRed, clLime, // clYellow, clBlue, clFuchsia, clAqua, clLtGray, // clDkGray, clWhite, clScrollBar, clBackground, // clActiveCaption, clInactiveCaption, clMenu, clWindow, // clWindowFrame, clMenuText, clWindowText, clCaptionText, // clActiveBorder, clInactiveBorder, clAppWorkSpace, // clHighlight, clHighlightText, clBtnFace, clBtnShadow, // clGrayText, clBtnText, clInactiveCaptionText, // clBtnHighlight, cl3DDkShadow, cl3DLight, clInfoText, // clInfoBk // may also be specified as a hex (color) constant: // $BBGGRR - BB: blue, GG: green, RR: red, eg: $FF6A00 // // reminder: crForeground (sp) crBackground (sp) optional font attribute(s)... SpaceCol: clWindowText clWindow Keyword1Col: clBlue clWindow Keyword2Col: clRed clWindow Keyword3Col: clMaroon clWindow Keyword4Col: clFuchsia clWindow Keyword5Col: clTeal clWindow IdentifierCol: clBlack clWindow CommentCol: clGreen clWindow NumberCol: clMaroon clWindow StringCol: clNavy clWindow SymbolCol: clWindowText clWindow PreprocessorCol: clBlue clWindow SelectionCol: clWhite clNavy CurrentLineCol: clBlack $00C0FFFF OverrideTxtFgColor: 0 BlockAutoindent: 0 BlockBegStr: BlockEndStr: MatchedBracesCol: clRed clWindow