В качестве личного проекта, пытаясь изучить Go (lang), применяя его к чему-либо, я пишу «компилятор» EMCAScript / JavaScript; все, что он (первоначально) сделает, это позволит вам включить другие файлы .js.
Помимо функциональности, я выдергиваю волосы, пытаясь выяснить пакет regexp
. Вот фрагмент, который, кажется, не делает то, что я хочу:
// Note: "lines" is an array of strings.
var includeRegex, _ = regexp.Compile("^[ \t]*include[(]{1}\"([^\"]+)\"[)]{1};")
for _, line := range lines {
var isInclude = includeRegex.Match([]byte(line))
if isInclude {
var includeFile = includeRegex.FindString(line)
fmt.Println("INCLUDE", includeFile)
} else {
// ...
}
Я уже наткнулся на подмножество регулярных выражений Go, поэтому и регулярное выражение не читается как ^\s*include\("([^"]+)"\);
. Я уже тестировал как RegexPal, так и ReGeXPal, и оба они определенно работают. Совпадение никогда не происходит; что я делаю не так?
Что бы это ни стоило, оператор include()
, который я пытаюсь разобрать, выглядит так:
include("somefile.js");
РЕДАКТИРОВАТЬ: Для чего это стоит, я держу код здесь .