HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

Репутация: 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 ™ © 2001- Antichat Kft.