Re: [問題] 哪些字可以用作 symbol 名稱?
※ 引述《bootleq (打架金剛)》之銘言:
: 目前自己觀察,分成三類:
: - :foo_bar
: 單純的 colon 加上一般變數名
: 僅有個疑問是多位元組的字(例如 :foo字bar)是否合法
: - :"string"
: 加了 qoute 裡面隨便什麼都可以。
: - :operator
: 比較有疑問的是這個,參考 Operator Expressions
: http://phrogz.net/ProgrammingRuby/language.html#operatorexpressions
: 裡面最左欄有 Y 的是可以定義成 method,代表是合法的 symbol 嗎?
: 有些我直接在 console 下
: s = :<<
: 可以建一個 symbol
: 但有些如 :% 或 :| 又不行
: 應該有標準可循,可是它在哪裡啊?
我用 ruby_parser parse 了 :x, :+ 之類的ruby 語句
發現Ruby 把symbol 直接視為一種literal, 而沒有function call
所以 :後面可以加什麼是被Ruby文法規範,而不是使用方法。
接著,我去查Ruby 的 BNF grammar
http://www.cse.buffalo.edu/~regan/cse305/RubyBNF.pdf
SYMBOL : :FNAME | :VARNAME
FNAME : IDENTIFIER | .. | "|" | ˆ | & | <=> | == | === | =
| > | >= | < | <= | + | - | * | / | % | **
| << | >> | | +@ | -@ | [] | []=
VARNAME : GLOBAL | @IDENTIFIER | IDENTIFIER
IDENTIFIER : sequence in /[a-zA-Z_]{a-zA-Z0-9_}/.
GLOBAL : $IDENTIFIER | $any_char | $-any_char
大致上是這樣。應該可以回答你的問題。
不過有趣的是,依照這個文法, :"abc" 是不合文法的。
我不知道為什麼irb還是可以過。
http://web.njit.edu/all_topics/Prog_Lang_Docs/html/ruby/yacc.html
這篇文法比較好閱讀
--
回憶不會消失...只會被蓋在灰塵下...
只要沒有風去吹動~~一切....就可以默默淡忘...
所以....不要成為那傷人的風吧.... ^.^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.229.151
※ 編輯: SansWord 來自: 114.45.229.151 (07/30 14:57)
推
07/30 16:19, , 1F
07/30 16:19, 1F
推
07/30 17:31, , 2F
07/30 17:31, 2F
推
07/30 19:11, , 3F
07/30 19:11, 3F
→
07/30 19:12, , 4F
07/30 19:12, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章