/* Eskip routing configuration format for Skipper: https://github.com/zalando/skipper */ eskip:root = (expression | definitions)?; space:ws = [ \n\b\f\r\t\v]; comment:ws = "//" [^\n]*; decimal-digit:alias = [0-9]; octal-digit:alias = [0-7]; hexa-digit:alias = [0-9a-fA-F]; decimal:alias:nows = [1-9] decimal-digit*; octal:alias:nows = "0" octal-digit*; hexa:alias:nows = "0" [xX] hexa-digit+; int = decimal | octal | hexa; exponent:alias:nows = [eE] [+\-]? decimal-digit+; float:nows = decimal-digit+ "." decimal-digit* exponent? | "." decimal-digit+ exponent? | decimal-digit+ exponent; number:alias:nows = "-"? (int | float); string:nows = "\"" ([^\\"] | "\\" .)* "\""; regexp:nows = "/" ([^\\/] | "\\" .)* "/"; symbol:nows = [a-zA-Z_] [a-zA-z0-9_]*; arg:alias = number | string | regexp; args:alias = arg ("," arg)*; term:alias = symbol "(" args? ")"; predicate = term; predicates:alias = "*" | predicate ("&&" predicate)*; filter = term; filters:alias = filter ("->" filter)*; address:alias = string; shunt = ""; loopback = ""; backend:alias = address | shunt | loopback; expression = predicates ("->" filters)? "->" backend; id:alias = symbol; definition = id ":" expression; definitions:alias = ";"* definition (";"+ definition)* ";"*;