構文と記号
仕組み
NoShift.js は ^(キャレット)をプレフィックスとして Shift 記号を表現します。マッピングは日本語 JIS キーボード配列に基づいています。
記号マップ
この変換表は NoShift.js 開発者のキーボード(JIS 配列)が基準です。
| Shift 記号 | NoShift.js |
|---|---|
! | ^1 |
" | ^2 |
| Capitalize | ^3 |
$ | ^4 |
% | ^5 |
& | ^6 |
' | ^7 |
( | ^8 |
) | ^9 |
| ^ (Caret/XOR) | ^0 |
= | ^- |
| Shift 記号 | NoShift.js |
|---|---|
~ | ^^ |
| | ^\ |
` | ^@ |
{ | ^[ |
} | ^] |
+ | ^; |
* | ^: |
< | ^, |
> | ^. |
? | ^/ |
テンプレート式: ^4^[ → ${
大文字化修飾子
^3 は次の文字を大文字にします。クラス名や定数に便利です:
class ^3animal ^[
constructor^8name^9 ^[
this.name ^- name;
^]
^] コンパイル後:
class Animal {
constructor(name) {
this.name = name;
}
} コメント
行コメントは通常通り // を使います。ブロックコメントは /^: で開始、^:/ で終了します:
// line comment
/^: block comment ^:/
/^:
multi-line
block comment
^:/ コンパイル後:
// line comment
/* block comment */
/*
multi-line
block comment
*/ 文字列内のエスケープ
文字列リテラル(^2...^2、^7...^7、^@...^@)内では、^ シーケンスは Shift 記号に変換されません。これにより、リテラルの ^ 文字を含めることができます:
^2^5^2
^7^5^7
^@^5^@ コンパイル後:
"^5"
'^5'
`^5` テンプレートリテラル
テンプレートリテラルは ^@(バッククォート)を使い、テンプレート式は ^4^[(${)で開始し、^](})で終了します:
^@^5^4^[^2Hello World!^2^]^@ コンパイル後:
`^5${"Hello World!"}` ビット演算・シフト演算
JavaScript のビット演算子は NoShift.js の既存の ^ シーケンスで記述できます。XOR 演算子(^)は ^0 を使います(キャレットは NoShift.js のプレフィックスであるため):
// XOR: ^0 --> ^
const a ^- 5 ^0 3;
// XOR assignment: ^0^- --> ^=
let b ^- 7;
b ^0^- 3;
// AND: ^6, OR: ^\, NOT: ^^
const c ^- 5 ^6 3;
const d ^- 5 ^\ 3;
const e ^- ^^5;
// Left shift: ^,^, Right shift: ^.^.
const f ^- 1 ^,^, 3;
const g ^- 8 ^.^. 1;
const h ^- -1 ^.^.^. 0; コンパイル後:
// XOR: ^0 --> ^
const a = 5 ^ 3;
// XOR assignment: ^0^- --> ^=
let b = 7;
b ^= 3;
// AND: ^6, OR: ^\, NOT: ^^
const c = 5 & 3;
const d = 5 | 3;
const e = ~5;
// Left shift: ^,^, Right shift: ^.^.
const f = 1 << 3;
const g = 8 >> 1;
const h = -1 >>> 0; Hello World
入力:
console.log^8^2^3hello ^3world!^2^9; 出力:
console.log("Hello World!");