【发布时间】:2014-02-01 19:45:12
【问题描述】:
AngularDart mustaches {{...}} 和其他指令中允许的表达式语法是什么?
【问题讨论】:
-
这是 Dart 表达式的有限子集。它也有一些偏差,比如空值处理。我不知道是否有文档。
标签: angularjs parsing dart grammar angular-dart
AngularDart mustaches {{...}} 和其他指令中允许的表达式语法是什么?
【问题讨论】:
标签: angularjs parsing dart grammar angular-dart
这是 AngularDart 表达式的 EBNF 语法,与 Dart Programming Language Specification 中使用的 notation 相同。这些表达式可以作为 Angular 指令的参数出现。虽然语法允许,例如,用分号分隔的表达式、赋值和条件列表,但并非所有指令都接受这些——例如,ng-click 支持可能带有赋值的多个表达式,而 mustache 指令 {{...}} 期望一个表达式。
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 支持的(尽管我必须交叉检查)。上面的here 有一个格式更好的版本(我无法让 MD 合作)。
【讨论】: