- From: Kang-Hao (Kenny) Lu <kanghaol@oupeng.com>
- Date: Fri, 18 Jan 2013 10:27:52 +0800
- To: W3C HTML5 中文興趣小組 <public-html-ig-zh@w3.org>
我最近做了一個 ECMAScript 6 的 HTML 版語法:
http://dev.oupeng.com/wp-content/uploads/es6-grammar.html
包含以下功能:
1. 可以從產生式的定義找到使用該產生式的產生式(反方向連結),這特別是
對於理解有小差異的產生式的(例:BindingElement vs.
AssignmentElement)所使用的地方有幫助。
2. 有跟 ES5 差異的註解。
紫雲飛[1]有提到一個日本人也做了類似的 HTML 版的 ES6 文法[2],不過那個在
我的 IE10 動不了(之後有機會送個補丁),另外就是我這份是從 wiki 裡的
MediaWiki 源碼生成的,這裡還希望大家可以幫忙更新。
我希望把這份放到 W3C 的空間,之後開一串新的討論這個。
節錄一些 ES6 跟 ES5 的差異,去除掉完全新功能的部份:
UnicodeIDStart ::
- 在以下 Unicode 分类中的字符:Lu, Ll, Lt, Lm, Lo, Nl。
+ 任何具有 Unicode 属性 “ID_Start” 的 Unicode 字符。
有人有什麼好例子嗎?
UnicodeIDContinue ::
- 在以下 Unicode 分类中的字符:Lu, Ll, Lt, Lm, Lo, Nl, Mn, Mc, Nd,
Pc。
+ 任何具有 Unicode 属性 “ID_Continue” 的 Unicode 字符。
同上。
Keyword :: 以下之一
- class export typeof
+ class export let typeof
FutureReservedWord :: 以下之一
或在严格模式下以下之一
- implements let private public yield
+ implements private public yield
這個還真是有點前途堪憂啊,IE 10 和 V8 都還可以把 "let" 當變數。話說,是
不是其實 "let" 不是關鍵字也不會有語法曖昧的問題?這個版本的 "of", "is",
"isnt" 還有非嚴格模式的 "yield" 都不是關鍵字。
IterationStatement :
- do Statement while ( Expression ) ;
+ do Statement while ( Expression )
測試案例:
do ; while (false) 1;
感覺這是一個有點久的規範 bug,有人知道有哪些瀏覽器上面是語法錯誤的嗎?
IterationStatement :
- for ( var VariableDeclarationNoIn in Expression ) Statement
+ for ( var ForBinding in Expression ) Statement
測試案例:
for (var x = 0 in [1]) ;
在新版應該拋錯,我猜這個大概不會有兼容問題吧(知道這個問題存在的人記得不
要這樣搞 :p)。然後我不知道這個和
EqualityExpressionNoIn :
+ EqualityExpression [no LineTerminator here] is
RelationalExpression
+ EqualityExpression [no LineTerminator here] isnt
RelationalExpression
右邊不是 NoIn 有沒有關係,好像把 NoIn 產生式的算子右邊都容許有 in 的話,
這些都可以歸成
for ( ExpressionNoInopt ; Expressionopt ; Expressionopt ) Statement
的樣子?還沒認真研究。小金有找到相關的討論串[3]。
[1] http://www.cnblogs.com/ziyunfei/
[2] http://teramako.github.com/ECMAScript/ecma6th_syntax.html
[3]
https://mail.mozilla.org/pipermail/es-discuss/2012-January/thread.html#20203
以上
Kenny
--
Web Specialist, Oupeng Browser, Beijing
Try Oupeng: http://www.oupeng.com/
Received on Friday, 18 January 2013 02:28:26 UTC