diff options
author | Ryo Nihei <nihei.dev@gmail.com> | 2021-02-14 00:47:12 +0900 |
---|---|---|
committer | Ryo Nihei <nihei.dev@gmail.com> | 2021-02-14 00:48:25 +0900 |
commit | a22b3bfd2a6e394855cb1cac3ae67ad6882980cf (patch) | |
tree | 26366f5397df2dcb9fe3fc952d86424b7bac3ecd /compiler/compiler.go | |
parent | Initial commit (diff) | |
download | tre-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.go | 9 |
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 +} |