ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Создание парсера
  #1  
Старый 28.05.2008, 16:33
Аватар для Trieg
Trieg
Познающий
Регистрация: 26.10.2007
Сообщений: 83
Провел на форуме:
394231

Репутация: 50
По умолчанию Создание парсера

Необходимо создать парсер на пхп под достаточно редкий формат файла.. есть немного инфы о формате..
PHP код:
DWORD mesh_count
:FOREACH( mesh_count )
  
ZSTR path
:ENDFOR
 
DWORD material_count
:FOREACH( material_count )
  
ZSTR path
  WORD rotation
  WORD alpha_enabled
  WORD two_sided
  WORD alpha_test_enabled
  WORD alpha_ref_enabled
  WORD z_write_enabled
  WORD z_test_enabled
  WORD blending_mode
  WORD specular_enabled
  FLOAT alpha
  WORD glow_type
  FLOAT red
  FLOAT green
  FLOAT blue
:ENDFOR
 
DWORD effect_count
:FOREACH( effect_count )
  
ZSTR path
:ENDFOR
 
DWORD object_count
:FOREACH( object_count )
  
DWORD unk1
  DWORD unk2
  DWORD unk3
  DWORD mesh_count
  
:IF( mesh_count )
    :FOREACH( 
mesh_count )
      
DWORD mesh_id
      DWORD material_id
      
:WHILE( true )
        
BYTE flag_id
        
:IF( flag_id == ) BREAK //Leave the WHILE(true) loop
        
BYTE flag_size
        BYTE
[flag_sizedata
      
:WEND
    
:ENDFOR
    
    
WORD object2_count
    
:FOREACH( object2_count )
      
DWORD mesh_id
      DWORD material_id
      
:WHILE( true )
        
BYTE flag_id
        
:IF( flag_id == ) BREAK //Leave the WHILE(true) loop
        
BYTE flag_size
        BYTE
[flag_sizedata
      
:WEND
    
:ENDFOR
    
    
//These are for Bounding Box
    
FLOAT minX
    FLOAT minY
    FLOAT minZ
    FLOAT maxX
    FLOAT maxY
    FLOAT maxZ
  
:ENDIF
:ENDFOR 
возможно есть ошибки.. это сейчас не критично.

когда начал писать парсер столкнулся с проблемой..
как можно реализовать на пхп ZSTR?

с DWORD и WORD проблем у меня не возникло..
PHP код:
  function getWord($file) {
    
$ret unpack("S"fread($file2));
    return 
$ret[1];
  }

  function 
getDword($file) {
    
$ret unpack("L"fread($file4));
    return 
$ret[1];
  } 
а вот как сделать ZSTR (читать строку до пустого байта)

PS:ранее мне не когда не приходилось сталкиваться с подобной работой.. по этому опыта мало,вот и прошу помощи =)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мультимедийные Обучающие Курсы TeachPro Java VenTeL ПО для Web разработчика 8 24.04.2008 15:38
Графика. Создание и обработка LiteMentaL Болталка 20 09.04.2008 11:27



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ