annotate xdwhno.lex @ 12:e07f9f1d1cc5 default tip

add xdw2pdf.
author pyon@macmini
date Fri, 02 Aug 2019 20:12:44 +0900
parents 3cecce3b2ce3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
1 /* xdwhno Last Change: 2018-06-15 金 09:48:07.
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
2
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
3 release: xdwhno.lex
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
4 flex xdwhno.lex
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
5 gcc -I. lex.yy.c xdwapi.lib -static -o xdwhno.exe
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
6 strip xdwhno.exe
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
7
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
8 機能:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
9 DocuWorks文書から被保番らしいものを抽出
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
10
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
11 */
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
12 /*** Definition section ***/
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
13
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
14 %{
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
15
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
16 /*
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
17 * C コードにはCの標準I/O ライブラリを使うものがある.
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
18 * %{と %} で囲まれた部分はそのまま生成ファイルに取り込まれる.
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
19 */
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
20 #include <stdio.h>
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
21 #include <stdbool.h>
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
22 int mcnt = 1;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
23 int column = 1;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
24 bool verbose = false;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
25 bool debug = false;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
26 bool plno = false;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
27 bool z2h = false;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
28 FILE *fp1, *fp2;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
29
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
30 %}
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
31
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
32 /* これはflexに入力ファイルが一つであることを示す. */
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
33 /* %option noyywrap */
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
34
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
35 %%
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
36 /*
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
37 * 規則領域
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
38 * コメントはインデントしなければならない.そうしないと正規表現と誤認識してしまう.
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
39 */
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
40
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
41 0[1238]0[0-9]{7} {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
42 /*
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
43 * この規則は入力から整数を表示する.
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
44 * yytextには一致した文字列が含まれる.
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
45 */
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
46 /* 同一行の mcnt 回のマッチだったら処理 */
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
47 if ( mcnt == column ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
48 if ( plno ) printf( "%d,", yylineno );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
49 printf( "%s\n", yytext );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
50 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
51 mcnt++;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
52 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
53 \n {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
54 mcnt = 1;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
55 yylineno++;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
56 ECHO;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
57 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
58 0 { unput( '0' ); }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
59 1 { unput( '1' ); }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
60 2 { unput( '2' ); }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
61 3 { unput( '3' ); }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
62 4 { unput( '4' ); }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
63 5 { unput( '5' ); }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
64 6 { unput( '6' ); }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
65 7 { unput( '7' ); }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
66 8 { unput( '8' ); }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
67 9 { unput( '9' ); }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
68 <<EOF>> { }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
69 . { ECHO; }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
70
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
71 %%
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
72 /*** Cコード領域 ***/
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
73
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
74 /*
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
75 * メインプログラム.
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
76 * 字句解析を呼び出し、処理が済むと終了する.
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
77 */
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
78
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
79
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
80 #include <unistd.h>
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
81 #include <stdlib.h>
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
82 #include <io.h>
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
83 #include <glob.h>
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
84
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
85 #include <windows.h>
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
86 #include <xdw_api.h>
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
87
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
88 void print_error( int code ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
89 switch ( code ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
90 case XDW_E_NOT_INSTALLED:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
91 fprintf( stderr, "DocuWorksがインストールされていません。" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
92 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
93 case XDW_E_FILE_NOT_FOUND:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
94 fprintf( stderr, "指定されたファイルが見つかりません。" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
95 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
96 case XDW_E_FILE_EXISTS:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
97 fprintf( stderr, "指定されたファイルはすでに存在します。" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
98 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
99 case XDW_E_ACCESSDENIED:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
100 fprintf( stderr, "指定されたファイルを開くことができません。" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
101 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
102 case XDW_E_INVALID_NAME:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
103 case XDW_E_BAD_NETPATH:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
104 fprintf( stderr, "指定されたファイルを開くことができません。(ネットワーク)" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
105 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
106 case XDW_E_BAD_FORMAT:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
107 fprintf( stderr, "指定されたファイルは正しいフォーマットではありません。" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
108 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
109 case XDW_E_INVALID_ACCESS:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
110 fprintf( stderr, "指定された操作をする権利がありません。" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
111 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
112 case XDW_E_SHARING_VIOLATION:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
113 fprintf( stderr, "ファイルが使用中です。" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
114 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
115 default:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
116 fprintf( stderr, "エラーが発生しました。" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
117 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
118 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
119 fprintf( stderr, "[ Error code : %d ]\n", code );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
120 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
121
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
122 void print_help() {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
123 char prog[12] = "xdwhno";
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
124 fprintf( stderr, "Usage:\n" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
125 fprintf( stderr, " %s infile\n", prog );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
126 fprintf( stderr, " %s -v infile\n", prog );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
127 fprintf( stderr, " %s -p infile ( print line-no )\n", prog );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
128 fprintf( stderr, " %s -c N infile ( N-th match )\n", prog );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
129 fprintf( stderr, " %s -z infile ( not implement )\n", prog );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
130 fprintf( stderr, " %s -d dir ( not implement )\n", prog );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
131 fprintf( stderr, " %s -x ( debug )\n", prog );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
132 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
133
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
134 int xdw2txt( const char* in_path, const char *tmpfile ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
135
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
136 FILE *fp;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
137 if ( ( fp = fopen( tmpfile, "w" ) ) == NULL ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
138 fprintf( stderr, "can't open tmp file [%s].\n", tmpfile );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
139 exit( 1 );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
140 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
141
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
142 int api_result = 0;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
143 // 文書ハンドルを開く
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
144 XDW_DOCUMENT_HANDLE h = NULL;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
145 XDW_OPEN_MODE_EX mode = {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
146 sizeof( XDW_OPEN_MODE_EX ), XDW_OPEN_READONLY, XDW_AUTH_NODIALOGUE
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
147 };
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
148 api_result = XDW_OpenDocumentHandle( in_path, &h, (XDW_OPEN_MODE*)&mode );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
149 if ( api_result < 0 ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
150 print_error( api_result );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
151 return 1;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
152 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
153 // XDW_GetDocumentInformationを用いて総ページ数を得る
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
154 XDW_DOCUMENT_INFO info = { sizeof(XDW_DOCUMENT_INFO), 0, 0, 0 };
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
155 XDW_GetDocumentInformation(h, &info);
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
156 int nPage = info.nPages;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
157
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
158 long datasize;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
159 char* lpszvalue;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
160 // メイン処理
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
161 for ( int i = 1; i <= nPage; i++ ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
162 datasize = XDW_GetPageTextToMemory( h, i, NULL, 0, NULL );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
163 lpszvalue = (char*)malloc( sizeof(char)*datasize );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
164 XDW_GetPageTextToMemory( h, i, lpszvalue, datasize, NULL );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
165
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
166 fprintf( fp, "%s\n", lpszvalue );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
167 free( lpszvalue );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
168 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
169
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
170 if ( api_result < 0 ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
171 print_error( api_result );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
172 return 1;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
173 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
174
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
175 // 文書ハンドルを閉じる
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
176 XDW_CloseDocumentHandle( h, NULL );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
177
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
178 fclose( fp );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
179 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
180
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
181 int main( int argc, char** argv ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
182 // オプションの解析
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
183 char prog[128];
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
184 strcpy( prog, argv[0] );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
185
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
186 bool zenkaku = false;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
187 bool globdir = false;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
188
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
189 int opt;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
190 while ( ( opt = getopt( argc, argv, "pvzxdc::" ) ) != -1 ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
191 switch ( opt ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
192 case 'x':
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
193 debug = true;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
194 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
195 case 'v':
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
196 verbose = true;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
197 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
198 case 'p':
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
199 plno = true;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
200 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
201 case 'c':
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
202 column = atoi( optarg );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
203 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
204 case 'z':
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
205 zenkaku = true;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
206 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
207 case 'd':
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
208 globdir = true;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
209 break;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
210 default:
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
211 fprintf( stderr, "error: illegal option '%c'.\n", opt );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
212 print_help();
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
213 exit( 1 );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
214 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
215 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
216
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
217 if ( argc == 1 ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
218 print_help();
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
219 exit( 1 );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
220 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
221
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
222 char in_path[ _MAX_PATH ];
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
223 _fullpath( in_path, argv[ argc - 1 ], _MAX_PATH );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
224
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
225 xdw2txt( in_path, "xdwhno.tmp1" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
226 if ( verbose ) fprintf( stderr, "x2t done.\n" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
227
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
228 if ( ( fp1 = fopen( "xdwhno.tmp1", "r" ) ) == NULL ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
229 fprintf( stderr, "can't open tmp file [%s].\n", "xdwhno.tmp1" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
230 exit( 1 );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
231 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
232
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
233 if ( ( fp2 = fopen( "xdwhno.tmp2", "w" ) ) == NULL ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
234 fprintf( stderr, "can't open tmp file [%s].\n", "xdwhno.tmp2" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
235 exit( 1 );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
236 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
237
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
238 yyin = fp1;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
239 yyout = fp2;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
240 yylex(); // 字句解析の呼び出し
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
241
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
242 return 0;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
243 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
244
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
245 int yywrap() {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
246 if ( z2h ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
247 if ( verbose ) fprintf( stderr, "analysis done.\n" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
248 fclose( fp1 );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
249 fclose( fp2 );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
250
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
251 if ( !debug ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
252 unlink( "xdwhno.tmp1" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
253 unlink( "xdwhno.tmp2" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
254 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
255
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
256 exit( 0 );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
257 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
258
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
259 z2h = true;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
260 if ( verbose ) fprintf( stderr, "z2h done.\n" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
261
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
262 yyout = NULL;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
263 yylineno = 1;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
264
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
265 if ( ( fp2 = freopen( "xdwhno.tmp2", "r", fp2 ) ) == NULL ) {
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
266 fprintf( stderr, "can't open tmp file [%s].\n", "xdwhno.tmp2" );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
267 exit( 1 );
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
268 }
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
269
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
270 yyin = fp2;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
271
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
272 return 0;
3cecce3b2ce3 add (f)lex file.
pyon@macmini
parents:
diff changeset
273 }