Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def pNumericConst = regex(new Regex("[0-9]+"))
- def pStringConst = regex(new Regex("\"([^\"]|(\\\"))*\""))
- def pColorConst = regex(new Regex("0x[A-Fa-f0-9]{6}"))
- def pId = regex(new Regex("[A-Za-z][A-Za-z0-9]*"))
- def pBooleanConst = regex(new Regex("(true)|(false)"))
- def pTextStyleConst = regex(new Regex("(bold)|(italic)|(regular)"))
- def pHAlignConst = regex(new Regex("(top)|(middle)|(bottom)"))
- def pVAlignConst = regex(new Regex("(left)|(center)|(right)"))
- def pNumericExpr = pNumericConst;
- def pStringExpr = pStringConst;
- def pColorExpr = pColorConst;
- def pBooleanExpr = pBooleanConst;
- def pTextStyleExpr = pTextStyleConst
- def pHAlignExpr = pHAlignConst
- def pVAlignExpr = pVAlignConst
- def Program = WidgetSpec *
- def WidgetSpec = pId ~ "<-" ~ Widget
- def Widget = (AtomicWidget
- | (AtomicWidget ~ "|" ~ AtomicWidget)
- | (AtomicWidget ~ "---" ~ AtomicWidget)
- | (AtomicWidget ~ "*|*" ~ RangeSpec)
- | (AtomicWidget ~ "*---*" ~ RangeSpec)
- | ("(" ~ AtomicWidget ~ ")"))
- def RangeSpec = pId ~ "=" ~ pNumericExpr ~ ":" ~ pNumericExpr
- def AtomicWidget = (("(" ~ WidgetDef ~ ")")
- | ("(" ~ WidgetDef ~ ")" ~ "[" ~ (WidgetProp *) ~ "]"))
- def WidgetName = ("label" | "textbox" | "button" | "checkbox" | "radio" |
- "image" | "combobox" | "slider")
- def WidgetDef = (WidgetName
- | (WidgetName ~ ":" ~ WidgetDim ~ "x" ~ WidgetDim))
- def WidgetDim = (("(" ~ pNumericExpr ~ ")") | "?" | pNumericExpr)
- def WidgetProp = (("text" ~ "=" ~ pStringExpr)
- | ("image" ~ "=" ~ pStringExpr)
- | ("checked" ~ "=" ~ pBooleanExpr)
- | ("value" ~ "=" ~ pNumericExpr)
- | ("enabled" ~ "=" ~ pBooleanExpr)
- | ("fgcolor" ~ "=" ~ pColorConst)
- | ("bgcolor" ~ "=" ~ pColorConst)
- | ("font" ~ "=" ~ "(" ~ pStringExpr ~ "," ~ pNumericExpr ~ "," ~ pTextStyleExpr ~ ")")
- | ("halign" ~ "=" ~ pHAlignExpr)
- | ("valign" ~ "=" ~ pVAlignExpr)
- | ("minval" ~ "=" ~ pNumericExpr)
- | ("maxval" ~ "=" ~ pNumericExpr))
Advertisement
Add Comment
Please, Sign In to add comment