/*-------------------------------------------------------------------------------------------------------------------- * * Token value definitions * */ #define ht_DEFAULT 0 #define ht_NUMBER 1 #define ht_STRING 2 #define ht_IDENTIFIER 3 #define ht_TAGNAME 4 #define ht_ATTRIBUTE 5 #define ht_TAGSTART 6 #define ht_TAGEND 7 #define ht_TAGCLOSE 8 #define ht_TAG_SCRIPT_START 9 #define ht_TAG_SCRIPT_END 10 #define ht_COMMENT 11 #define ht_EQUAL 12 #define ht_PHP 13 #define ht_PHP_END 14 #define ht_COMMENT_END 15 #define ht_WHITESPACE 16 #define ht_PLAIN_ID 17 #define ht_SPECIAL 18 #define ht_WEBURL 20 #define ht_MAILURL 21 #define ht_TAGCLOSE_SCRIPT 24 #define jt_RESERVED 30 #define jt_COMMENT 31 #define jt_WHITESPACE 32 #define jt_COMMENT_LINE 33 #define jt_STRING 34 #define jt_STRING_CHAR 35 #define jt_IDENTIFIER 36 #define jt_NUMBER 37 #define jt_SYMBOL 38 #define jt_BUILTINMETHOD 39 #define jt_HEXNUMBER 40 #define jt_IDENTIFIER 41 #define vb_FUNCTION 50 #define vb_METHOD 51 #define vb_RESERVED 52 #define vb_COMMENT 53 #define vb_SYMBOL 54 #define vb_STRING 55 #define vb_IDENTIFIER 56 #define vb_NUMBER 57 #define vb_WHITESPACE 58 #define php_RESERVED 60 #define php_STRING 61 #define php_IDENTIFIER 62 #define php_NUMBER 63 #define php_OPERATOR 64 #define php_COMMENT 65 #define php_LINE_COMMENT 66 #define php_PARENTHESIS 67 #define php_ENDOFLINE 68 #define php_COMMA 69 #define sv_LANGUAGE 80 #define sv_JAVA_STRING 81 #define sv_VB_STRING 82 #define ht_JS_SCRIPT 83 #define ht_VB_SCRIPT 84 #define ht_PHP 85 /*-------------------------------------------------------------------------------------------------------------------- * * State definitions * */ #define ss_START 0 #define ss_SCRIPT 1 #define ss_STRING 2 #define ss_INTAG 3 #define ss_ATTRIBUTES 4 #define ss_JAVASCRIPT 5 #define ss_VBSCRIPT 6 #define ss_LANGTYPE 7 #define ss_JAVA_LANG 8 #define ss_VB_LANG 9 #define ss_PHP 10 /*-------------------------------------------------------------------------------------------------------------------- * * Common script elements * */ #define _non_alpha_ '[^_A-Za-z0-9]' #define _all_chars_ '[\x00-\xFF]' #define _no_chars_ '[]' #define _dont_care_ _all_chars_ #define _DEFAULT_BACKGROUND clWhite #define _DEFAULT_FOREGROUND clBlack /*-------------------------------------------------------------------------------------------------------------------- * * Language style definitions * * NAME Short description of the language defined in this script * Default is * * CASE Case-sensitivity of the characters of the language. * May take the following values: * __INSENSITIVE No case sensitivity * __SENSITIVE Case sensitive * Default is __INSENSITIVE * * OPTIONS TSyntaxMemo default start-up options. * May take the following values: * __DEFAULT_OPTIONS Component default options, denoted by (*) below * __OPT_SHOW_RIGHT_MARGIN (*) Show right margin position * __OPT_SHOW_GUTTER (*) Show left gutter area * __OPT_PRINT_WRAP (*) Wrap lines when printing * __OPT_PRINT_LINENOS (*) Print line numbers * __OPT_PRINT_FILENAME (*) Print filename in header * __OPT_PRINT_DATE (*) Print date in header * __OPT_PRINT_PAGENOS (*) Print page numbers in footer * __OPT_WORDWRAP ( ) Word-wrap text * __OPT_AUTOINDENT (*) Auto-indent new lines * __OPT_TABCOLUMN (*) 'Smart' tab key action * __OPT_WRAP_OVERRIDE ( ) Override word-wrap on certain lines * __WORD_SELECT (*) Double click selects word at cursor * __OPT_SHOW_RMARGIN (*) Show right margin position (Synonym for __OPT_SHOW_RIGHT_MARGIN) * __OPT_SHOW_WRAPCOLUMN ( ) Show word-wrap column in word-wrap mode * __OPT_TITLE_AS_FILENAME (*) Set print page title to filename when loading/saving * __OPT_PROCESS_DROP_FILES ( ) Generate event for dropping of files from explorer * __OPT_BLOCK_CURSOR (*) Use block cursor in overwrite mode * The above options may be combined by adding (+) together the options desired * Default is __DEFAULT_OPTIONS * * WORDWRAPCOLUMN Column number at which word-wrapping will occur. * May take the following values: * _EDGE Word-wrap at edge of view window * 0 Word-wrap at edge of view window (Synonym for _EDGE) * Decimal column number * Default is _EDGE * * GUTTER Width of left gutter in pixels. * May take a velue of: * 0 Left gutter is not visible * >= 34 Gutter width * The gutter cannot be set to a value in the range 1..33 since space must be available * for the side by side glyphs on each line. * * STARTSTATE * ANCHOR * CONTEXTSTATES * EXAMPLETEXT * EDITABLESTYLES * FONTNAME * FONTSIZE * TABCOLUMNS * TABDEFAULT * INDENTSTEP * WRAPOVERRIDE * SELTEXTCOLOR * SELTEXTBACK * */ %%language Name = 'HTML' Case = __INSENSITIVE Options = __DEFAULT_OPTIONS WordWrapColumn = _EDGE Gutter = _DEFAULT_GUTTER StartState = [ss_START] Anchor = [ht_TAGSTART jt_BUILTINMETHOD jt_SYMBOL jt_RESERVED jt_COMMENT jt_STRING jt_STRING_CHAR jt_IDENTIFIER jt_NUMBER jt_HEXNUMBER vb_FUNCTION vb_METHOD vb_RESERVED vb_COMMENT vb_SYMBOL vb_STRING vb_IDENTIFIER vb_NUMBER] ContextStates = (ht_JS_SCRIPT, jt_BUILTINMETHOD, jt_RESERVED, jt_SYMBOL, jt_COMMENT, jt_STRING, jt_STRING_CHAR, jt_IDENTIFIER, jt_NUMBER, jt_HEXNUMBER [ss_SCRIPT ss_JAVASCRIPT]), (ht_VB_SCRIPT, vb_FUNCTION, vb_METHOD, vb_RESERVED, vb_COMMENT, vb_SYMBOL, vb_STRING, vb_IDENTIFIER, vb_NUMBER [ss_SCRIPT ss_VBSCRIPT]) ExampleText = '\n\ \\n\ \New Page\n\ \

\n\ \Plain HTML body text 

\n\ \Author\n\ \";\n\ \}\n\ \?>\n\ \

section * ss_JAVASCRIPT.......Javascript may be encountered after tag close (default) * ss_VB_SCRIPT........VBScript may be encountered after tag close * ss_VB_LANG..........Recognise common HTML/VBScript lexemes * ss_JAVA_LANG........Recognise common HTML/JavaScript lexemes * The scenario is that the ' +ss_ATTRIBUTES Allow recognition of tag attribute names * +ss_SCRIPT Now within a section * +ss_JAVASCRIPT Enable default script language style * +ss_JAVA_LANG Allow common Javascript/HTML lexemes to be separated * * Thereafter, the following lexemes may be encountered in the order listed: * sv_LANGUAGE ------------------> +ss_LANGTYPE Allow recognition of 'language' attribute values * sv_JAVA_STRING ---------------> +ss_JAVA_LANG Allow common Javascript/HTML lexemes to be separated * +ss_JAVASCRIPT Enable Javascript lexeme recognition * sv_VB_STRING -----------------> +ss_VB_LANG Allow common VBscript/HTML lexemes to be separated * +ss_VBSCRIPT Enable VBscript lexeme recognition * -ss_JAVASCRIPT Disable Javascript lexeme recognition * -ss_JAVA_LANG Disable common Javascript/HTML lexeme recognition * ht_TAGCLOSE_SCRIPT -----------> -ss_LANGTYPE Ensure redundant state is off now * Thus at the end of the script tag we will have ss_SCRIPT, one of (ss_JAVA_LANG, ss_VB_LANG) and one * of (ss_JAVASCRIPT, ss_VBSCRIPT) active. * Finally for the recognition of ' -ss_JAVASCRIPT Disable Javascript lexeme recognition * -ss_VBSCRIPT Disable VBscript lexeme recognition * -ss_VB_LANG Disable common VBScript/HTML lexeme recognition * -ss_JAVA_LANG Disable common Javascript/HTML lexeme recognition * -ss_SCRIPT Disable script lexeme recognition * +ss_ATTRIBUTES Enable recognition of tag attribute names * At the conclusion of the '' we will return to the default state: * ht_TAGCLOSE ------------------> -ss_INTAG Do not recognise tag names now * -ss_ATTRIBUTES Do not recognise attribute names now * Thus the default state [ss_START] will be active at the end of a complete section * * [2] OTHER HTML TAGS */ %%states // ht_TAGEND == '' // *** NOT inside a