| Commit message (Collapse) | Author | Age |
|
|
|
| |
There's no need to include any header when linking with `-lfl`.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Don't use program_name in the description of -T/--trace or -V/--version
option. It's ugly when user invokes flex with a long path like
"/home/username/tools/bin/my-custom-built-flex".
This solution is not long term. If possible, the help text should be
modified so that the "flex" name is no longer needed below the first
"Usage:" line. All translations of help text will need to be updated
as well.
|
|
|
|
| |
"%s %s\n" is not translatable
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There's no technical need of stripping path from program_name. I think
the users should be fine if they see the path they use to invoke flex
is diagnostic messages and help texts.
Yes, users will see "Usage: ../flex [OPTIONS]..." now if they invoke
flex with the path "../flex".
The --version output has been changed so that the name field will be
always "flex" or "flex++". If the flex program has been renamed to
"lex" (for compatibility or other reason) this will allow identifying
the implementation name ("flex"). (And it's a recommended practice in
GNU Coding Standards)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
In skeleton files comments are indicated by leading `%#` and when
directly read in using `flex -S <skeleton.skl>` they should be
ignored. Example: `flex.skl`.
Amending commit 2f21edac99b5efc432417233e6e53326d630e08f which removed
this conditional branch.
|
|
|
|
| |
Using regex_t regex_blank_line is *slow*.
|
|
|
|
|
|
| |
It's simply to return (regexec(®ex_blank_line, str, 0, NULL, 0) == 0);
The reason for encapsulation is to allow replacing this with a
non-regex method if necessary.
|
|
|
|
|
|
|
|
|
|
|
|
| |
**Issue:**
Scanner generation leaks memory for transition tables when invoked
without `--tables-file` option.
**Root cause:**
`gentabs` function has different memory acquire/release conditions.
**Solution:**
Reclaim memory at the same scope where it was alloacated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
**Issue:**
Scanner postprocessing leaks memory during correction of `#line`
directives values and generation of C header file.
**Root cause:**
`filter_fix_linedirs` and `filter_tee_header` functions do not
dispose allocated memory.
**Solution:**
Automatically reclaim affected memory by allocating it on stack
insted of heap. Stack allocation should not be a problem as its
only 512 bytes and there is no recursive calls.
|
|
|
|
| |
Fixes #193
|
|
|
|
|
|
| |
In a directory containing multiple scanners, we want to allow
specifying the name of the backup file else the backup files will be
overwritten.
|
|
|
|
|
|
|
|
|
| |
NetBSD had a crash during build. Since the provided substitute for
reallocarray() wasn't working, use NetBSD's reallocarr(). Let
configure choose that function whenever it is available. Use
reallocarray if available. Still fallback if neither is available.
Fixes #219
|
|
|
|
|
|
|
| |
A #line pre-processor directive specifies the line number and source
file of the following lines. If the source file _is_ the current file,
the line number should be that of the line following the directive. So
the specified line number should be the current line number plus 1.
|
| |
|
|
|
|
| |
Unattributed patch carried over from sourceforge bug tracker.
|
| |
|
|
|
|
|
| |
The user may have defined the yy_* macros themselves. In that case,
don't clobber them.
|
|
|
|
|
|
|
| |
This allowed unnamespaced definitions to leak into header files,
breaking client code.
Fixes #142
|
|
|
|
|
| |
This can happen in the case of // comments (which Flex doesn't handle
specially).
|
|
|
|
|
| |
This really should never happen, but this at least fixes the
breakage on Verilator.
|
|
|
|
|
|
| |
Since the comments in flex.skl are, by hypothesis, not needed in
skel.c, we remove them. THis reduces the size of the resulting
executable somewhat.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* Don't call isascii() here. It's deprecated in POSIX and not needed
for myesc's case.
* The check of the character class and range here should match what's
defined as {ESCSEQ} in scan.l, so for [[:xdigit:]] we use isxdigit();
for [0-7] we check '0' <= c <= '7' (not isdigit(c) because isdigit is
locale-dependant in standard's sense)
* Add missing length limit for "\x<hex>" (<hex> is at most 2 digits)
|
|
|
|
|
| |
No sense to keep these two function when libc's strtoul() can do the
same job, but better.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Check for cross compiling. If cross compiling, build stage1flex using a
custom link command.
We also override LDADD since that adds the replacement implementations
that are cross compiled, and instead always use the replacement library
implementations.
We don't use BUILD_OBJEXT and BUILD_EXEEXT since it seems that automake
does not support these.
Fixes #78.
|
|
|
|
|
|
| |
strings.h (not string.h) is the standard-defined include header for
strcasecmp(). Include <strings.h> for portability (even though glibc
exposes strcasecmp() declaration also in <string.h> by default).
|
|
|
|
|
|
|
|
|
|
|
|
| |
`configure` will now error if a required header or function is not
found on the system.
Also add comments on optional functions checks.
Add sys/stats.h and sys/wait.h to list of required headers in
configure.
This fixes issue #180.
|
|
|
|
|
|
| |
Replace the naive "for" loop in determining power of two with a clever
bitwise solution. This code is around the Internet already and is in
Public Domain.
|
|
|
|
|
|
|
|
|
| |
Revert change to copy scan.c when building the distribution
archive. Move it instead. This satisfies automake's notions of what
should be clean and ensures that the distribution archive contains a
just-built copy of scan.c.
Fixes #186
|
| |
|
|
|
|
|
|
|
|
| |
This will ensure the flex scanner included in release tarball being
generated by exactly the flex version to be released.
Here's one catch after this change: You may not run "make dist" or
"make distdir" if you configure the flex source to be cross-compiled.
|
|
|
|
|
| |
Makefile shouldn't overwrite the 'localedir' variable, because that's
what '--localedir' option in 'configure' is for.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Revert commit e02c3d27eeb6b53ec82532ab080c23ce26813fd4
("include the intl/ subdirectory when searching for include files")
Flex doesn't come with libintl source code, so inclusion of
$(top_srcdir)/intl subdirectory during compiling is unnecessary.
This flag seems to be left after "remove intl from dist"
(commit 8f45da06adbd7dbcdfdbdd5c20ff4c47fc504f35) without someone
cleaning this up.
Users who need to build with gettext functionality from libintl would
use the '--with-libintl-prefix' configure option.
|
|
|
|
|
|
|
|
| |
Fix unneeded double malloc - let regerror(). Write its message after
our "regcomp for (regex) failed: " string.
Also, errbuf cannot be free()'d because of flexfatal containing a
longjmp.
|
|
|
|
|
|
|
|
|
|
|
| |
The current clauses stating "main.c: parse.h" and "yylex.c: parse.h" do
not work as expected. Make did not try to build parse.h upon building
flex-main.o as it would think main.c exist already and ignore the
clause. Fix this by explicitly stating that the .o files depend on
parse.h instead.
This dependency bug only happens if user builds flex from a
checked-out repository.
|
|
|
|
|
|
|
|
|
|
|
| |
Use reallocarray() when we have it (i.e. in OpenBSD system). When we
don't, use equivalent overflow detection for our allocate_array and
reallocate_array functions.
Remove lib/reallocarray.c from our LIBOBJS as we no longer need it.
Provide a fallback SIZE_MAX macro definition in flexint.h (not
preprocessor friendly, but enough for our reallocate_array use case).
|
|
|
|
|
|
| |
BSD make doesn't like $< with more than one source
specified. Additionally, make sure to specify srcdir when referring to
source files since vpath builds depend on this.
|
| |
|
|
|
|
|
| |
Fix the reentrant part; don't "#define yyfoo yyfoo" because it breaks
code that does #ifndef yywrap ..
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Avoid alloca() for SSP; it is better anyway; since we don't need to
strdup the path.
|
| |
|
| |
|