aboutsummaryrefslogtreecommitdiff
path: root/compiler/compiler.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2021-02-14 00:47:12 +0900
committerRyo Nihei <nihei.dev@gmail.com>2021-02-14 00:48:25 +0900
commita22b3bfd2a6e394855cb1cac3ae67ad6882980cf (patch)
tree26366f5397df2dcb9fe3fc952d86424b7bac3ecd /compiler/compiler.go
parentInitial commit (diff)
downloadtre-a22b3bfd2a6e394855cb1cac3ae67ad6882980cf.tar.gz
tre-a22b3bfd2a6e394855cb1cac3ae67ad6882980cf.tar.xz
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.
Diffstat (limited to 'compiler/compiler.go')
-rw-r--r--compiler/compiler.go9
1 files changed, 9 insertions, 0 deletions
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
+}