powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Gold Parser and HTML. Проблеммы с обработкой тегов <TABLE>
4 сообщений из 4, страница 1 из 1
Gold Parser and HTML. Проблеммы с обработкой тегов <TABLE>
    #37108110
Conner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток, уважаемые форумчане. Необходимо написать парсер для HTML, чтобы разбирать страницы и на их основании формировать соответствующие платёжные документы в АБС, для чего я использовал Gold Parser (), предлагаемый на сайте файл грамматики HTML не подошёл из-за некоторой кривизны в реализации (не работает конструкция <тег [пареметры]>Текст</тег>), в следствии чего пришлось его реализовывать своими силами. Но вот незадача - моя реализация грамматики (равно, как и грамматика с сайта, кка потом выяснилось) не может корректно обрабатывать конструкции TABLE. В тестовом примере HTML-кода, использующем данную конструкцию, при разборе вылетает ошибка: "Expecting one of the following tokens: Char CharNumDec CharNumHex Color ID Number String1 String2" в строке: <TABLE border=0 align=center> в значении center. Если в данном коде убрать align=center - ошибка вылетает в выражении: <TD><STRONG>Приходный кассовый ордер №</STRONG></TD>: ошибка - "Cannot recognize token П". В чём может быть дело?

Тестовый скрипт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<HTML>

<BODY>
<TABLE border= 0 >
  
  <TR>
    <TD><STRONG>Приходный кассовый ордер №</STRONG></TD>
    <TD class=xl31><INPUT 
      style="BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #ffffcc; FONT-STYLE: italic; FONT-FAMILY: Arial; BORDER-TOP-STYLE: none; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none" 
      size= 13  name=DOC1></TD>
    <TD width= 410 > </TD>
</TR>
</TABLE>

</BODY>

</HTML>

Грамматика:
"Start Symbol" = <HTML>

! -------------------- Identifiers

Comment Start = '<!--'
Comment End = '-->'

{ID Tail} = {Alphanumeric} + [-/]
{Hex Digit} = {Digit} + [abcdefABCDEF]
{StringChars1} = {Printable} + {Cyrillic} + {Cyrillic Supplementary} - ["]
{StringChars2} = {Printable} + {Cyrillic} + {Cyrillic Supplementary} - ['']
{ParaChars} = {Printable} + {Cyrillic} + {Cyrillic Supplementary} - [<>]

ID = {Letter}{ID Tail}*
Number = {Digit}+ | {Digit}+ '.' {Digit}+
Color = '#' {Hex Digit}+
Char = '&' {Letter}+ ';'
CharNumDec = '' {Digit}+ ';'
CharNumHex = '' {Hex Digit}+ ';'
String1 = '"' {StringChars1}* '"'
String2 = '' {StringChars2}* ''
SpecString = '>' {ParaChars}{ParaChars}* '</'

! -------------------- Start symbol

<HTML> ::= <DocOpt> '<html' <Parameters> '>' <Webpage> '</html>'
|

! --------------------- Parameters

<Parameters> ::= <Parameter> <Parameters>
|

<Parameter> ::= ID '=' ID
| ID '=' Number
| ID '=' Color
| ID '=' String1
| ID '=' String2
| ID '=' Char
| ID '=' CharNumDec
| ID '=' CharNumHex
| ID
| String1

! ----------------------- Word

<Word> ::= SpecString

! ----------------------- DocOpt

<DocOpt> ::= '<!doctype' <Parameters> '>'
|

! ----------------------- Webpage

<Webpage> ::= <Head> <Body>

! ----------------------- Head

<Head> ::= '<head' <Parameters> '>' <Head Items> '</head>'
|

! ----------------------- Head Items

<Head Items> ::= <Head Item> <Head Items>
|

<Head Item> ::= '<title' <Parameters> '>' <Content> '</title>'
| '<title' <Parameters> <Word> 'title>'
| '<meta' <Parameters> '>'
| '<link' <Parameters> '>'
| '<base' <Parameters> '>'
| '<basefont' <Parameters> '>'
| '<script' <Parameters> '>' <Content> '</script>'
| '<script' <Parameters> <Word> 'script>'

! ---------------------- Body

<Body> ::= '<body' <Parameters> '>' <Content> '</body>'
| '<body' <Parameters> <Word> 'body>'
|

! ---------------------- Tag

<Tag> ::= '<img' <Parameters> '>'
| '<br' <Parameters> '>'
| '<hr' <Parameters> '>'
| '<p' <Parameters> '>' <Content> '</p>'
| '<p' <Parameters> <Word> 'p>'
| '<h1' <Parameters> '>' <Content> '</h1>'
| '<h1' <Parameters> <Word> 'h1>'
| '<h2' <Parameters> '>' <Content> '</h2>'
| '<h2' <Parameters> <Word> 'h2>'
| '<h3' <Parameters> '>' <Content> '</h3>'
| '<h3' <Parameters> <Word> 'h3>'
| '<h4' <Parameters> '>' <Content> '</h4>'
| '<h4' <Parameters> <Word> 'h4>'
| '<h5' <Parameters> '>' <Content> '</h5>'
| '<h5' <Parameters> <Word> 'h5>'
| '<h6' <Parameters> '>' <Content> '</h6>'
| '<h6' <Parameters> <Word> 'h6>'
| '<a' <Parameters> '>' <Content> '</a>'
| '<a' <Parameters> <Word> 'a>'
| '<map' <Parameters> '>' <Map Items> '</map>'
| '<b' <Parameters> '>' <Content> '</b>'
| '<b' <Parameters> <Word> 'b>'
| '<u' <Parameters> '>' <Content> '</u>'
| '<u' <Parameters> <Word> 'u>'
| '<em' <Parameters> '>' <Content> '</em>'
| '<em' <Parameters> <Word> 'em>'
| '<i' <Parameters> '>' <Content> '</i>'
| '<i' <Parameters> <Word> 'i>'
| '<strike' <Parameters> '>' <Content> '</strike>'
| '<strike' <Parameters> <Word> 'strike>'
| '<strong' <Parameters> '>' <Content> '</strong>'
| '<strong' <Parameters> <Word> 'strong>'
| '<font' <Parameters> '>' <Content> '</font>'
| '<font' <Parameters> <Word> 'font>'
| '<big' <Parameters> '>' <Content> '</big>'
| '<big' <Parameters> <Word> 'big>'
| '<small' <Parameters> '>' <Content> '</small>'
| '<small' <Parameters> <Word> 'small>'
| '<sup' <Parameters> '>' <Content> '</sup>'
| '<sup' <Parameters> <Word> 'sup>'
| '<sub' <Parameters> '>' <Content> '</sub>'
| '<sub' <Parameters> <Word> 'sub>'
| '<blockquote' <Parameters> '>' <Content> '</blockquote>'
| '<blockquote' <Parameters> <Word> 'blockquote>'
| '<address' <Parameters> '>' <Content> '</address>'
| '<address' <Parameters> <Word> 'address>'
| '<code' <Parameters> '>' <Content> '</code>'
| '<code' <Parameters> <Word> 'code>'
| '<cite' <Parameters> '>' <Content> '</cite>'
| '<cite' <Parameters> <Word> 'cite>'
| '<caption' <Parameters> '>' <Content> '</caption>'
| '<caption' <Parameters> <Word> 'caption>'
| '<samp' <Parameters> '>' <Content> '</samp>'
| '<samp' <Parameters> <Word> 'samp>'
| '<kbd' <Parameters> '>' <Content> '</kbd>'
| '<kbd' <Parameters> <Word> 'kbd>'
| '<tt' <Parameters> '>' <Content> '</tt>'
| '<tt' <Parameters> <Word> 'tt>'
| '<center' <Parameters> '>' <Content> '</center>'
| '<cemter' <Parameters> <Word> 'center>'
| '<span' <Parameters> '>' <Content> '</span>'
| '<span' <Parameters> <Word> 'span>'
| '<div' <Parameters> '>' <Content> '</div>'
| '<div' <Parameters> <Word> 'div>'
| '<applet' <Parameters> '>' <Params> '</applet>'
| '<object' <Parameters> '>' <Params> '</object>'
| '<table' <Parameters> '>' <Table Rows> '</table>'
| '<ul' <Parameters> '>' <List Items> '</ul>'
| '<ol' <Parameters> '>' <List Items> '</ol>'
| '<dir' <Parameters> '>' <List Items> '</dir>'
| '<menu' <Parameters> '>' <List Items> '</menu>'
| '<dl' <Parameters> '>' <Def Items> '</dl>'
| '<form' <Parameters> '>' <Content> '</form>'
| '<form' <Parameters> <Word> 'form>'
| '<input' <Parameters> '>'
| '<textarea' <Parameters> '>' <Content> '</textarea>'
| '<textarea' <Parameters> <Word> 'textarea>'
| '<select' <Parameters> '>' <Options> '</select>'

! ---------------------- Content

<Content> ::= <Tag> <Content>
|

! --------------------- Map items

<Map Items> ::= <Area> <Map Items>
|

<Area> ::= '<area' <Parameters> '>'

! -------------------- Params

<Params> ::= '<param' <Parameters> '>' <Params>
|

! ------------------- Table Rows

<Table Rows> ::= <Table Row> <Table Rows>
|

<Table Row> ::= '<tr' <Parameters> '>' <Table Cells> '</tr>'
| '<tbody' <Parameters> '>' '<tr' <Parameters> '>' <Table Cells> '</tr>' '</tbody>'

<Table Cells> ::= <Table Cell> <Table Cells>
|

<Table Cell> ::= '<td' <Parameters> '>' <Content> '</td>'
| '<td' <Parameters> <Word> 'td>'
| '<th' <Parameters> '>' <Content> '</th>'
| '<th' <Parameters> <Word> 'th>'

! ------------------- List Items

<List Items> ::= <List Item> <List Items>
|

<List Item> ::= '<li' <Parameters> '>' <Content> '</li>'
| '<li' <Parameters> <Word> 'li>'

! ------------------- Def Items

<Def Items> ::= <Def Item> <Def Items>
|

<Def Item> ::= '<dt' <Parameters> '>' <Content> '</dt>'
| '<dt' <Parameters> <Word> 'dt>'
| '<dd' <Parameters> '>' <Content> '</dd>'
| '<dd' <Parameters> <Word> 'dd>'

! -------------------- Options

<Options> ::= <Option> <Options>
|

<Option> ::= '<option' <Parameters> '>'
...
Рейтинг: 0 / 0
Gold Parser and HTML. Проблеммы с обработкой тегов <TABLE>
    #37108390
клава-буфера
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Conner,

может быть не стоит формировать платежные документы на основе хтмл парсинга?
как-то это не очень :)
нет ли возможности воспользоваться хмл или другими, более подходящими форматами? :)
...
Рейтинг: 0 / 0
Gold Parser and HTML. Проблеммы с обработкой тегов <TABLE>
    #37108569
Conner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению нет. Организация, присылающая нам данные документы, видимо не знает ничего, кроме HTML. Если бы был XML - проблем не было б никаких...
...
Рейтинг: 0 / 0
Gold Parser and HTML. Проблеммы с обработкой тегов <TABLE>
    #37109313
Conner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем. Решение нашёл...
Код.

"Name" = 'HTML'
"Author" = 'John Conner'
"Version" = '1.2'
"About" = 'HyperText Markup Language'

"Start Symbol" = <HTML>

! -------------------------------- Identifiers

Comment Start = '<!--'
Comment End = '-->'

{ID Tail} = {Alphanumeric} + [-/_]
{ID Tail1} = {Cyrillic} + {Cyrillic Supplementary} + [-/_]
{Hex Digit} = {Digit} + [abcdefABCDEF]
{StringChars1} = {Printable} + {Cyrillic} + {Cyrillic Supplementary} - ["]
{StringChars2} = {Printable} + {Cyrillic} + {Cyrillic Supplementary} - ['']
{ParaChars} = {ANSI Printable} + {Cyrillic} + {Cyrillic Supplementary} - [<>&^]
{Letter1} = {Cyrillic} + {Cyrillic Supplementary}

ID = {Letter}{ID Tail}*
ID1 = {Letter1}{ID Tail1}*
Number = {Digit}+ | {Digit}+ '.' {Digit}+
Color = '#' {Hex Digit}+
Char = '&' {Letter}+ ';'
CharNumDec = '' {Digit}+ ';'
CharNumHex = '' {Hex Digit}+ ';'
String1 = '"' {StringChars1}* '"'
String2 = '' {StringChars2}* ''
SpecString = '^' {ParaChars}{ParaChars}* '^'

! -------------------------------- Start symbol

<HTML> ::= <DocOpt> '<html' <Parameters> '>' <Webpage> '</html>'
|

! -------------------------------- Parameters

<Parameters> ::= <Parameter> <Parameters>
|

<Parameter> ::= ID '=' ID
| ID '=' Number
| ID '=' Color
| ID '=' String1
| ID '=' String2
| ID '=' Char
| ID '=' CharNumDec
| ID '=' CharNumHex
| ID
| ID '=' ID1
| String1
| String2

! ---------------------------------- Word

<Word> ::= SpecString

! ---------------------------------- DocOpt

<DocOpt> ::= '<!doctype' <Parameters> '>'
|

! ---------------------------------- Webpage

<Webpage> ::= <Head> <Body>

! --------------------------------- Head

<Head> ::= '<head' <Parameters> '>' <Head Items> '</head>'
|

! -------------------------------- Head Items

<Head Items> ::= <Head Item> <Head Items>
|

<Head Item> ::= '<title' <Parameters> '>' <Content> '</title>'
| '<meta' <Parameters> '>'
| '<link' <Parameters> '>'
| '<base' <Parameters> '>'
| '<basefont' <Parameters> '>'
| '<script' <Parameters> '>' <Content> '</script>'

! ------------------------------- Body

<Body> ::= '<body' <Parameters> '>' <Content> '</body>'
|

! ------------------------------ Tag

<Tag> ::= '<img' <Parameters> '>'
| '<br' <Parameters> '>'
| '<hr' <Parameters> '>'
| '<p' <Parameters> '>' <Content> '</p>'
| '<h1' <Parameters> '>' <Content> '</h1>'
| '<h2' <Parameters> '>' <Content> '</h2>'
| '<h3' <Parameters> '>' <Content> '</h3>'
| '<h4' <Parameters> '>' <Content> '</h4>'
| '<h5' <Parameters> '>' <Content> '</h5>'
| '<h6' <Parameters> '>' <Content> '</h6>'
| '<a' <Parameters> '>' <Content> '</a>'
| '<map' <Parameters> '>' <Map Items> '</map>'
| '<b' <Parameters> '>' <Content> '</b>'
| '<u' <Parameters> '>' <Content> '</u>'
| '<em' <Parameters> '>' <Content> '</em>'
| '<i' <Parameters> '>' <Content> '</i>'
| '<strike' <Parameters> '>' <Content> '</strike>'
| '<font' <Parameters> '>' <Content> '</font>'
| '<big' <Parameters> '>' <Content> '</big>'
| '<small' <Parameters> '>' <Content> '</small>'
| '<sup' <Parameters> '>' <Content> '</sup>'
| '<sub' <Parameters> '>' <Content> '</sub>'
| '<blockquote' <Parameters> '>' <Content> '</blockquote>'
| '<address' <Parameters> '>' <Content> '</address>'
| '<code' <Parameters> '>' <Content> '</code>'
| '<cite' <Parameters> '>' <Content> '</cite>'
| '<caption' <Parameters> '>' <Content> '</caption>'
| '<samp' <Parameters> '>' <Content> '</samp>'
| '<kbd' <Parameters> '>' <Content> '</kbd>'
| '<tt' <Parameters> '>' <Content> '</tt>'
| '<center' <Parameters> '>' <Content> '</center>'
| '<strong' <Parameters> '>' <Content> '</strong>'
| '<span' <Parameters> '>' <Content> '</span>'
| '<div' <Parameters> '>' <Content> '</div>'
| '<applet' <Parameters> '>' <Params> '</applet>'
| '<object' <Parameters> '>' <Params> '</object>'
| '<table' <Parameters> '>' <Content> '</table>'
| '<ul' <Parameters> '>' <Content> '</ul>'
| '<ol' <Parameters> '>' <Content> '</ol>'
| '<dir' <Parameters> '>' <Content> '</dir>'
| '<menu' <Parameters> '>' <Content> '</menu>'
| '<dl' <Parameters> '>' <Content> '</dl>'
| '<form' <Parameters> '>' <Content> '</form>'
| '<input' <Parameters> '>'
| '<textarea' <Parameters> '>' <Content> '</textarea>'
| '<select' <Parameters> '>' <Options> '</select>'
| '<tr' <Parameters> '>' <Content> '</tr>'
| '<tbody' <Parameters> '>' <Content> '</tbody>'
| '<th' <Parameters> '>' <Content> '</th>'
| '<td' <Parameters> '>' <Content> '</td>'
| '<li' <Parameters> '>' <Content> '</li>'
| '<dt' <Parameters> '>' <Content> '</dt>'
| '<dd' <Parameters> '>' <Content> '</dd>'

! --------------------------------------- Content

<Content> ::= <Tag> <Content>
| Char <Content>
| CharNumDec <Content>
| CharNumHex <Content>
| <Word> <Content>
|

! -------------------------------------- Map Items

<Map Items> ::= <Area> <Map Items>
|

<Area> ::= '<area' <Parameters> '>'

! ------------------------------------- Params

<Params> ::= '<param' <Parameters> '>' <Params>
|

! ------------------------------------- Options

<Options> ::= <Option> <Options>
|

<Option> ::= '<option' <Parameters> '>'
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Gold Parser and HTML. Проблеммы с обработкой тегов <TABLE>
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]