我目前在Go-c6中實現了一個SASS編譯器,並且在編寫表達式解析器和評估器時發現了Ruby SASS編譯器的一些奇怪行爲。SASS:表達式還是純CSS斜線?
的SASS參考提到的普通CSS '/' 和SASS除法表達這裏: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#division-and-slash
設計是使SASS與天然CSS語法這樣兼容:
font: 10px/8px; // Plain CSS, no division. looks fine.
font: 10px/8px + 3px; // Expression
font: (10px/8px); // Expression
上面看起來不錯,但如果你寫:
.foo {
$a: 10px/8px;
font: $a;
}
而且上面會被編譯爲:
.foo {
font: 1.25; }
在以下SASS正常表達將總是表達而不括號:
.foo {
padding: 2px+2px;
padding: 2px*3;
}
輸出:
.foo {
padding: 4px;
padding: 6px; }
然而以下SASS產生不同的結果:
.foo {
padding: 2px-1px;
padding: 2px - 1px;
}
而上述將會被編譯爲:
.foo {
padding: 2px-1px; // treated as ident instead of expression
padding: 1px; }
似乎除法運算符是屬性值的唯一例外,這使得語法不一致和不明確。 (實際上有那麼多曖昧文法在SASS規範...)
因此,這裏的問題:
我怎樣才能讓表達式語法一致,避免純CSS'之間的隱式行爲/'和除法運算符? (如果我們不考慮SASS的兼容性)
你會怎麼做?
謝謝
堆棧溢出是爲了解決技術問題。 「我不知道我應該用什麼語法來表達我的想象語言」並不算是一個技術問題,這是一個純粹的臆測問題。 – cimmanon
可能對程序員更好.se – Eric
@cimmanon:這裏沒有虛構的語言。 OP正在實施一個Sass編譯器,並詢問如何處理特定的邊界情況。看起來,答案是沒有一致的方式來這樣做。 – BoltClock