-
Notifications
You must be signed in to change notification settings - Fork 174
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Ulya Trofimovich
committed
Dec 11, 2024
0 parents
commit d427fd9
Showing
303 changed files
with
85,251 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Sphinx build info version 1 | ||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | ||
config: f37c26ea3c129989b651949c8400a616 | ||
tags: 645f666f9bcd5a90fca523b33c5a78b7 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added
BIN
+13.4 KB
.doctrees/manual/basics/warnings/condition_order/wcondition_order.doctree
Binary file not shown.
Binary file added
BIN
+5.89 KB
.doctrees/manual/basics/warnings/empty_character_class/wempty_character_class.doctree
Binary file not shown.
Binary file added
BIN
+8.54 KB
.doctrees/manual/basics/warnings/match_empty_string/wmatch_empty_string.doctree
Binary file not shown.
Binary file added
BIN
+14.3 KB
.doctrees/manual/basics/warnings/nondeterministic_tags/wnondeterministic_tags.doctree
Binary file not shown.
Binary file added
BIN
+9.03 KB
.doctrees/manual/basics/warnings/sentinel_in_midrule/wsentinel_in_midrule.doctree
Binary file not shown.
Binary file added
BIN
+4.61 KB
.doctrees/manual/basics/warnings/swapped_range/wswapped_range.doctree
Binary file not shown.
Binary file added
BIN
+17 KB
.doctrees/manual/basics/warnings/undefined_control_flow/wundefined_control_flow.doctree
Binary file not shown.
Binary file added
BIN
+8.46 KB
.doctrees/manual/basics/warnings/unreachable_rules/wunreachable_rules.doctree
Binary file not shown.
Binary file added
BIN
+15.6 KB
.doctrees/manual/basics/warnings/useless_escape/wuseless_escape.doctree
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Empty file.
Binary file not shown.
Binary file added
BIN
+816 KB
2017_trofimovich_tagged_deterministic_finite_automata_with_lookahead.pdf
Binary file not shown.
Binary file added
BIN
+454 KB
2019_borsotti_trofimovich_efficient_posix_submatch_extraction_on_nfa.pdf
Binary file not shown.
Binary file not shown.
Binary file added
BIN
+322 KB
2021_trofimovich_re2c_a_lexer_generator_based_on_lookahead_tdfa_(slides).pdf
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
re2c.org |
113 changes: 113 additions & 0 deletions
113
_downloads/059776af7897d85a01b707b04aab941b/parse_records.re
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
// re2c $INPUT -o $OUTPUT -i | ||
#include <assert.h> | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <vector> | ||
|
||
struct mtag_t | ||
{ | ||
int pred; | ||
const char *tag; | ||
}; | ||
|
||
typedef std::vector<mtag_t> mtagpool_t; | ||
|
||
static void mtag(int *pt, const char *t, mtagpool_t *tp) { | ||
mtag_t l = {*pt, t}; | ||
*pt = (int) tp->size(); | ||
tp->push_back(l); | ||
} | ||
|
||
static void print_channels(const mtagpool_t &tp, int x, int y) { | ||
if (x == -1) return; | ||
print_channels(tp, tp[x].pred, tp[y].pred); | ||
const char *px = tp[x].tag, *py = tp[y].tag; | ||
fprintf(stderr, " %.*s\n", (int) (py - px), px); | ||
} | ||
|
||
#define YYMTAGP(t) mtag(&t, YYCURSOR, &tp) | ||
#define YYMTAGN(t) mtag(&t, NULL, &tp) | ||
|
||
static int lex(const char *YYCURSOR) { | ||
const char *YYMARKER, *n1, *n2, *a1, *a2, *c1, *c2; | ||
mtagpool_t tp; | ||
int h1, h2; | ||
/*!stags:re2c format = "const char *@@;"; */ | ||
/*!mtags:re2c format = "int @@;"; */ | ||
|
||
for (;;) { | ||
tp.clear(); | ||
/*!mtags:re2c format = "@@ = -1;"; */ | ||
/*!re2c | ||
re2c:define:YYCTYPE = char; | ||
re2c:yyfill:enable = 0; | ||
re2c:tags = 1; | ||
end = "\x00"; | ||
eol = "\n"; | ||
wsp = [ \t]*; | ||
eq = wsp "=" wsp; | ||
nick = [a-zA-Z0-9_]+; | ||
name = [A-Z] ("." | [a-z]+); | ||
names = name (wsp name)*; | ||
country = [A-Za-z ]+; | ||
channel = ([a-z0-9-]+ "/")? "#" [a-z0-9-]+; | ||
* { fprintf(stderr, "error: %s\n", YYCURSOR); return 1; } | ||
end { return 0; } | ||
wsp | eol { continue; } | ||
@n1 nick @n2 wsp "{" wsp eol | ||
wsp "name" eq @a1 names @a2 wsp eol | ||
wsp "country" eq @c1 country @c2 wsp eol | ||
wsp "channels" eq (wsp #h1 channel #h2 wsp ";")* wsp eol | ||
wsp "}" { | ||
fprintf(stderr, "\n%.*s\n", (int) (n2 - n1), n1); | ||
fprintf(stderr, " name: %.*s\n", (int) (a2 - a1), a1); | ||
fprintf(stderr, " country: %.*s\n", (int) (c2 - c1), c1); | ||
fprintf(stderr, " channels:\n"); | ||
print_channels(tp, h1, h2); | ||
continue; | ||
} | ||
*/ | ||
} | ||
} | ||
|
||
int main() { | ||
const char *fname = "etc_passwd"; | ||
FILE *f; | ||
|
||
// prepare input file | ||
f = fopen(fname, "w"); | ||
fprintf(f, | ||
"h4cker1970 {\n" | ||
" name = Jon Smith\n" | ||
" country = UK\n" | ||
" channels = freenode/#gentoo-dev; freenode/#gentoo-arch; freenode/#alpha;\n" | ||
"}\n" | ||
"\n" | ||
"mitek {\n" | ||
" name = Mitrofan Rygoravich\n" | ||
" country = Belarus\n" | ||
" channels = bynets/#haskell; freenode/#unix;\n" | ||
"}\n" | ||
"\n"); | ||
fclose(f); | ||
|
||
// read input file into buffer | ||
f = fopen(fname, "r"); | ||
fseek(f, 0, SEEK_END); | ||
const size_t fsize = (size_t) ftell(f); | ||
fseek(f, 0, SEEK_SET); | ||
char *buffer = (char*) malloc(fsize + 1); | ||
fread(buffer, 1, fsize, f); | ||
buffer[fsize] = 0; | ||
fclose(f); | ||
|
||
assert(lex(buffer) == 0); | ||
|
||
// cleanup | ||
remove(fname); | ||
free(buffer); | ||
return 0; | ||
} |
Oops, something went wrong.