From a22b3bfd2a6e394855cb1cac3ae67ad6882980cf Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Sun, 14 Feb 2021 00:47:12 +0900 Subject: Add compiler The compiler takes a lexical specification expressed by regular expressions and generates a DFA accepting the tokens. Operators that you can use in the regular expressions are concatenation, alternation, repeat, and grouping. --- compiler/compiler.go | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 compiler/compiler.go (limited to 'compiler/compiler.go') diff --git a/compiler/compiler.go b/compiler/compiler.go new file mode 100644 index 0000000..153ad77 --- /dev/null +++ b/compiler/compiler.go @@ -0,0 +1,9 @@ +package compiler + +func Compile(regexps map[int][]byte) (*DFA, error) { + root, symTab, err := parse(regexps) + if err != nil { + return nil, err + } + return genDFA(root, symTab), nil +} -- cgit v1.2.3