tex_parser converted to independent repository

This commit is contained in:
Kolan Sh 2012-01-17 13:16:51 +04:00
parent 4d767f7a04
commit 325f7a739c
10 changed files with 0 additions and 1339 deletions

View File

@ -1,148 +0,0 @@
# This file is generated with smake.sh.
# You can use this make file with instruction make to
# use one of build mode: debug, profile, develop, release.
# No need to call make clean if You make with other mode,
# because the Makefile containes rules for automatically clean.
# Some usage examples:
# make # default mode is debug
# CFLAGS="-O2 -march=core2 -mtune=core2 --msse4.1 mfpmath=sse -fomit-frame-pointer -pipe" LDFLAGS="-Wl,-O1 -Wl,-ass-needed" make mode=develop
# CFLAGS="-O2 -march=amdfam10 -mtune=amdfam10 -msse4a --mfpmath=sse -fomit-frame-pointer -pipe" LDFLAGS="-Wl,-O1 -Wl,--as-needed" make mode=profile
# CFLAGS="-O2 -march=k6-2 -mtune=k6-2 -m3dnow --mfpmath=387 -fomit-frame-pointer -pipe" LDFLAGS="-Wl,-O1 -Wl,--as-needed" make mode=release
# Report bugs to <mecareful@gmail.com>
#_________________________________
# ENVIRONMENT |
#________________________________|
CC=cc
CXX=c++
LIBRARIES=
TARGET0=tex_parser_test
TARGET= $(TARGET0)
INCLUDE1=$(HOME)/projects/include
INCLUDE2=/usr/local/include
INCLUDE=-I$(INCLUDE1) -I$(INCLUDE2)
#________________________________________
# BUILD SCRIPT (don't change) |
#_______________________________________|
ifeq ($(mode),)
mode = debug
endif
ifeq ($(mode),debug)
CFLAGS := -O0 -g -std=gnu99 -pedantic -Wextra -Wconversion $(CFLAGS)
LDFLAGS := $(LDFLAGS)
endif
ifeq ($(mode),profile)
CFLAGS := -O0 -g -p -ftest-coverage -Wcoverage-mismatch $(CFLAGS)
LDFLAGS := -g -p $(LDFLAGS)
endif
ifeq ($(mode),develop)
CFLAGS := -O2 -g $(CFLAGS)
LDFLAGS := -O1 $(LDFLAGS)
endif
ifeq ($(mode),release)
CFLAGS := -O2 $(CFLAGS)
LDFLAGS := -O1 $(LDFLAGS)
endif
CFLAGS += -Wall
LDFLAGS += -Wall $(LIBRARIES)
all: change_make_options $(TARGET)
ifneq ($(mode),debug)
ifneq ($(mode),profile)
ifneq ($(mode),develop)
ifneq ($(mode),release)
@echo "Invalid build mode."
@echo "Please use 'make mode=release', 'make mode=develop', 'make mode=profile' or 'make mode=debug'"
@exit 1
endif
endif
endif
endif
@echo ".........................."
@echo "Building on "$(mode)" mode "
@echo "CFLAGS=$(CFLAGS)"
@echo "LDFLAGS=$(LDFLAGS)"
@echo ".........................."
OLD_BUILD_MODE=$(shell grep ^MODE make_options.out 2>/dev/null | sed 's~^MODE=~~')
OLD_BUILD_CFLAGS=$(shell grep ^CFLAGS make_options.out 2>/dev/null | sed 's~^CFLAGS=~~')
OLD_BUILD_LDFLAGS=$(shell grep ^LDFLAGS make_options.out 2>/dev/null | sed 's~^LDFLAGS=~~')
change_make_options:
ifneq ($(mode)|$(CFLAGS)|$(LDFLAGS), $(OLD_BUILD_MODE)|$(OLD_BUILD_CFLAGS)|$(OLD_BUILD_LDFLAGS))
@echo CLEANING...
@make clean &>/dev/null
@echo "MODE=$(mode)" > make_options.out
@echo "CFLAGS=$(CFLAGS)" >> make_options.out
@echo "LDFLAGS=$(LDFLAGS)" >> make_options.out
endif
%.o :
$(CC) -c $(CFLAGS) $(INCLUDE) -o $@ $<
clean:
$(RM) *.o *.out callgrind.out.* *.gcno $(TARGET)
.PHONY: all change_make_options clean
#_________________________________
# R U L E S |
#________________________________|
target_objs0 = \
tex_parser_test.o \
tex_parser.o \
xalloc.o \
xerror.o \
zalloc.o \
zalloc_ext.o \
zerror.o
$(TARGET0): $(target_objs0)
$(CC) $(LDFLAGS) -o $@ $(target_objs0)
tex_parser_test.o: \
tex_parser_test.c \
tex_parser.h \
$(INCLUDE1)/xalloc.h \
$(INCLUDE1)/xerror.h \
$(INCLUDE1)/zalloc.h \
$(INCLUDE1)/zerror.h
tex_parser.o: \
tex_parser.c \
$(INCLUDE1)/c_const.h \
tex_parser.h \
tex_parser_const.h \
tex_parser_tags.h \
$(INCLUDE1)/xerror.h \
$(INCLUDE1)/zalloc.h \
$(INCLUDE1)/zalloc_ext.h \
$(INCLUDE1)/zerror.h
xalloc.o: \
$(INCLUDE1)/xalloc.c \
$(INCLUDE1)/xalloc.h \
$(INCLUDE1)/xerror.h
xerror.o: \
$(INCLUDE1)/xerror.c \
$(INCLUDE1)/xerror.h
zalloc.o: \
$(INCLUDE1)/zalloc.c \
$(INCLUDE1)/xerror.h \
$(INCLUDE1)/zalloc.h
zerror.o: \
$(INCLUDE1)/zerror.c \
$(INCLUDE1)/xerror.h \
$(INCLUDE1)/zerror.h
zalloc_ext.o: \
$(INCLUDE1)/zalloc_ext.c \
$(INCLUDE1)/zalloc.h \
$(INCLUDE1)/zalloc_ext.h

View File

@ -1,196 +0,0 @@
%\p{\tabularnewline}{\\}
%\a{\b}{\\}
%%%%%
%\c
%\end
%~ \D{\c}{%
%~ \f{T}\s\d\e{T}}
%~ \D{\t}[1]{\l{\c #1}}
%~ \A{\D{T}{}{}}
%% B
%~ \p{\t}{\\}
%% U
%~ \u[r]{b}
%~ \end{HA}
%\t{\T{p}}
%\end{haha}
%% LyX 1.6.8 created this file. For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[english,russian]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9,koi8-r]{inputenc}
\usepackage{array}
\usepackage{longtable}
\usepackage{textcomp}
\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
\DeclareRobustCommand{\cyrtext}{%
\fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
%% Because html converters don't know tabularnewline
\providecommand{\tabularnewline}{\\}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\usepackage[russian]{babel}
\usepackage{array,longtable}
\usepackage{rotating}
\usepackage{setspace}
\usepackage{geometry}
\usepackage{float}
\usepackage{multirow}
\renewcommand{\multirowsetup}{\centering}
\makeatother
\usepackage{babel}
\begin{document}
DrosselTable1
\begin{longtable}{|>{\centering}p{0.11\linewidth}|>{\raggedright}p{0.05\linewidth}|>{\centering}p{0.07\paperwidth}|>{\centering}p{0.07\paperwidth}|>{\centering}m{0.07\paperheight}|>{\centering}m{0.07\paperheight}|>{\centering}p{0.07\paperheight}|>{\centering}p{0.07\paperheight}|}
\hline
\multicolumn{8}{|c|}{ó×ÏÄÎÙÊ ÐÒÏÔÏËÏÌ ÒÅÚÕÌØÔÁÔÏ× ÉÓÐÙÔÁÎÉÑ Ä×ÉÇÁÔÅÌÑ ô÷7-117÷ \textnumero{}}\tabularnewline
\multicolumn{8}{|c|}{óÔÅÎÄ \textnumero{}18 ~~ éõä óéë ~ äÁÔÁ: ~~~~~~~~ Ç. ÷ÒÅÍÑ:
~~~~~~~~~ òÎ = ~~~ ÍÍ ÒÔ ÓÔ~~ t×È = ~~~ $\,^{\circ}\mbox{C}$}\tabularnewline
\multicolumn{8}{|c|}{èÁÒÁËÔÅÒÉÓÔÉËÁ ~~~~~~~ áËÔ ÓÄÁÞÉ, ËÏÎÔÒÏÌØÎÙÅ ÔÏÞËÉ}\tabularnewline
\hline
\endhead
\hline
\multicolumn{2}{|>{\centering}m{0.11\linewidth}|}{\centering{}óÏÓÔÁ×ÉÌ} & \multicolumn{2}{c|}{éÎÖÅÎÅÒ ÐÏ ÉÓÐÙÔÁÎÉÑÍ} & îÁÞÁÌØÎÉË âôë & îÁÞÁÌØÎÉË ÕÞÁÓÔËÁ õéä óéë & \multicolumn{2}{c|}{ðÒÅÄÓÔÁ×ÉÔÅÌØ ÚÁËÁÚÞÉËÁ}\tabularnewline
\hline
\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\centering{}\textit{ðÏÄÐÉÓØ}} & \multicolumn{2}{c|}{\textit{ðÏÄÐÉÓØ}} & \centering{}\textit{ðÏÄÐÉÓØ} & \centering{}\textit{ðÏÄÐÉÓØ} & \multicolumn{2}{c|}{\textit{ðÏÄÐÉÓØ}}\tabularnewline
\multicolumn{2}{|>{\centering}p{0.11\linewidth}|}{\textit{ÆÁÍÉÌÉÑ}} & \multicolumn{2}{c|}{\textit{ÆÁÍÉÌÉÑ}} & \multicolumn{1}{c|}{\textit{ÆÁÍÉÌÉÑ}} & \textit{ÆÁÍÉÌÉÑ} & \multicolumn{2}{c|}{\textit{ÆÁÍÉÌÉÑ}}\tabularnewline
\hline
\endfoot
\multicolumn{8}{|l|}{õÓÒÅÄΣÎÎÙÅ ÚÎÁÞÅÎÉÑ ÐÏ ÒÅÖÉÍÁÍ}\tabularnewline
\hline
\multicolumn{2}{|c|}{ðÁÒÁÍÅÔÒ} & NÅÐÒ & Ce & GÔ ÐÒ & nÔË ÐÒ & t{*}z ÓÔ ÐÒ & ðË\tabularnewline
\hline
\multicolumn{2}{|>{\centering}p{0.07\paperwidth}|}{\centering{}òÅÖÉÍ} & & & & & & \tabularnewline
\hline
\multicolumn{2}{|l|}{úíç} & & & & & & \tabularnewline
\hline
\multicolumn{2}{|l|}{0,4 Íð} & & & & & & \tabularnewline
\hline
\multicolumn{2}{|l|}{Ne1650} & & & & & & \tabularnewline
\hline
\multicolumn{2}{|l|}{íËÒ} & & & & & & \tabularnewline
\hline
\multicolumn{2}{|l|}{íð} & & & & & & \tabularnewline
\hline
\multicolumn{2}{|l|}{Ne2500} & & & & & & \tabularnewline
\hline
\multicolumn{2}{|l|}{÷ÚÌ} & & & & & & \tabularnewline
\hline
\multicolumn{2}{|l|}{30-ÍÉÎ.Í.} & & & & & & \tabularnewline
\hline
\multicolumn{8}{|c|}{úÁÍÅÒÅÎÎÙÅ ÐÁÒÁÍÅÔÒÙ}\tabularnewline
\hline
\multicolumn{2}{|c|}{ðÁÒÁÍÅÔÒ} & Ne & Ce && nÔË & t{*}z ÓÔ & ðË\tabularnewline
\hline
\multicolumn{2}{|l|}{úíç} & & & & & & \tabularnewline
\hline
\multicolumn{2}{|l|}{2,5 ÍÉÎ.Í.} & & & & & & \tabularnewline
\hline
\multicolumn{8}{|c|}{ïÃÅÎËÁ ÒÅÖÉÍÏ× ÐÏ ôõ}\tabularnewline
\hline
\multicolumn{2}{|c|}{ðÁÒÁÍÅÔÒ} & \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.07\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{NeÐÒ}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.07\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{ÎÅ
ÂÏÌÅÅ nÔË ÐÒ,\%}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.07\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{nÓÔ,\%}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.09\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{ÎÅ
ÂÏÌÅÅ t{*}z ÓÔ ÐÒ,$\,^{\circ}\mbox{C}$}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.08\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{ÎÅ
ÂÏÌÅÅ Ce Ç/Ì.Ó.Þ.}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.07\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{
ÐÒ, ËÇ/ÞÁÓ}}\selectlanguage{russian}
\tabularnewline
\cline{1-2}
\multicolumn{2}{|c|}{òÅÖÉÍ} & & & & & & \tabularnewline
\hline
& ôõ & 1900 & 93,0 & 98,0$\pm$0,5 & 680 & 221 & -\tabularnewline
\cline{2-8}
íËÒ & æÁËÔ & & & & & & \tabularnewline
\cline{2-8}
& ïÔËÌ. & & & & & & \tabularnewline
\hline
& ôõ & 2100 & 94,0 & 98,0$\pm$0,5 & 705 & - & -\tabularnewline
\cline{2-8}
íð & æÁËÔ & & & & & & \tabularnewline
\cline{2-8}
& ïÔËÌ. & & & & & & \tabularnewline
\hline
& ôõ & 2800 & 97,5 & 98,0$\pm$0,5 & 775 & 205 & -\tabularnewline
\cline{2-8}
÷ÚÌ & æÁËÔ & & & & & & \tabularnewline
\cline{2-8}
& ïÔËÌ. & & & & & & \tabularnewline
\hline
& ôõ & 3000 & 98,5 & 98,0$\pm$0,5 & 795 & - & -\tabularnewline
\cline{2-8}
30-ÍÉÎ.Í. & æÁËÔ & & & & & & \tabularnewline
\cline{2-8}
& ïÔËÌ. & & & & & & \tabularnewline
\hline
\multicolumn{8}{|c|}{úÁÍÅÒÅÎÎÙÅ ÐÁÒÁÍÅÔÒÙ}\tabularnewline
\hline
\multicolumn{2}{|c|}{ðÁÒÁÍÅÔÒ} & \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.07\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{Ne}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.07\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{ÎÅ
ÂÏÌÅÅ nÔË,\%}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.07\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{nÓÔ,\%}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.09\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{ÎÅ
ÂÏÌÅÅ t{*}z ÓÔ,$\,^{\circ}\mbox{C}$}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.08\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{ÎÅ
ÂÏÌÅÅ Ce Ç/Ì.Ó.Þ.}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.07\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{GÔ,
ËÇ/ÞÁÓ}}\selectlanguage{russian}
\tabularnewline
\cline{1-2}
\multicolumn{2}{|c|}{òÅÖÉÍ} & & & & & & \tabularnewline
\hline
& ôõ & - & & 80,0$\pm$0,5 & - & - & -\tabularnewline
\cline{2-8}
úíç & æÁËÔ & & & & & & \tabularnewline
\cline{2-8}
& ïÔËÌ. & & & & & & \tabularnewline
\hline
& ôõ & - & 101,0 & 98,0$\pm$0,5 & 805 & - & -\tabularnewline
\cline{2-8}
2,5 ÍÉÎ.Í. & æÁËÔ & & & & & & \tabularnewline
\cline{2-8}
& ïÔËÌ. & & & & & & \tabularnewline
\hline
\multicolumn{3}{|c|}{A0} & & & & & \tabularnewline
\hline
\multicolumn{3}{|c|}{A1} & & & & & \tabularnewline
\hline
\multicolumn{3}{|c|}{A2} & & & & & \tabularnewline
\hline
\multicolumn{3}{|c|}{óëï} & & & & & \tabularnewline
\hline
\multicolumn{3}{|c|}{ðÒÉÍÅÞÁÎÉÅ} & \multicolumn{5}{c|}{}\tabularnewline
\end{longtable}
\end{document}

View File

@ -1,419 +0,0 @@
%% LyX 1.6.8 created this file. For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[russian,english]{article}
\usepackage[T1]{fontenc}
\usepackage[koi8-r,latin9]{inputenc}
\usepackage{array}
\usepackage{longtable}
\usepackage{textcomp}
\usepackage{amstext}
\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
\DeclareRobustCommand{\cyrtext}{%
\fontencoding{T2A}\selectfont\def\encodingdefault{T2A}}
\DeclareRobustCommand{\textcyr}[1]{\leavevmode{\cyrtext #1}}
\AtBeginDocument{\DeclareFontEncoding{T2A}{}{}}
\newcommand{\lyxmathsym}[1]{\ifmmode\begingroup\def\b@ld{bold}
\text{\ifx\math@version\b@ld\bfseries\fi#1}\endgroup\else#1\fi}
%% Because html converters don't know tabularnewline
\providecommand{\tabularnewline}{\\}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific LaTeX commands.
\newcommand{\lyxaddress}[1]{
\par {\raggedright #1
\vspace{1.4em}
\noindent\par}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\usepackage[russian]{babel}
\usepackage{array,longtable}
\usepackage{rotating}
\usepackage{setspace}
\usepackage{geometry}
\usepackage{float}
\usepackage{multirow}
\renewcommand{\multirowsetup}{\centering}
\makeatother
\usepackage{babel}
\begin{document}
\begin{flushright}
\textcyr{\char244}. 07-726\textcyr{\char192}
\par\end{flushright}
\begin{center}
\textbf{\textcyr{\char212\char238\char240\char236\char243\char235\char255\char240\char237\char251\char229}
\textcyr{\char228\char224\char237\char237\char251\char229} \textcyr{\char239\char238}
06\textcyr{\char194}.00.0100\textcyr{\char194\char210\char211}}
\par\end{center}
\begin{center}
\textcyr{\char228\char226\char232\char227\char224\char242\char229\char235\char255}
\textcyr{\char210\char194}7-117\textcyr{\char194} \textnumero{}\rule[-1pt]{3.5cm}{0.4pt}
\textcyr{\char210\char229\char236\char239\char229\char240\char224\char242\char243\char240\char224}
\textcyr{\char237\char224\char240\char243\char230\char237\char238\char227\char238}
\textcyr{\char226\char238\char231\char228\char243\char245\char224}
$t_{\text{\textcyr{\char237}}}$, \rule[-1pt]{1cm}{0.4pt},\inputencoding{koi8-r}\foreignlanguage{russian}{
$\,^{\circ}\mbox{C}$}
\par\end{center}
\selectlanguage{russian}%
\inputencoding{koi8-r}%
ÏÔ\_\_\_\_\_\_\_\_\_\_ <<\rule[-1pt]{1.1cm}{0.4pt}>> \rule[-1pt]{2.5cm}{0.4pt}\inputencoding{latin9}\foreignlanguage{english}{
20~~~~\textcyr{\char227}.~~~~~~\textcyr{\char196\char224\char226\char235\char229\char237\char232\char229}
\textcyr{\char237\char224\char240\char243\char230\char237\char238\char227\char238}
\textcyr{\char226\char238\char231\char228\char243\char245\char224},
$P_{\text{\textcyr{\char205}}}$\rule[-1pt]{1.0cm}{0.4pt} \textcyr{\char236\char236}.
\textcyr{\char240\char242}. \textcyr{\char241\char242}.}
\inputencoding{koi8-r}Drossel55.Table1
\selectlanguage{english}%
\inputencoding{latin9}\begin{longtable}{|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.04\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.09\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.09\paperwidth}|}
\hline
\linebreak\multirow{2}{0.06\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{òÅÖÉÍ
ÒÁÂÏÔÙ Ä×ÉÇÁÔÅÌÑ}} & & \linebreak\multirow{2}{0.1\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{íÏÝÎÏÓÔØ
ÎÁ }\inputencoding{latin9}\textcyr{\char226\char251\char226\char238\char228\char237\char238\char236}
\textcyr{\char226\char224\char235\char243} \textbf{N \textcyr{\char235}.\textcyr{\char241}.}\inputencoding{koi8-r}\foreignlanguage{russian}{}} & \multicolumn{2}{c|}{\inputencoding{latin9}%
\textcyr{\char215\char224\char241\char242\char238\char242\char224}
\textcyr{\char226\char240\char224\char249\char229\char237\char232\char255}
\textcyr{\char240\char238\char242\char238\char240\char224}} & \multirow{2}{0.1\paperwidth}{\textcyr{\char210\char229\char236\char239\char229\char240\char224\char242\char243\char240\char224}
\textcyr{\char227\char224\char231\char224} \textcyr{\char239\char229\char240\char229\char228}
\textcyr{\char241\char226\char238\char225\char238\char228\char237\char238\char233\char242\char243\char240\char225\char232\char237\char238\char233}
\textcyr{\char237\char229} \textcyr{\char225\char238\char235\char229\char229}
\textbf{t$_{4}$},\inputencoding{koi8-r}\foreignlanguage{russian}{$\,^{\circ}\mbox{C}$}} & \inputencoding{latin9}\multirow{2}{0.09\paperwidth}{\textcyr{\char211\char228\char229\char235\char252\char237\char251\char233}
\textcyr{\char240\char224\char241\char245\char238\char228} \textcyr{\char242\char238\char239\char235\char232\char226\char224}
\textcyr{\char237\char229} \textcyr{\char225\char238\char235\char229\char229}
\textbf{C$_{R\text{ \textcyr{\char239}\textcyr{\char240}}}$}\textcyr{\char227}/\textcyr{\char235}.\textcyr{\char241}.\textcyr{\char247}.\inputencoding{koi8-r}\foreignlanguage{russian}{}}\tabularnewline
\cline{4-5}
& & & \textcyr{\char242\char243\char240\char225\char238}-\textcyr{\char234\char238\char236\char239\char240\char229\char241\char241\char238\char240\char224}
\textcyr{\char237\char229} \textcyr{\char225\char238\char235\char229\char229}
\textbf{n$_{\text{\textcyr{\char242}\textcyr{\char234} \textcyr{\char239}\textcyr{\char240}}}$},
\% & \textcyr{\char241\char226\char238\char225\char238\char228\char237\char238\char233}
\textcyr{\char242\char243\char240\char225\char232\char237\char251}
\textbf{n$_{\lyxmathsym{\textcyr{\char241}\textcyr{\char242}}}$},
\% & & \centering{}\tabularnewline
\hline
\multirow{2}{0.11\paperwidth}{{*}2,5-\textcyr{\char236\char232\char237\char243\char242\char237\char238\char233}
\textcyr{\char236\char238\char249\char237\char238\char241\char242\char232}\inputencoding{koi8-r}\foreignlanguage{russian}{}} & \inputencoding{latin9}%
\textcyr{\char210\char211} & & 101,0 & \selectlanguage{russian}%
\inputencoding{koi8-r}98$\pm$0,5\selectlanguage{english}
& \inputencoding{latin9}805 & -\tabularnewline
\cline{2-7}
& \textcyr{\char212\char224\char234\char242} & & & & & \tabularnewline
\hline
\multirow{2}{0.1\paperwidth}{30-\textcyr{\char236\char232\char237\char243\char242\char237\char238\char233}
\textcyr{\char236\char238\char249\char237\char238\char241\char242\char232}\inputencoding{koi8-r}\foreignlanguage{russian}{}} & \inputencoding{latin9}%
\textcyr{\char210\char211} & 3000 & 98,5 & \selectlanguage{russian}%
\inputencoding{koi8-r}98$\pm$0,5\selectlanguage{english}
& \inputencoding{latin9}795 & -\tabularnewline
\cline{2-7}
& \textcyr{\char212\char224\char234\char242} & & & & & \tabularnewline
\hline
\multirow{2}{0.1\paperwidth}{\textcyr{\char194\char199\char203}\inputencoding{koi8-r}\foreignlanguage{russian}{}} & \inputencoding{latin9}%
\textcyr{\char210\char211} & 2800 & 97,5 & \selectlanguage{russian}%
\inputencoding{koi8-r}98$\pm$0,5\selectlanguage{english}
& \inputencoding{latin9}775 & 205\tabularnewline
\cline{2-7}
& \textcyr{\char212\char224\char234\char242} & & & & & \tabularnewline
\hline
\multirow{2}{0.07\paperwidth}{\textcyr{\char204\char207}\inputencoding{koi8-r}\foreignlanguage{russian}{}} & \inputencoding{latin9}%
\textcyr{\char210\char211} & 2100 & 94,0 & \selectlanguage{russian}%
\inputencoding{koi8-r}98$\pm$0,5\selectlanguage{english}
& \inputencoding{latin9}705 & -\tabularnewline
\cline{2-7}
& \textcyr{\char212\char224\char234\char242} & & & & & \tabularnewline
\hline
\multirow{2}{0.1\paperwidth}{\textcyr{\char204\char202\char240}\inputencoding{koi8-r}\foreignlanguage{russian}{}} & \inputencoding{latin9}%
\textcyr{\char210\char211} & 1900 & 93,0 & \selectlanguage{russian}%
\inputencoding{koi8-r}98$\pm$0,5\selectlanguage{english}
& \inputencoding{latin9}680 & 221\tabularnewline
\cline{2-7}
& \textcyr{\char212\char224\char234\char242} & & & & & \tabularnewline
\hline
\multirow{2}{0.1\paperwidth}{{*} \textcyr{\char199\char204\char195}\inputencoding{koi8-r}\foreignlanguage{russian}{}} & \inputencoding{latin9}%
\textcyr{\char210\char211} & - & - & \selectlanguage{russian}%
\inputencoding{koi8-r}80$\pm$0,5\selectlanguage{english}
& \inputencoding{latin9}- & -\tabularnewline
\cline{2-7}
& \textcyr{\char212\char224\char234\char242} & & & & & \tabularnewline
\hline
\end{longtable}
\begin{flushleft}
{*} - \textcyr{\char232\char231\char236\char229\char240\char229\char237\char237\char251\char229}
\textcyr{\char239\char224\char240\char224\char236\char229\char242\char240\char251}\hspace*{1in}\textbf{\textsc{\textcyr{\char205\char224\char241\char242\char240\char238\char229\char247\char237\char251\char229}
\textcyr{\char239\char224\char240\char224\char236\char229\char242\char240\char251}}}
\par\end{flushleft}
\selectlanguage{russian}%
\begin{flushleft}
\inputencoding{koi8-r}Drossel55.Table2\inputencoding{latin9}\foreignlanguage{english}{\textsc{}}\begin{longtable}{|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.15\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|>{\centering}m{0.1\paperwidth}|}
\hline
\multicolumn{2}{|>{\centering}m{0.2\paperwidth}|}{\selectlanguage{english}%
\centering{}\textbf{\textcyr{\char207\char224\char240\char224\char236\char229\char242\char240}}\selectlanguage{russian}
} & \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.1\paperwidth}{\textbf{\textcyr{\char206\char225\char238\char231\char237\char224\char247\char229\char237\char232\char229}}\inputencoding{koi8-r}\foreignlanguage{russian}{}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.1\paperwidth}{\textbf{\textcyr{\char208\char229\char230\char232\char236}}\inputencoding{koi8-r}\foreignlanguage{russian}{}}\selectlanguage{russian}
& \selectlanguage{english}%
\lyxaddress{\inputencoding{latin9}\multirow{2}{0.1\paperwidth}{\textbf{\textcyr{\char199\char237\char224\char247\char229\char237\char232\char229},
\textcyr{\char239\char238\char235\char243\char247\char229\char237\char237\char238\char229}
\textcyr{\char239\char240\char232} \textcyr{\char232\char241\char239\char251\char242\char224\char237\char232\char232}}\inputencoding{koi8-r}\foreignlanguage{russian}{}}}\selectlanguage{russian}
\tabularnewline
\cline{1-2}
\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{\selectlanguage{english}%
\inputencoding{latin9}%
\textbf{\textcyr{\char205\char224\char232\char236\char229\char237\char238\char226\char224\char237\char232\char229}
\textcyr{\char232} \textcyr{\char229\char228\char232\char237\char232\char246\char224}
\textcyr{\char232\char231\char236\char229\char240\char229\char237\char232\char255}}\selectlanguage{russian}
} & \selectlanguage{english}%
\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
\tabularnewline
\endhead
\hline
\multicolumn{2}{|c|}{\selectlanguage{english}%
\inputencoding{latin9}1\selectlanguage{russian}
} & \selectlanguage{english}%
2\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}3\selectlanguage{russian}
& \selectlanguage{english}%
4\selectlanguage{russian}
\tabularnewline
\hline
\multicolumn{2}{|>{\centering}p{0.2\paperwidth}|}{\selectlanguage{english}%
\inputencoding{latin9}%
\begin{minipage}[t]{0.45\columnwidth}%
\textcyr{\char205\char224\char241\char242\char240\char238\char229\char247\char237\char224\char255}
\textcyr{\char226\char229\char235\char232\char247\char232\char237\char224}
\textcyr{\char247\char224\char241\char242\char238\char242\char251}
\textcyr{\char226\char240\char224\char249\char229\char237\char232\char255}
\textcyr{\char240\char238\char242\char238\char240\char224} \textcyr{\char242\char243\char240\char225\char238\char234\char238\char236\char239\char240\char229\char241\char241\char238\char240\char224},
\%%
\end{minipage}\selectlanguage{russian}
} & \selectlanguage{english}%
\centering{}$n_{\text{\textcyr{\char242}\textcyr{\char234}\_\textcyr{\char236}\textcyr{\char227}}}0$\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}%
\textcyr{\char204\char195}\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
\tabularnewline
\hline
\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{\selectlanguage{english}%
\inputencoding{latin9}%
\begin{minipage}[t]{0.45\columnwidth}%
\textcyr{\char205\char224\char241\char242\char240\char238\char229\char247\char237\char224\char255}
\textcyr{\char226\char229\char235\char232\char247\char232\char237\char224}
\textcyr{\char247\char224\char241\char242\char238\char242\char251}
\textcyr{\char226\char240\char224\char249\char229\char237\char232\char255}
\textcyr{\char240\char238\char242\char238\char240\char224} \textcyr{\char242\char243\char240\char225\char238\char234\char238\char236\char239\char240\char229\char241\char241\char238\char240\char224},
\%%
\end{minipage}\selectlanguage{russian}
} & \selectlanguage{english}%
\centering{}$n_{\text{\textcyr{\char242}\textcyr{\char234}\_\textcyr{\char226}\textcyr{\char231}\textcyr{\char235}}}0$\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}<<\textcyr{\char194\char231\char235\char188\char242}>>\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
\tabularnewline
\hline
\multicolumn{2}{|c|}{\selectlanguage{english}%
\inputencoding{latin9}%
\begin{minipage}[c]{0.45\columnwidth}%
\textcyr{\char205\char224\char241\char242\char240\char238\char229\char247\char237\char224\char255}
\textcyr{\char226\char229\char235\char232\char247\char232\char237\char224}
\textcyr{\char236\char232\char237\char232\char236\char224\char235\char252\char237\char238\char233}
\textcyr{\char247\char224\char241\char242\char238\char242\char251}
\textcyr{\char226\char240\char224\char249\char229\char237\char232\char255}
\textcyr{\char240\char238\char242\char238\char240\char224} \textcyr{\char242\char243\char240\char225\char238\char234\char238\char236\char239\char240\char229\char241\char241\char238\char240\char224},
\%%
\end{minipage}\selectlanguage{russian}
} & \selectlanguage{english}%
\centering{}$n_{\text{\textcyr{\char242}\textcyr{\char234}\_\textcyr{\char236}\textcyr{\char232}\textcyr{\char237}}}0$\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}%
\textcyr{\char204\char195}\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
\tabularnewline
\hline
\multicolumn{2}{|c|}{\selectlanguage{english}%
\inputencoding{latin9}%
\begin{minipage}[t]{0.45\columnwidth}%
\textcyr{\char205\char224\char241\char242\char240\char238\char229\char247\char237\char224\char255}
\textcyr{\char226\char229\char235\char232\char247\char232\char237\char224}
\textcyr{\char239\char229\char240\char229\char241\char242\char240\char238\char233\char234\char232}
\textcyr{\char247\char224\char241\char242\char238\char242\char251}
\textcyr{\char226\char240\char224\char249\char229\char237\char232\char255}
\textcyr{\char240\char238\char242\char238\char240\char224} \textcyr{\char242\char243\char240\char225\char238\char234\char238\char236\char239\char240\char229\char241\char241\char238\char240\char224}
\textcyr{\char239\char240\char232} <<\textcyr{\char208\char224\char231\char240\char229\char248\char229\char237\char232\char232}
\textcyr{\char208\char207\char204}>>,\%%
\end{minipage}\selectlanguage{russian}
} & \selectlanguage{english}%
\centering{}$\Delta n_{\text{\textcyr{\char242}\textcyr{\char234}\_\textcyr{\char226}\textcyr{\char231}\textcyr{\char235}}}0$\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}<<\textcyr{\char194\char231\char235\char188\char242}>>\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
\tabularnewline
\hline
\multicolumn{2}{|>{\centering}p{0.08\paperwidth}|}{\selectlanguage{english}%
\inputencoding{latin9}%
\begin{minipage}[t]{0.45\columnwidth}%
\textcyr{\char205\char224\char241\char242\char240\char238\char229\char247\char237\char224\char255}
\textcyr{\char226\char229\char235\char232\char247\char232\char237\char224}
\textcyr{\char239\char229\char240\char229\char241\char242\char240\char238\char233\char234\char232}
\textcyr{\char247\char224\char241\char242\char238\char242\char251}
\textcyr{\char226\char240\char224\char249\char229\char237\char232\char255}
\textcyr{\char240\char238\char242\char238\char240\char224} \textcyr{\char242\char243\char240\char225\char238\char234\char238\char236\char239\char240\char229\char241\char241\char238\char240\char224}
\textcyr{\char239\char238} \textcyr{\char234\char238\char236\char224\char237\char228\char229}
<<\textcyr{\char210\char240\char229\char237\char232\char240\char238\char226\char238\char247\char237\char251\char233}
\textcyr{\char240\char229\char230\char232\char236}>>, \%%
\end{minipage}\selectlanguage{russian}
} & \selectlanguage{english}%
\centering{}$\Delta n_{\text{\textcyr{\char242}\textcyr{\char234}\_\textcyr{\char242}\textcyr{\char240}}}0$\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}<<\textcyr{\char194\char231\char235\char188\char242}>>\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
\tabularnewline
\hline
\multicolumn{2}{|c|}{\selectlanguage{english}%
\inputencoding{latin9}%
\begin{minipage}[t]{0.45\columnwidth}%
\textcyr{\char208\char224\char241\char245\char238\char228\char237\char251\char233}
\textcyr{\char234\char238\char253\char244\char244\char232\char246\char232\char229\char237\char242}
1-\textcyr{\char227\char238} \textcyr{\char234\char238\char237\char242\char243\char240\char224}
\textcyr{\char244\char238\char240\char241\char243\char237\char238\char234}%
\end{minipage}\selectlanguage{russian}
} & \selectlanguage{english}%
\centering{}$\Psi_{(\mu F)}$\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}-\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
\tabularnewline
\hline
\multicolumn{2}{|>{\centering}p{0.1\paperwidth}|}{\selectlanguage{english}%
\inputencoding{latin9}%
\begin{minipage}[t]{0.45\columnwidth}%
\textcyr{\char207\char240\char238\char227\char240\char224\char236\char236\char237\char251\char233}
\textcyr{\char240\char224\char241\char245\char238\char228} \textcyr{\char242\char238\char239\char235\char232\char226\char224}
\textcyr{\char226} \textcyr{\char208\char209}, \textcyr{\char234\char227}/\textcyr{\char247}%
\end{minipage}\selectlanguage{russian}
} & \selectlanguage{english}%
\centering{}$G_{\text{\textcyr{\char242} \textcyr{\char239}\textcyr{\char240}\textcyr{\char238}\textcyr{\char227} \textcyr{\char208}\textcyr{\char209} \textcyr{\char204}\textcyr{\char195}}}$\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}-\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
\tabularnewline
\hline
\selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.15\paperwidth}{\inputencoding{koi8-r}\foreignlanguage{russian}{ðÁÒÁÍÅÔÒÙ
ÉÚÍÅÒÉÔÅÌÑ ËÒÕÔÑÝÅÇÏ ÍÏÍÅÎÔÁ}}\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}%
\textcyr{\char205\char224\char247\char224\char235\char252\char237\char238\char229}
\textcyr{\char241\char236\char229\char249\char229\char237\char232\char229},
\textcyr{\char227\char240\char224\char228}\selectlanguage{russian}
& \selectlanguage{english}%
\centering{}$\phi_{\text{\textcyr{\char232}\textcyr{\char234}\textcyr{\char236}}}0$\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}\multirow{2}{0.1\paperwidth}{-}\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
\tabularnewline
\cline{2-3} \cline{5-5}
\selectlanguage{english}%
\selectlanguage{russian}
& \selectlanguage{english}%
\inputencoding{latin9}%
\textcyr{\char202\char238\char253\char244\char244\char232\char246\char232\char229\char237\char242}
\textcyr{\char245\char224\char240\char224\char234\char242\char229\char240\char232\char241\char242\char232\char234\char232}\selectlanguage{russian}
& \selectlanguage{english}%
\centering{}$K$\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
& \selectlanguage{english}%
\selectlanguage{russian}
\tabularnewline
\hline
\end{longtable}
\par\end{flushleft}
\selectlanguage{english}%
\textcyr{\char208\char224\char241\char245\char238\char228} \textcyr{\char236\char224\char241\char235\char224},
\textcyr{\char235}/\textcyr{\char247} \rule[-1pt]{2.0cm}{0.4pt} (\textcyr{\char237\char229}
\textcyr{\char225\char238\char235\char229\char229} 0,2)
\begin{flushleft}
\textbf{\textcyr{\char199\char224\char226\char232\char241\char232\char236\char238\char241\char242\char252}
\textcyr{\char236\char229\char230\char228\char243} \textcyr{\char239\char238\char235\char238\char230\char229\char237\char232\char229\char236}
\textcyr{\char228\char238\char231\char232\char240\char243\char254\char249\char229\char233}
\textcyr{\char232\char227\char235\char251} \textcyr{\char232} \textcyr{\char240\char224\char241\char245\char238\char228\char238\char236}
\textcyr{\char242\char238\char239\char235\char232\char226\char224}
$G_{\text{\textcyr{\char242}}}=f(\alpha_{\text{\textcyr{\char228}\textcyr{\char234}}})$}
\par\end{flushleft}
\selectlanguage{russian}%
\begin{flushleft}
\inputencoding{koi8-r}Drossel55.Table3
\par\end{flushleft}
\selectlanguage{english}%
\begin{flushleft}
\begin{longtable}{|>{\centering}p{0.15\paperwidth}|>{\centering}p{0.1\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|>{\centering}p{0.03\paperwidth}|}
\hline
\multicolumn{2}{|c|}{\textcyr{\char207\char224\char240\char224\char236\char229\char242\char240}} & \multicolumn{10}{c|}{\textcyr{\char199\char237\char224\char247\char229\char237\char232\char229},
\textcyr{\char239\char238\char235\char243\char247\char229\char237\char237\char238\char229}
\textcyr{\char239\char240\char232} \textcyr{\char232\char241\char239\char251\char242\char224\char237\char232\char232}}\tabularnewline
\hline
\textcyr{\char205\char224\char232\char236\char229\char237\char238\char226\char224\char237\char232\char229}
\textcyr{\char232} \textcyr{\char229\char228\char232\char237\char232\char246\char224}
\textcyr{\char232\char231\char236\char229\char240\char229\char237\char232\char255} & \textcyr{\char206\char225\char238\char231\char237\char224\char247\char229\char237\char232\char229} & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\tabularnewline
\hline
\textcyr{\char207\char238\char235\char238\char230\char229\char237\char232\char229}
\textcyr{\char228\char238\char231\char232\char240\char243\char254\char249\char229\char233}
\textcyr{\char232\char227\char235\char251}, \textcyr{\char227\char240\char224\char228} & $(\alpha_{\text{\textcyr{\char228}\textcyr{\char234}}})$ & & & & & & & & & & \tabularnewline
\hline
\textcyr{\char208\char224\char241\char245\char238\char228} \textcyr{\char242\char238\char239\char235\char232\char226\char224},
\textcyr{\char234\char227}/\textcyr{\char247} & $G_{\text{\textcyr{\char210}}}$ & & & & & & & & & & \tabularnewline
\hline
\textcyr{\char200\char241\char239\char238\char235\char237\char232\char242\char229\char235\char252} & \textcyr{\char200\char237\char230\char229\char237\char229\char240}
\textcyr{\char239\char238} \textcyr{\char232\char241\char239\char251\char242\char224\char237\char232\char255\char236} & \multicolumn{3}{c|}{%
\begin{minipage}[t]{0.1\columnwidth}%
\textcyr{\char205\char224\char247\char224\char235\char252\char237\char232\char234}
\textcyr{\char193\char210\char202} \textcyr{\char200\char202}%
\end{minipage}} & \multicolumn{4}{>{\centering}p{0.15\paperwidth}|}{%
\begin{minipage}[t]{0.15\columnwidth}%
\textcyr{\char205\char224\char247\char224\char235\char252\char237\char232\char234}
\textcyr{\char243\char247\char224\char241\char242\char234\char224}
\textcyr{\char200\char196}%
\end{minipage}} & \multicolumn{3}{c|}{%
\begin{minipage}[t]{0.15\columnwidth}%
\textcyr{\char207\char240\char229\char228\char241\char242\char224\char226\char232\char242\char229\char235\char252}
\textcyr{\char231\char224\char234\char224\char231\char247\char232\char234\char224}%
\end{minipage}}\tabularnewline
\hline
& & \multicolumn{3}{c|}{} & \multicolumn{4}{c|}{} & \multicolumn{3}{c|}{}\tabularnewline
\hline
\end{longtable}
\par\end{flushleft}
\end{document}

View File

@ -1,3 +0,0 @@
#!/bin/sh
cat $@ | iconv -f koi8-r -t utf-8 | sed 's/\\/\n\\/g' | grep '^\\[a-z]' | sed 's/\\\([a-z]*\).*$/\1/g' | sort | uniq | sed 's/\(.*\)/#define\t\1 "\1\"/g'

View File

@ -1,305 +0,0 @@
#include "tex_parser.h"
#include <string.h>
#include <ctype.h>
#include "tex_parser_tags.h"
#include "tex_parser_const.h"
#include "zalloc_ext.h"
#include "zalloc.h"
#include "c_const.h"
#include "xerror.h"
#include "zerror.h"
/* only for debug */
#define __TEX_PARSER_DEBUG
#include <stdio.h>
void tex_parse(const char *source, size_t len, struct tex_struct_s **tex_struct, struct zerror_s **error)
{
if (!len)
len = strlen(source);
enum where_e
{
IN_UNDEF = 0, // undefined place
IN_COMMENT, // any comment
IN_TAG, // any tag
IN_TAG_UNKNOWN, // unknown tag
IN_SPACE, // space, \tag { for example
IN_TAGPARM, // in \tag{} curly braces
IN_TAG_BEGIN,
IN_TAG_END,
IN_TAG_TABULARNEWLINE,
IN_FORMULA, // in $...$
} where_stack[MAX_TEX_STACK_LEVEL] = {IN_UNDEF};
enum object_e {
OBJ_UNDEF = 0,
OBJ_TABLE,
OBJ_TABLE_PARAMS,
OBJ_TABLE_SUBTABLE,
OBJ_TABLE_HEADER,
OBJ_TABLE_FIRSTHEADER,
OBJ_TABLE_FOOTER,
OBJ_TABLE_FIRSTFOOTER,
OBJ_GRAPHICS
} object_stack[MAX_TEX_STACK_LEVEL] = {OBJ_UNDEF};
char *tag = NULL, *param = NULL;
size_t i = 0;
size_t tex_level = 0;
size_t obj_level = 0;
for (i = 0; i < len; i++) {
/* stack checking */
if (tex_level + 1 == MAX_TEX_STACK_LEVEL) {
z_set_error(error, TEX_PARSER_DOMAIN, TEX_PARSER_ERROR_STACKOVERFLOW,
"tex_parse(): stack overflow, symbol %c(0x%2.2x) at position %d",
source[i], (u_int8_t)source[i], i);
return;
}
/* read one character from input stream */
char c = source[i];
#ifdef __TEX_PARSER_DEBUG
printf("tex_level = %lu, c = %c\n", tex_level, c);
#endif
/* looking at where_stack and encountered character */
switch (where_stack[tex_level]) {
case IN_UNDEF:
if (c == '\\') {
zclear(&tag);
where_stack[++tex_level] = IN_TAG;
} else if (isspace(c)) {
where_stack[++tex_level] = IN_SPACE;
} else if (c == '%') {
where_stack[++tex_level] = IN_COMMENT;
} else if (isgraph(c) || c < 0) {
} else {
z_set_error(error, TEX_PARSER_DOMAIN, TEX_PARSER_ERROR_UNEXPECTED_SYMBOL,
"tex_parse(): IN_UNDEF unexpected symbol %c(0x%2.2x) at position %d",
source[i], (u_int8_t)source[i], i);
return;
}
break;
case IN_COMMENT:
if (c == '\r' || c == '\n') {
where_stack[tex_level--] = IN_UNDEF;
}
break;
case IN_TAG:
if (isalnum(c)) {
tag = zalloc_append8_str(tag, c);
} else if (!tag && (c == '\\' || c == ','
|| c == '%' || c == '_')) {
where_stack[tex_level--] = IN_UNDEF;
} else if (!tag) {
z_set_error(error, TEX_PARSER_DOMAIN, TEX_PARSER_ERROR_UNEXPECTED_SYMBOL,
"tex_parse(): IN_TAG empty tag, symbol %c(0x%2.2x) at position %d",
source[i], (u_int8_t)source[i], i);
return;
} else {
if (!strcmp(tag, TEX_TAG_BEGIN))
where_stack[tex_level] = IN_TAG_BEGIN;
else if (!strcmp(tag, TEX_TAG_END))
where_stack[tex_level] = IN_TAG_END;
else if (!strcmp(tag, TEX_TAG_TABULARNEWLINE)) {
where_stack[tex_level] = IN_TAG_TABULARNEWLINE;
} else {
if (!strcmp(tag, TEX_TAG_ENDFIRSTHEAD)) {
// subtable is first header - some actions here...
object_stack[obj_level] = OBJ_TABLE_SUBTABLE;
#ifdef __TEX_PARSER_DEBUG
puts("=OBJ_TABLE_SUBTABLE");
#endif
} else if (!strcmp(tag, TEX_TAG_ENDHEAD)) {
// subtable is header - some actions here...
object_stack[obj_level] = OBJ_TABLE_SUBTABLE;
#ifdef __TEX_PARSER_DEBUG
puts("=OBJ_TABLE_SUBTABLE");
#endif
} else if (!strcmp(tag, TEX_TAG_ENDFIRSTFOOT)) {
// subtable is first footer - some actions here...
object_stack[obj_level] = OBJ_TABLE_SUBTABLE;
#ifdef __TEX_PARSER_DEBUG
puts("=OBJ_TABLE_SUBTABLE");
#endif
} else if (!strcmp(tag, TEX_TAG_ENDFOOT)) {
// subtable is footer - some actions here...
object_stack[obj_level] = OBJ_TABLE_SUBTABLE;
#ifdef __TEX_PARSER_DEBUG
puts("=OBJ_TABLE_SUBTABLE");
#endif
}
where_stack[tex_level] = IN_TAG_UNKNOWN;
}
#ifdef __TEX_PARSER_DEBUG
printf("\\%s\n", tag);
#endif
zclear(&tag);
i--;
}
break;
case IN_SPACE:
if (!isspace(c)) {
where_stack[tex_level--] = IN_UNDEF;
i--;
}
break;
case IN_TAGPARM:
if (c == '{' || c == '[') { // tag params
zclear(&param);
where_stack[++tex_level] = IN_TAGPARM;
} else if (c == '}' || c == ']') { // end tag params
#ifdef __TEX_PARSER_DEBUG
if (param)
printf("IN_TAGPARM: {%s}\n", param);
#endif
if (tex_level && where_stack[tex_level - 1] == IN_TAG_BEGIN
&& !strcmp(param, TEX_PARAM_TABLE)) {
object_stack[++obj_level] = OBJ_TABLE;
#ifdef __TEX_PARSER_DEBUG
puts("->OBJ_TABLE");
#endif
} else if (tex_level && where_stack[tex_level - 1] == IN_TAG_END
&& !strcmp(param, TEX_PARAM_TABLE)) {
object_stack[obj_level--] = OBJ_UNDEF;
if (object_stack[obj_level] == OBJ_TABLE)
object_stack[obj_level--] = OBJ_UNDEF;
else {
z_set_error(error, TEX_PARSER_DOMAIN, TEX_PARSER_ERROR_STACKEMPTY,
"tex_parse(): IN_TAGPARM unexpected symbol %c(0x%2.2x) at position %d",
source[i], (u_int8_t)source[i], i);
return;
}
#ifdef __TEX_PARSER_DEBUG
puts("<-OBJ_UNDEF");
puts("<-OBJ_UNDEF");
#endif
}
where_stack[tex_level--] = IN_UNDEF;
} else if (c == '\\') { // new tag
zclear(&tag);
where_stack[++tex_level] = IN_TAG;
} else if (c == '%') {
where_stack[++tex_level] = IN_COMMENT;
} else if (isgraph(c) || isspace(c) || c < 0) {
param = zalloc_append8_str(param, c);
} else {
z_set_error(error, TEX_PARSER_DOMAIN, TEX_PARSER_ERROR_UNEXPECTED_SYMBOL,
"tex_parse(): IN_TAGPARM unexpected symbol %c(0x%2.2x) at position %d",
source[i], (u_int8_t)source[i], i);
return;
}
break;
case IN_TAG_UNKNOWN:
case IN_TAG_BEGIN:
case IN_TAG_END:
case IN_TAG_TABULARNEWLINE:
if (c == '{' || c == '[') {
switch (object_stack[obj_level]) {
case OBJ_TABLE:
object_stack[++obj_level] = OBJ_TABLE_PARAMS;
#ifdef __TEX_PARSER_DEBUG
puts("->OBJ_TABLE_PARAMS");
#endif
break;
default:
break;
}
zclear(&param);
where_stack[++tex_level] = IN_TAGPARM;
} else if (c == '}' || c == ']') {
#ifdef __TEX_PARSER_DEBUG
if (param)
printf("IN_TAGPARM: {%s}\n", param);
#endif
where_stack[tex_level--] = IN_UNDEF;
i--;
} else if (c == '\\') {
switch (object_stack[obj_level]) {
case OBJ_TABLE_PARAMS:
object_stack[obj_level] = OBJ_TABLE_SUBTABLE;
#ifdef __TEX_PARSER_DEBUG
puts("=OBJ_TABLE_SUBTABLE");
#endif
break;
default:
break;
}
zclear(&tag);
where_stack[tex_level] = IN_TAG;
} else if (isspace(c)) {
where_stack[++tex_level] = IN_SPACE;
} else if (c == '%')
where_stack[++tex_level] = IN_COMMENT;
else if (isgraph(c) || c < 0) {
} else {
z_set_error(error, TEX_PARSER_DOMAIN, TEX_PARSER_ERROR_UNEXPECTED_SYMBOL,
"tex_parse(): IN_%d unexpected symbol %c(0x%2.2x) at position %d",
where_stack[tex_level], source[i], (u_int8_t)source[i], i);
return;
}
break;
case IN_FORMULA:
break;
default:
z_set_error(error, TEX_PARSER_DOMAIN, TEX_PARSER_ERROR_PLACE_UNKNOWN,
"tex_parse(): IN_%d unknown place, symbol %c(0x%2.2x) at position %d",
where_stack[tex_level], source[i], (u_int8_t)source[i], i);
return;
break;
}
}
}

View File

@ -1,47 +0,0 @@
[indentation]
indent_width=8
indent_type=1
indent_hard_tab_width=8
detect_indent=false
indent_mode=2
[project]
name=tex_parser
base_path=/home/kolan/dev/c/tex_parser/
description=
[long line marker]
long_line_behaviour=1
long_line_column=72
[files]
current_page=3
FILE_NAME_0=259;C;0;16;1;1;1;/home/kolan/dev/c/tex_parser/tex_parser_test.c;0
FILE_NAME_1=3895;C;0;16;1;1;1;/home/kolan/dev/c/tex_parser/tex_parser.c;0
FILE_NAME_2=3453;C;0;16;1;1;1;/home/kolan/dev/c/tex_parser/tex_parser.h;0
FILE_NAME_3=579;C;0;16;1;1;1;/home/kolan/dev/c/tex_parser/tex_parser_tags.h;0
[build-menu]
NF_00_LB=_Сделать
NF_00_CM=make
NF_00_WD=%p
NF_01_LB=Сделать заданную _цель
NF_01_CM=make
NF_01_WD=%p
NF_02_LB=Сделать _объект
NF_02_CM=make %e.o
NF_02_WD=%p
CFT_00_LB=_Скомпилировать
CFT_00_CM=gcc -Wall -c "%f"
CFT_00_WD=%p
CFT_01_LB=_Сборка
CFT_01_CM=gcc -Wall -o "%e" "%f" -lhash
CFT_01_WD=%p
CFT_02_LB=
CFT_02_CM=
CFT_02_WD=%p
filetypes=C;
EX_00_LB=_Выполнить
EX_00_CM=./tex_parser_test ex1.tex
EX_00_WD=%p

View File

@ -1,144 +0,0 @@
#ifndef _TEX_PARSER_H
#define _TEX_PARSER_H
#include <sys/types.h>
#include "zerror.h"
#define TEX_PARSER_DOMAIN 0
/**
* enum tex_parser_error - the LaTeX parser error codes
*
* @TEX_PARSER_NOERROR: Default state indicates no error.
* @TEX_PARSER_ERROR_UNKNOWN: Uncontrolled error happen
* @TEX_PARSER_ERROR_STACKOVERFLOW: Stack overflow
* @TEX_PARSER_ERROR_PLACE_UNKNOWN: Unknown place (internal error)
* @TEX_PARSER_ERROR_UNEXPECTED_SYMBOL: Unexpected symbol for current place
*
* Defines parser error codes, @TEX_PARSER_NOERROR = %0 is equivalent to no errors.
*/
enum tex_parser_error {
TEX_PARSER_NOERROR = 0,
TEX_PARSER_ERROR_UNKNOWN,
TEX_PARSER_ERROR_STACKOVERFLOW,
TEX_PARSER_ERROR_STACKEMPTY,
TEX_PARSER_ERROR_PLACE_UNKNOWN,
TEX_PARSER_ERROR_UNEXPECTED_SYMBOL,
};
/**
* struct tex_table_row_s - LaTeX table row
*
* @over_line: Text over row (\hline for ex.)
* @cells: Row cells
* @under_line: Text under row (\cline{2-4} for ex.)
*
* @over_line, @cells, @under_line uses zalloc*() functions which stores
* array dimensions.
*/
struct tex_table_row_s {
char *over_line;
char **cells;
char *under_line;
};
/**
* struct tex_table_s - LaTeX table
*
* @document_offset: Table offset (in symbols) in the LaTeX document
* @document_size: Table size (in symbols) in the LaTeX document
* @id: Id in report generator context (Request.Drossel1.Table1 for ex.)
* @col_props: Column properties devided by '>' symbol
* @head_table: Top rows devided by & and automaticaly added on page break
* @foot_table: Bottom rows devided by & and automaticaly added on page break
* @main_table: Central rows which can be devided horizontally and vertically
*
* @col_props, @head_table, @foot_table, @main_table uses zalloc*() functions to
* determine array dimensions.
*/
struct tex_table_s {
size_t document_offset;
size_t document_size;
char *id;
char **col_props;
struct tex_table_row_s *head_table;
struct tex_table_row_s *foot_table;
struct tex_table_row_s *main_table;
};
/**
* struct tex_graphics - LaTeX graphics
*
* @prestr: Preceding string
* @path: Path to image file
* @poststr: Descendant string
*
* Need some description here...
*/
struct tex_graphics {
char *prestr;
char *path;
char *poststr;
};
/**
* enum tex_element_type - Type of LaTeX element
*
* @TEX_ELEM_TEXT: Text containing non-arable code
* @TEX_ELEM_TABLE: LaTeX table or longtable
* @TEX_ELEM_GRAPHICS: LaTeX graphics (images, plots)
*
* Need some description here...
*/
enum tex_elem_type {
TEX_ELEM_TEXT,
TEX_ELEM_TABLE,
TEX_ELEM_GRAPHICS
};
/**
* struct tex_elem_s - Element of LaTeX code
*
* @type: LaTeX element type
* @data: Element data structure
*
* Need some description here...
*/
struct tex_elem_s {
enum tex_elem_type type;
union {
char *text;
struct tex_table_s *table;
struct tex_graphics_s *graphics;
} data;
};
/**
* struct tex_struct_s - LaTeX code structure
*
* @elems: List of LaTeX elements
*
* Need some description here...
*/
struct tex_struct_s {
struct tex_elem_s *elems;
};
/**
* tex_parse() - Parse the LaTeX code
*
* @source: LaTeX code string
* @len: Length of LaTeX string
* @tex_struct: A return location for a #tex_struct_s
* @error: A return location for a #zerror_s
*
* Parses LaTeX text string @source of length len to *@tex_struct.
* If some error occurs, parser returns immediatly with error info in *@error.
* @tex_struct or @error can't be %NULL; *@tex_struct *@error must be %NULL.
*/
void tex_parse(const char *source, size_t len, struct tex_struct_s **tex_struct, struct zerror_s **error);
#endif

View File

@ -1,6 +0,0 @@
#ifndef _TEX_PARSER_CONST_H
#define _TEX_PARSER_CONST_H
#define MAX_TEX_STACK_LEVEL 128
#endif

View File

@ -1,20 +0,0 @@
#ifndef _TEX_PARSER_TAGS_H
#define _TEX_PARSER_TAGS_H
#define TEX_TAG_BEGIN "begin"
#define TEX_TAG_CLINE "cline"
#define TEX_TAG_END "end"
#define TEX_TAG_ENDFIRSTHEAD "endfirsthead"
#define TEX_TAG_ENDHEAD "endhead"
#define TEX_TAG_ENDFIRSTFOOT "endfirstfoot"
#define TEX_TAG_ENDFOOT "endfoot"
#define TEX_TAG_HLINE "hline"
#define TEX_TAG_HSPACE "hspace"
#define TEX_TAG_MULTICOLUMN "multicolumn"
#define TEX_TAG_MULTIROW "multirow"
#define TEX_TAG_TABULARNEWLINE "tabularnewline"
#define TEX_TAG_INCLUDEGRAPHICS "includegraphics"
#define TEX_PARAM_TABLE "longtable"
#endif

View File

@ -1,51 +0,0 @@
#include <sys/stat.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
//~ #include <locale.h>
#include "tex_parser.h"
#include "zalloc.h"
#include "xalloc.h"
#include "xerror.h"
int main(int argc, char *argv[])
{
if (argc != 2)
xerrx(-1, "Usage: ./tex_parser_test /path/to/example.tex", NULL);
FILE *tex_file = fopen(argv[1], "rb");
if (!tex_file)
xerr(errno, "Cannot open %s", argv[1]);
struct stat stat_buf;
if (fstat(fileno(tex_file), &stat_buf) == -1)
xerr(errno, "Cannot stat %s", argv[1]);
char *tex_buf = (char *)xmalloc((size_t)stat_buf.st_size + 1);
if (fread(tex_buf, 1, (size_t)stat_buf.st_size, tex_file) != (size_t)stat_buf.st_size)
xerrx(-1, "Error reading %s", argv[1]);
fclose(tex_file);
tex_buf[stat_buf.st_size] = 0;
struct tex_struct_s *tex_struct;
struct zerror_s *error;
memset(&tex_struct, 0, sizeof(tex_struct));
memset(&error, 0, sizeof(error));
//~ setlocale(LC_ALL, "ru_RU.KOI8-R");
/* Коммент по-русски */
tex_parse(tex_buf, (size_t)stat_buf.st_size, &tex_struct, &error);
//~ setlocale(LC_ALL, "");
if (error)
puts(error->message);
xclear(&tex_buf);
return EXIT_SUCCESS;
}