Skip to content
/ libfsm Public
forked from katef/libfsm

DFA regular expression library & friends

License

Notifications You must be signed in to change notification settings

fastly/libfsm

Folders and files

NameName
Last commit message
Last commit date
Aug 24, 2024
Jun 13, 2022
Aug 26, 2024
Jul 22, 2024
Oct 12, 2024
Sep 19, 2024
Mar 22, 2017
Dec 1, 2020
Sep 17, 2024
Oct 12, 2024
Oct 11, 2024
Jul 10, 2024
Mar 22, 2021
Mar 20, 2017
Jun 29, 2022
Sep 28, 2017
Jul 22, 2018
Mar 19, 2017
Sep 12, 2024
Aug 19, 2024

Repository files navigation

libfsm and friends: NFA, DFA, regular expressions and lexical analysis

; re -cb -pl dot '[Ll]ibf+(sm)*' '[Ll]ibre' | dot

libfsm.svg

Getting started:

You get:

  • libfsm — library for manipulating FSM (NFA and DFA)
  • libre — library for compiling regular expressions to NFA
  • fsm(1) — command line interface for FSM
  • re(1) — command line interface for regular expressions
  • rx(1) — command line interface for compiling sets of regular expressions
  • lx(1) — lexer generator

lx is an attempt to produce a simple, expressive, and unobtrusive lexer generator which is good at lexing, does just lexing, is language independent, and has no other features.

Building from source

Clone with submodules (contains required .mk files):

; git clone --recursive https://github.com/katef/libfsm.git

To build and install:

; bmake -r
; bmake -r install

You can override a few things:

; CC=clang bmake -r
; PREFIX=$HOME bmake -r install

To run the tests:

; bmake -r LX=./build/bin/lx test

You need bmake for building. In order of preference:

  1. If you use some kind of BSD (NetBSD, OpenBSD, FreeBSD, ...) this is make(1). They all differ slightly. Any of them should work.
  2. If you use Linux or MacOS and you have a package named bmake, use that.
  3. If you use Linux and you have a package named pmake, use that. It's the same thing. Some package managers have bmake packaged under the name pmake. I don't know why they name it pmake.
  4. Otherwise if you use MacOS and you only have a package named bsdmake, use that. It's Apple's own fork of bmake. It should also work but it's harder for me to test.
  5. If none of these are options for you, you can build bmake from source. You don't need mk.tar.gz, just bmake.tar.gz. This will always work. https://www.crufty.net/help/sjg/bmake.html

When you see "bmake" in the build instructions above, it means any of these.

To install without building the documentation:

; CC=clang PREFIX=$HOME pmake -r -DNODOC install

Building depends on:

  • Any BSD make.
  • A C compiler. Any should do, but GCC and clang are best supported.
  • ar, ld, and a bunch of other stuff you probably already have.
  • xmllint (packaged as libxml2-utils) for bmake -r test

Building the documentation depends on:

  • xsltproc(1)
  • Docbook XSLT (and its XML catalog entries, packaged as docbook-xsl and docbook-xml)

Fuzzing depends on the theft property-based testing library:

Ideas, comments or bugs: [email protected]

About

DFA regular expression library & friends

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 90.9%
  • Makefile 4.5%
  • Awk 1.6%
  • XSLT 0.9%
  • Perl 0.6%
  • CSS 0.4%
  • Other 1.1%