2013-02-21 5 views
0

나는 초보자입니다. flex/bison을 사용하여 bibtex 파일을 구문 분석하고 싶습니다.들소와 함께 bibtex 구문 분석

@Book{a1, 
author="amook", 
Title="ASR", 
Publisher="oxf", 
Year="2010", 
Add="UK", 
Edition="1", 
} 
@Article{a2, 
Author="Rudra Banerjee", 
Title={FeNiMo}, 
Publisher={P{\"R}B}, 
Issue="12", 
Page="36690", 
Year="2011", 
Add="UK", 
Edition="1", 
} 

이 구문 분석을 위해 나는 다음과 같은 코드를 작성했습니다 : 샘플 하여 BibTex입니다

%{ 
#include <stdio.h> 
#include <stdlib.h> 
%} 

%{ 
char yylval; 
int YEAR,i; 
//char array_author[1000]; 
%} 
%x author 
%x title 
%x pub 
%x year 
%% 
@                               printf("\nNEWENTRY\n"); 
[a-zA-Z][a-zA-Z0-9]*            {printf("%s",yytext); 
                                        BEGIN(INITIAL);} 
author=                         {BEGIN(author);} 
<author>\"[a-zA-Z\/.]+\"        {printf("%s",yytext); 
                                        BEGIN(INITIAL);} 
year=                           {BEGIN(year);} 
<year>\"[0-9]+\"                {printf("%s",yytext); 
                                        BEGIN(INITIAL);} 
title=                          {BEGIN(title);} 
<title>\"[a-zA-Z\/.]+\"         {printf("%s",yytext); 
                                        BEGIN(INITIAL);} 
publisher=                      {BEGIN(pub);} 
<pub>\"[a-zA-Z\/.]+\"           {printf("%s",yytext); 
                                        BEGIN(INITIAL);} 
[a-zA-Z0-9\/.-]+=        printf("ENTRY TYPE "); 
\"                      printf("QUOTE "); 
\{                      printf("LCB "); 
\}                      printf(" RCB"); 
;                       printf("SEMICOLON "); 
\n                      printf("\n"); 
%% 

int main(){ 
  yylex(); 
//char array_author[1000]; 
//printf("%d%s",&i,array_author[i]); 
i++; 
return 0; 
} 

문제는 내가 다른 변수 키와 val 분리에 저장하려는입니다 어떤 장소 (배열일지도 모른다). 통찰력을 가질 수 있습니까?

+0

가능한 중복 (http://stackoverflow.com/questions/15305789/parse-bibtex-with-flexbison-revisited) –

답변

0

1 년 전에이 질문을 보았 더라면 나는 동시 적으로 의견을 작성했을 것이므로 질문을 개선 할 수있을 것입니다. 제공된 코드는 파서는 아니지만 정규식은 flex 전용으로 코딩되었습니다. 정규식을 사용하여 토큰에 대한 입력 파일을 스캔하는 것은 파서를 작성하는 것의 일부이기는하지만. bibtex 파일에 대한 문법이나 구조가 bison에 대해 정의되지 않았습니다.

key와 val을 분리하려면, 필요한 것이 전부라면 flex보다 awk와 sed와 같은 도구로 훨씬 쉽게 할 수 있습니다. 내가 지적하고자하는 한 가지는 항상 발이 등호를 따르는 것입니다. Kinda를 사용하면 특수한 구문 위키 포켓 케이지없이 쉽게 식별 할 수 있습니다.

에 대한 정보가 없으므로 우리는 bibtex 파일을 구문 분석해야하며 운동의 궁극적 인 목표는 최선의 접근 방법을 찾기 어렵습니다.

편집 : 영업 이익은 다시 질문하고 대답했다으로이 질문은 중복입니다 : parse bibtex with flex+bison: revisited

[플렉스 + 들소와 구문 분석하여 BibTex : 재 방문]의
+0

사실 두 질문 모두 내게 묻습니다 .... (처음에는이 답변이 없었습니다. 나는 대답 할 수없는 질문을 삭제하는 것을 좋아하지 않으므로 삭제할 수 없습니다. 가까운 투표가 추가되었습니다. – BaRud