Грамматика выражения директивы AngularDart для усов и других директив

Какова грамматика выражений, разрешенных в усах AngularDart {{...}} и других директивах?


person Patrice Chalin    schedule 01.02.2014    source источник
comment
Это ограниченное подмножество выражений Dart. У него также есть некоторые отклонения, такие как обработка нулей. Я понятия не имею, есть ли документация.   -  person Günter Zöchbauer    schedule 01.02.2014


Ответы (1)


Вот грамматика EBNF для выражений AngularDart в том же обозначение, используемое в Спецификации языка программирования Dart. Эти выражения могут выступать в качестве аргументов директив Angular. Хотя грамматика допускает, например, список разделенных точкой с запятой выражений, присваиваний и условных выражений, они не будут приняты всеми директивами — например, ng-click поддерживает несколько выражений, возможно, с присваиваниями, тогда как директива усов {{...}} ожидает одно выражение.

expressions: expression (';' expressions)?
expression:
    literal
  | id args?                        # variable or function
  | expression '.' id args?         # member
  | expression '|' id filterArg*    # filter
  | expression '[' expression ']'
  | preOp expression
  | expression binOp expression
  | expression '?' expression ':' expression
  | expression '=' expression           # assignment
args: '(' expressionList? ')'
filterArg: ':' expression
expressionList: expression (',' expression)?
literal:
    'null'
  | stringLiteral
  | numberLiteral
  | boolLiteral
  | '[' expressionList? ']'
  | '{' (keyValuePair (',' keyValuePair)? )? '}'
keyValuePair:
  expression ':' expression

PreOp и binOp в основном поддерживаются Dart (хотя мне придется это перепроверить). здесь находится более красиво оформленная версия приведенного выше не удалось заставить доктора медицины сотрудничать).

person Patrice Chalin    schedule 13.03.2014