나는이 같은 여러 문자열이 있습니다이 구조체를 파싱하는 방법 : "name [arg, arg]"에 스칼라 연결자 파서를 사용 하시겠습니까?
name[arg,arg,arg]
name[arg,arg]
name[arg]
name
내가 스칼라 콤비 파서로 구문 분석 원을, 이것은 내가 얻을 관리가 최고입니다 : 그것은 name
에서 작동
object TaskDepParser extends JavaTokenParsers {
def name: Parser[String] = "[^\\[\\],]+".r
def expr: Parser[(String, Option[List[String]])] =
name ^^ { a => (a, None) } |
name ~ "[" ~ repsep(name, ",") ~ "]" ^^ { case name~_~args~_ => (name, Some(args)) }
}
을하지만, name[arg]
에서 작동하지 않음 - \ z '이지만 예상치는 [' found
입니다. 그것을 고칠 수 있습니까?
주위를 뒤집어 놓으면 효과가있을 것이라고 생각합니다 ... 이름이 첫 번째 규칙에 의해 빨려 들어간 것 같아요. 그러면 입력에 실패할까요? –
@ TonyK. - 와우, 바보. 당신 말이 맞아요. 답변을 게시 할 수 있습니다. 동의하겠습니다. – Rogach