/* Описание параметров грамматики The grammar parameters description. endtag= "present | canabsent | absent" present - закрытие тега обязательно должно присутствовать - close tag must present canabsent - закрытие тега может отсутствовать, но может и присутствовать - close tag can absent absent - закрытие тега всегда отсутствует - close tag always absent nohavesametag - тэг не может содержать в себе себя самого, если внутри тэга встречается он сам, то тег закрывается - tag can't contains itself inside. If it has itself inside then it must be closed before itself nohavetags - тег содержит только текст. Даже если внутри него встречаются тэги, то они трактуются как текст. - tag can has text only. If it has tags inside then these tags will be to interpret as text. closeon = - "tagname|...|!tagname|..." - принудительное закрытие тэга при встрече открытия другого тега. можно делать перечисления множества тегов или отрицание множества тегов, например closeon="a|b|i|!form" то есть закрывать тег при встрече открытия тегов A,B,I и если это к тому же не тег FORM - "tagname|...|!tagname|..." - rules for closing tag. |tagname|... list says that tag must to be closed before first tagname if it exist inside it. |!tagname|!.... list says then tag must to be closed if it has not a tagname tag inside. You must combine these lists into one closeon part. For example: closeon="a|b|i|!form" or closeon="a" or closeon="!form". Вы также можете добавлять свои параметры в грамматику если Вам надо использовать их в дальнейшем. Например, Вам надо указать какой функцией вы будете обрабатывать тег уже после парсинга тогда пишите, например, function="MyFunction". А после процесса парсинга кода, пробегая по дереву тэгов заглядываете в грамматику этого тега и, например, вызываете для него функцию с этим именем. Точно так же можно добавлять параметры в описание параметров тегов. You can add your own parameters into grammar if it needs. For example, you need walk through parsed grammar tree and if you meet someone tag you need process it by someone function. In this case you can add special parameter for this tag, for example: function="MyFunction" and after HTML parse process you will be walk through HTML tree and see into grammar when you meet tag, and if it has function field you will call function by name in this field for this tag. Using the same method you can add own parameter fields on tag parameters into grammar. I used this grammar in my HTML tag visualizer and you can see my additional parameter "editmethod" for this with function names which I called in my visualizer. you can see my additional parameter "pictureforedit" too. It needs for the pictogram for each tag. I used so "width" and "height" additional parameters for visualize fields of tag with certain width and height. BUT THESE ADDITIONAL PARAMETERS NOT NEEDS FOR HTML PARSER! IT WILL NEED AFTER ONLY! FOR MY SPECIAL NEEDS. Прекомпиленая грамматика имеет следующую структуру: structure of precompiled grammar is: array( "tagname"=>array( "internal parameter name"=>value, ..... "pars"=>array( "parname"=>array( "parparameter name"=>value, ..... ), ..... ) ) .... ) например, у вас в отпарсеном дереве есть тег . Его полный набор параметров в прекомпиленой грамматике $grammar можно посмотреть следующим образом For example, if you have tag A into parsed tree, then you can see the grammar for A tag as PrintArray($grammar["a"]) а только набор параметров тега, например так and parameters only for tag A as PrintArray($grammar["a"]["pars"]) */