Dari MSDN MS-VBAL Aturan Leksikal
Juga ingat nama variabel dan konstan tidak ada dalam program yang dikompilasi.
3.2.1 Tata Bahasa Garis Fisik
module-body-physical-structure = *source-line [non-terminated-line]
source-line = *non-line-termination-character line-terminator
non-terminated-line = *non-line-termination-character
line-terminator = (%x000D %x000A) / %x000D / %x000A / %x2028 / %x2029
non-line-termination-character = <any character other than %x000D / %x000A / %x2028 / %x2029>
Implementasi DAPAT membatasi jumlah karakter yang diizinkan dalam garis fisik. Arti dari modul yang berisi garis fisik apa pun yang melebihi batas implementasi tidak ditentukan oleh spesifikasi ini. Jika <module-body-phisical-structure> diakhiri dengan <non-terminated-line> maka implementasi MUNGKIN memperlakukan modul seolah-olah <non-terminated-line> segera diikuti oleh <line-terminator>.
Untuk keperluan interpretasi sebagai teks program VBA, badan modul (bagian 4.2) dipandang sebagai satu set garis logis yang masing-masingnya mungkin berhubungan dengan beberapa garis fisik. Struktur ini dijelaskan oleh Tata Bahasa Jalur Logika. Simbol terminal tata bahasa ini adalah codepoint karakter Unicode.
3.2.2 Tata Bahasa Baris Logis
module-body-logical-structure = *extended-line
extended-line = *(line-continuation / non-line-termination-character) line-terminator
line-continuation = *WSC underscore *WSC line-terminator
WSC = (tab-character / eom-character /space-character / DBCS-whitespace / most-Unicode-class-Zs)
tab-character = %x0009
eom-character = %x0019
space-character = %x0020
underscore = %x005F
DBCS-whitespace = %x3000
most-Unicode-class-Zs = <all members of Unicode class Zs which are not CP2-characters>
Implementasi DAPAT membatasi jumlah karakter dalam <extended-line>. Untuk kemudahan spesifikasi, lebih mudah untuk dapat secara eksplisit merujuk ke titik yang segera mendahului awal garis logis dan titik segera sebelum terminator-akhir garis garis logis. Ini dicapai dengan menggunakan <LINE-START> dan <LINE-END> sebagai simbol terminal dari tata bahasa VBA. <LINE-START> didefinisikan untuk segera mendahului setiap baris logis dan <LINE-END> didefinisikan sebagai mengganti <line-terminator> di akhir setiap baris logis:
module-body-lines = *logical-line
logical-line = LINE-START *extended-line LINE-END
Ketika digunakan dalam definisi aturan ABNF, <LINE-START> dan <LINE-END> digunakan untuk mengindikasikan awal atau akhir yang diperlukan dari sebuah <logical-line>.
3.3 Token Leksikal
Sintaksis program-program VBA paling mudah dijelaskan dalam hal token leksikal daripada karakter Unicode individual. Secara khusus, terjadinya spasi putih atau garis-kelanjutan antara sebagian besar elemen sintaksis biasanya tidak relevan dengan tata bahasa sintaksis. Tata bahasa sintaksis secara signifikan disederhanakan jika tidak harus menggambarkan kemungkinan kejadian spasi putih. Ini dicapai dengan menggunakan token leksikal (juga disebut hanya sebagai token) yang mengaburkan spasi putih sebagai simbol terminal tata bahasa sintaksis. Tata bahasa leksikal mendefinisikan interpretasi dari <module-body-lines> sebagai satu set token leksikal tersebut.
Elemen terminal tata bahasa leksikal adalah karakter Unicode dan elemen <LINE-START> dan <LINE-END>. Umumnya setiap nama aturan tata bahasa leksikal yang ditulis dalam semua karakter huruf besar juga merupakan token leksikal dan elemen terminal dari tata bahasa sintaksis VBA. ABNF mengutip aturan teks literal juga dianggap sebagai token leksikal dari tata bahasa sintaksis. Token leksikal mencakup karakter spasi putih apa pun yang langsung mendahuluinya. Perhatikan bahwa ketika digunakan dalam tata bahasa leksikal, aturan teks literal yang dikutip tidak diperlakukan sebagai token dan karenanya karakter spasi putih sebelumnya adalah signifikan.
3.3.1 Pemisah dan Token Khusus
WS = 1*(WSC / line-continuation)
special-token = "," / "." / "!" / "#" / "&" / "(" / ")" / "*" / "+" / "-" / "/" / ":" / ";" / "<" / "=" / ">" / "?" / "\" / "^"
NO-WS = <no whitespace characters allowed here>
NO-LINE-CONTINUATION = <a line-continuation is not allowed here>
EOL = [WS] LINE-END / single-quote comment-body
EOS = *(EOL / ":") ;End Of Statement
single-quote = %x0027 ; '
comment-body = *(line-continuation / non-line-termination-character) LINE-END
<special-token> digunakan untuk mengidentifikasi karakter tunggal yang memiliki arti khusus dalam sintaksis program VBA. Karena mereka adalah leksikal token (bagian 3.3), karakter ini dapat didahului oleh karakter spasi putih yang diabaikan. Setiap kejadian salah satu elemen <special-token> yang dikutip sebagai elemen tata bahasa dalam tata bahasa sintaksis adalah referensi ke token yang sesuai (bagian 3.3).
<NO-WS> digunakan sebagai elemen terminal dari tata bahasa sintaksis untuk menunjukkan bahwa token yang segera mengikutinya tidak boleh didahului oleh karakter spasi putih apa pun. <NO-LINE-CONTINUATION> digunakan sebagai elemen terminal dari tata bahasa sintaksis untuk menunjukkan bahwa token yang segera mengikutinya tidak boleh didahului dengan spasi putih yang mencakup urutan <linecontinuation> apa pun.
<WS> digunakan sebagai elemen terminal dari tata bahasa sintaksis untuk menunjukkan bahwa token yang segera mengikutinya harus didahului oleh satu atau lebih karakter spasi putih.
<EOL> digunakan sebagai elemen tata bahasa sintaksis untuk memberi nama token yang bertindak sebagai penanda "akhir pernyataan" untuk pernyataan yang harus merupakan satu-satunya atau pernyataan terakhir pada baris logis.
<EOS> digunakan sebagai elemen terminal dari tata bahasa sintaksis untuk memberi nama token yang bertindak sebagai penanda "akhir pernyataan". Secara umum, akhir pernyataan ditandai oleh <LINE-END> atau karakter titik dua. Setiap karakter antara <single-quote> dan <LINE-END> adalah teks komentar yang diabaikan.