關於JavaScript詞法

來源:互聯網
上載者:User

上篇博文發出來後感覺效果不是很好,遂寫篇文章來解釋解釋。本文可以認為是上篇文章 JavaScript詞法(http://www.cnblogs.com/winter-cn/archive/2012/04/17/2454229.html)的掃盲說明:)

但凡語言,不論是自然語言還是程式語言,都大致可以區分詞法和文法。所謂詞,就是語言中有意義的最小單元。

常常聽到一個笑話,說“我英語學的可好啦,26個字母全認識!”。大家都知道,一切英文都是由26個字母組成的,為啥26個字母全認識,還不能說會英文呢?

答案就是字母不是詞,單獨的字母是沒有意義的,只有字母組成了詞,才會有表達意義的能力。所以學英語的時候,最重要的是"背單詞"。

別人問你,h是什麼意思啊?——h沒有任何意思,只有它出現在help,hello這樣的詞裡面,h才有意義。

對電腦語言來說,同樣的道理,每個Unicode或者ASCII字元都是沒有意義的,只有它們形成了"詞",才有意義。

所以對任何一門電腦語言來說,最基本的規則就是詞法,JavaScript裡面,所謂的"詞",實際上大家早已非常熟悉了,比如:

if while else for function之類的關鍵字

Cat Dog play等使用者定義的變數名,正式的叫法是標識符 

"abc" 13.5 /abc/g true false等表示變數值的直接量

圓括弧 方括弧 花括弧 加號 等符號

斷行符號等分行符號

空格、Tab等空白符

注釋

經過很多年的發展,電腦語言的詞法定義基本形成了一個通用的套路。一般來講,一切合法的“詞”,被統稱作“輸入元素(InputElement)”。

 

輸入元素中,一切有意義的詞被稱作"token"(這個詞到目前為止沒有被廣泛接受的翻譯方法,所以保留),在一般的認識中,token以外的InputElement被掃描出來之後就可以直接丟棄了(當然實際情況是對大部分語言來說都是不行的,JavaScript也不行。)所以詞法剖析器,大部分叫做lexer,也有人喜歡叫做tokenizer。

 

除了真正有意義的token之外,其它InputElement都是起到修飾或者增加原始碼可讀性的作用。在JS中,就只有以下三種:

WhiteSpace:空白符

LineTerminator:行終結符

Comments:注釋

 

這三種都很好理解,是大家平時非常常用的東西。 

 

大部分程式設計語言的詞法區別都體現在token上,JS的token其實也只有八種:

英文名 名稱 簡述 樣本
Token 詞法標記 一切JS中有實際意義的詞法標記  
┣IdentifierName 標識名稱 以字母或_或$開始的一個單詞,可以用於屬性名稱 abc
┃┣Identifier 標識符 非保留字的IdentifierName,可以用於變數名或者屬性名稱
abc
┃┣Keyword 關鍵字 有特殊文法意義的IdentifierName
while
┃┣NullLiteral Null直接量 表示一個Null類型的值
null
┃┗BooleanLiteral 布爾直接量 表示一個Boolean類型的值
true
┣Punctuator 標點符號 表示特殊意義的標點符號
*
┣NumericLiteral 數字直接量 表示一個Number類型的值
.12e-10
┣StringLiteral 字串直接量 表示一個String類型的值
"Hello world!"
┗RegularExpressionLiteral Regex直接量 表示一個RegularExpression類的對象
/[a-z]+$$/g

 

這些token基本就是全部詞法了,由它們之間的組合,可以組成運算式、語句、函數定義等文法結構,最終形成有強大表達能力的程式。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.