ошибка lex соляриса

Разворачиваю решение lex/yacc, пробуя эту грамматику. Проблема возникает, когда я хочу скомпилировать файл .lex с помощью этой команды: lex -t "file.lex"

Я получаю эту ошибку: Ошибка: дерево синтаксического анализа слишком велико. Попробуйте использовать %e num.

Любая помощь, пожалуйста, спасибо.


person Aymanadou    schedule 27.09.2011    source источник
comment
Грамматика отлично работает в Linux с flex 2.5.35. Какую версию lex вы используете? Это из пакета, если да, то из какого? Можете ли вы установить GNU Flex?   -  person Martin Carpenter    schedule 27.09.2011
comment
Вы действительно пытались следовать тому, что говорит вам lex, то есть просто добавить %e2000 (удваивает размер дерева синтаксического анализа) в начало грамматики?   -  person FrankH.    schedule 27.09.2011
comment
@MartinCarpenter спасибо за ответ, на самом деле этот код хорошо работает в flex 2.4 в cygwin, но не в Solaris. я проверил версию lex в Solaris, она сказала, что lex SGU solaris elf 4.0. она должна быть совместима с этим. спасибо   -  person Aymanadou    schedule 27.09.2011


Ответы (1)


У меня есть аналогичный lex (тот же вывод из lex -V), и эта грамматика отлично работает для меня без изменений (Solaris 10/SPARC), поэтому я подозреваю, что вам может понадобиться патч. pkginfo вывод ниже.

$ pkginfo -l  SUNWbtool 
   PKGINST:  SUNWbtool
      NAME:  CCS tools bundled with SunOS
  CATEGORY:  system
      ARCH:  sparc
   VERSION:  11.10.0,REV=2005.01.21.15.53
   BASEDIR:  /
    VENDOR:  Sun Microsystems, Inc.
      DESC:  software development utilities, including ar, dis, dump, elfdump, lex, lorder, mcs, nm, prof, ranlib, rpcgen, size, strip, tsort, and yacc
    PSTAMP:  on10ptchfeat20090911051613
  INSTDATE:  Mar 15 2011 15:46
   HOTLINE:  Please contact your local service provider
    STATUS:  completely installed
     FILES:       48 installed pathnames
                   8 shared pathnames
                   2 linked files
                   8 directories
                  24 executables
                1874 blocks used (approx)

$
person Martin Carpenter    schedule 27.09.2011