void parse(FILE *i, FILE *o){ time_t now; time(&now); peektok = NONE; fputs("/* Generated by re2c 0.9.1-C on ", o); fprintf(o, "%-24s", ctime(&now)); fputs(" */\n", o); oline+=2; in = Scanner_new(i); line_source(o, Scanner_line(in)); while(Scanner_echo(in, o)){ yyparse(); if(spec) genCode(o, spec); line_source(o, Scanner_line(in)); } }
static int scss_Scanner_init(scss_Scanner *self, PyObject *args, PyObject *kwds) { PyObject *item, *item0, *item1; int i, is_tuple, _is_tuple; long size; PyObject *patterns, *ignore; Pattern *_patterns = NULL; int patterns_sz = 0; Pattern *_ignore = NULL; int ignore_sz = 0; char *input = NULL; int input_sz = 0; self->scanner = NULL; if (!PyArg_ParseTuple(args, "OO|z#", &patterns, &ignore, &input, &input_sz)) { return -1; } if (!Scanner_initialized()) { is_tuple = PyTuple_Check(patterns); if (is_tuple || PyList_Check(patterns)) { size = is_tuple ? PyTuple_Size(patterns) : PyList_Size(patterns); _patterns = PyMem_New(Pattern, size); for (i = 0; i < size; ++i) { item = is_tuple ? PyTuple_GetItem(patterns, i) : PyList_GetItem(patterns, i); _is_tuple = PyTuple_Check(item); if (_is_tuple || PyList_Check(item)) { item0 = _is_tuple ? PyTuple_GetItem(item, 0) : PyList_GetItem(item, 0); item1 = _is_tuple ? PyTuple_GetItem(item, 1) : PyList_GetItem(item, 1); if (PyString_Check(item0) && PyString_Check(item1)) { _patterns[patterns_sz].tok = PyString_AsString(item0); _patterns[patterns_sz].expr = PyString_AsString(item1); patterns_sz++; } } } } Scanner_initialize(_patterns, patterns_sz); } is_tuple = PyTuple_Check(ignore); if (is_tuple || PyList_Check(ignore)) { size = is_tuple ? PyTuple_Size(ignore) : PyList_Size(ignore); _ignore = PyMem_New(Pattern, size); for (i = 0; i < size; ++i) { item = is_tuple ? PyTuple_GetItem(ignore, i) : PyList_GetItem(ignore, i); if (PyString_Check(item)) { _ignore[ignore_sz].tok = PyString_AsString(item); _ignore[ignore_sz].expr = NULL; ignore_sz++; } } } self->scanner = Scanner_new(_patterns, patterns_sz, _ignore, ignore_sz, input, input_sz); if (_patterns != NULL) PyMem_Del(_patterns); if (_ignore != NULL) PyMem_Del(_ignore); #ifdef DEBUG PySys_WriteStderr("Scss Scanner object initialized! (%lu bytes)\n", sizeof(scss_Scanner)); #endif return 0; }