47 lines
681 B
Plaintext
47 lines
681 B
Plaintext
%{
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
extern int CURRENT_LINE_NUMBER;
|
|
extern char *yytext;
|
|
|
|
extern void yyerror(const char *s);
|
|
extern int yylex();
|
|
extern FILE *yyin;
|
|
%}
|
|
|
|
%union {
|
|
char *str;
|
|
}
|
|
|
|
%token <str> TEXT
|
|
%token LBRACE RBRACE
|
|
|
|
%%
|
|
|
|
block:
|
|
LBRACE content RBRACE
|
|
;
|
|
|
|
content:
|
|
| content TEXT {
|
|
printf("TOKEN ('%s')\n", $2);
|
|
free($2); }
|
|
| content block
|
|
;
|
|
%%
|
|
|
|
int main(int argc, char **argv) {
|
|
|
|
if (argc > 1) {
|
|
FILE *f = fopen(argv[1], "r");
|
|
if (!f) {
|
|
perror("\033[91mFail open file\033[0m");
|
|
return 1;
|
|
}
|
|
yyin = f;
|
|
}
|
|
yyparse();
|
|
return 0;
|
|
} |