Может тут кто пользовался либой для парсинга строк?
сама либа ->
https://github.com/alecthomas/participle
Нужно распарсить строку такого вида:
test(aaa("321") == bbb(123), ccc(["hello", 321 <> 123])) > 321
Я смог распарсить все, кроме сравнений (и массив, но главное со сравнениями разобраться):
type Rule struct {
Value *Value `@@`
}
type Value struct {
String *string `( @String`
Number *float64 `| @Number`
Func *Func `| @@ )`
//Condition *Condition `| @@ )`
}
type Func struct {
Name string `@Ident`
Parameters []*Value `( "(" [ @@ ( "," @@ )* ] ")" )`
}
type Condition struct {
Left *Value `@@`
Operator *string `@( "<>" | "<=" | ">=" | "<" | ">" | "!=" | "==" )`
Right *Value `@@`
}
Сейчас при запуске - упираюсь в циклический парсинг, думаю что Func и Condition начинают конфликтовать за распаршивание