codecamp

语法文法

第 11,12,13,14 章给出了 ECMAScript 的 语法文法 。词法文法定义的 ECMAScript tokens 是此文法的终结符( 5.1.2 )。它定义了一组起始于 Program 目标符的产生式,描述了语法正确的 ECMAScript 程序应该怎样排列 tokens。


当一个字符流被解析为 ECMAScript 程序,它首先通过词法文法应用程序反复转换为一个输入元素流;然后再用一个语法文法应用程序解析这个输入元素流。当输入元素流没有更多 tokens 时,如果 tokens 不能解析为 Program 目标非终结符的单一实例,那么程序在语法上存在错误。


只用一个冒号“:”作为分隔符分割语法词法的产生式。


事实上第 11,12,13 和 14 章给出的语法语法,并不能完全说明一个正确的 ECMAScript 程序能接受的 token 序列。一些额外的 token 序列也被接受,即某些特殊位置(如行结束符前)加入分号可以被文法接受。此外,文法描述的某些 token 序列不被文法接受,如一个行结束符出现在“尴尬”的位置。


词法和正则的文法
JSON 文法
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }