From 26ec797e4ec79410d72a0694aaca2807bd781f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sta=C5=9B=20Ma=C5=82olepszy?= Date: Thu, 26 Jan 2017 18:47:34 +0100 Subject: [PATCH] Fix #3. Use { and } for explicit grouping --- fluent.asdl | 18 ++++++++++-------- fluent.ebnf | 8 +++++--- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/fluent.asdl b/fluent.asdl index 092df82..0a07918 100644 --- a/fluent.asdl +++ b/fluent.asdl @@ -9,14 +9,16 @@ module Fluent pat = Pattern(expr* elements, bool quoted) - expr = MessageReference(iden id) - | ExternalArgument(iden id) - | CallExpression(iden callee, expr* args) - | SelectExpression(expr exp, mem* vars) - | MemberExpression(expr obj, memkey key) - | KeyValueArgument(iden name, argval val) - | Number(string value) - | String(string value) + expr = Selector(sel) + | SelectExpression(sel sel, mem* vars) + + sel = MessageReference(iden id) + | ExternalArgument(iden id) + | CallExpression(iden callee, expr* args) + | MemberExpression(expr obj, memkey key) + | KeyValueArgument(iden name, argval val) + | Number(string value) + | String(string value) mem = Member(memkey key, pat value, bool default) memkey = Number(string value) diff --git a/fluent.ebnf b/fluent.ebnf index f9073c2..77ab844 100644 --- a/fluent.ebnf +++ b/fluent.ebnf @@ -32,15 +32,17 @@ quoted-text ::= ([^{"] | '\{' | '\"')+ block-text ::= NL __ '|' unquoted-pattern placeable ::= '{' __ expression __ '}' -expression ::= quoted-pattern +expression ::= selector-expression | select-expression + +selector-expression ::= quoted-pattern | number | identifier | variable - | select-expression | member-expression | call-expression + | placeable -select-expression ::= expression __ ' ->' __ variants-list +select-expression ::= selector-expression __ ' ->' __ variants-list member-expression ::= identifier '[' keyword ']' call-expression ::= builtin '(' __ arglist? __ ')' arglist ::= argument (__ ',' __ arglist)?