solidity.js 31 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367
  1. /*---------------------------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Licensed under the MIT License. See License.txt in the project root for license information.
  4. *--------------------------------------------------------------------------------------------*/
  5. export var conf = {
  6. comments: {
  7. lineComment: '//',
  8. blockComment: ['/*', '*/']
  9. },
  10. brackets: [
  11. ['{', '}'],
  12. ['[', ']'],
  13. ['(', ')'],
  14. ['<', '>']
  15. ],
  16. autoClosingPairs: [
  17. { open: '"', close: '"', notIn: ['string', 'comment'] },
  18. { open: '{', close: '}', notIn: ['string', 'comment'] },
  19. { open: '[', close: ']', notIn: ['string', 'comment'] },
  20. { open: '(', close: ')', notIn: ['string', 'comment'] }
  21. ]
  22. };
  23. export var language = {
  24. defaultToken: '',
  25. tokenPostfix: '.sol',
  26. brackets: [
  27. { token: 'delimiter.curly', open: '{', close: '}' },
  28. { token: 'delimiter.parenthesis', open: '(', close: ')' },
  29. { token: 'delimiter.square', open: '[', close: ']' },
  30. { token: 'delimiter.angle', open: '<', close: '>' }
  31. ],
  32. keywords: [
  33. // Main keywords
  34. 'pragma',
  35. 'solidity',
  36. 'contract',
  37. 'library',
  38. 'using',
  39. 'struct',
  40. 'function',
  41. 'modifier',
  42. 'constructor',
  43. //Built-in types
  44. 'address',
  45. 'string',
  46. 'bool',
  47. //Other types
  48. 'Int',
  49. 'Uint',
  50. 'Byte',
  51. 'Fixed',
  52. 'Ufixed',
  53. //All int
  54. 'int',
  55. 'int8',
  56. 'int16',
  57. 'int24',
  58. 'int32',
  59. 'int40',
  60. 'int48',
  61. 'int56',
  62. 'int64',
  63. 'int72',
  64. 'int80',
  65. 'int88',
  66. 'int96',
  67. 'int104',
  68. 'int112',
  69. 'int120',
  70. 'int128',
  71. 'int136',
  72. 'int144',
  73. 'int152',
  74. 'int160',
  75. 'int168',
  76. 'int176',
  77. 'int184',
  78. 'int192',
  79. 'int200',
  80. 'int208',
  81. 'int216',
  82. 'int224',
  83. 'int232',
  84. 'int240',
  85. 'int248',
  86. 'int256',
  87. //All uint
  88. 'uint',
  89. 'uint8',
  90. 'uint16',
  91. 'uint24',
  92. 'uint32',
  93. 'uint40',
  94. 'uint48',
  95. 'uint56',
  96. 'uint64',
  97. 'uint72',
  98. 'uint80',
  99. 'uint88',
  100. 'uint96',
  101. 'uint104',
  102. 'uint112',
  103. 'uint120',
  104. 'uint128',
  105. 'uint136',
  106. 'uint144',
  107. 'uint152',
  108. 'uint160',
  109. 'uint168',
  110. 'uint176',
  111. 'uint184',
  112. 'uint192',
  113. 'uint200',
  114. 'uint208',
  115. 'uint216',
  116. 'uint224',
  117. 'uint232',
  118. 'uint240',
  119. 'uint248',
  120. 'uint256',
  121. //All Byte
  122. 'byte',
  123. 'bytes',
  124. 'bytes1',
  125. 'bytes2',
  126. 'bytes3',
  127. 'bytes4',
  128. 'bytes5',
  129. 'bytes6',
  130. 'bytes7',
  131. 'bytes8',
  132. 'bytes9',
  133. 'bytes10',
  134. 'bytes11',
  135. 'bytes12',
  136. 'bytes13',
  137. 'bytes14',
  138. 'bytes15',
  139. 'bytes16',
  140. 'bytes17',
  141. 'bytes18',
  142. 'bytes19',
  143. 'bytes20',
  144. 'bytes21',
  145. 'bytes22',
  146. 'bytes23',
  147. 'bytes24',
  148. 'bytes25',
  149. 'bytes26',
  150. 'bytes27',
  151. 'bytes28',
  152. 'bytes29',
  153. 'bytes30',
  154. 'bytes31',
  155. 'bytes32',
  156. //All fixed
  157. 'fixed',
  158. 'fixed0x8',
  159. 'fixed0x16',
  160. 'fixed0x24',
  161. 'fixed0x32',
  162. 'fixed0x40',
  163. 'fixed0x48',
  164. 'fixed0x56',
  165. 'fixed0x64',
  166. 'fixed0x72',
  167. 'fixed0x80',
  168. 'fixed0x88',
  169. 'fixed0x96',
  170. 'fixed0x104',
  171. 'fixed0x112',
  172. 'fixed0x120',
  173. 'fixed0x128',
  174. 'fixed0x136',
  175. 'fixed0x144',
  176. 'fixed0x152',
  177. 'fixed0x160',
  178. 'fixed0x168',
  179. 'fixed0x176',
  180. 'fixed0x184',
  181. 'fixed0x192',
  182. 'fixed0x200',
  183. 'fixed0x208',
  184. 'fixed0x216',
  185. 'fixed0x224',
  186. 'fixed0x232',
  187. 'fixed0x240',
  188. 'fixed0x248',
  189. 'fixed0x256',
  190. 'fixed8x8',
  191. 'fixed8x16',
  192. 'fixed8x24',
  193. 'fixed8x32',
  194. 'fixed8x40',
  195. 'fixed8x48',
  196. 'fixed8x56',
  197. 'fixed8x64',
  198. 'fixed8x72',
  199. 'fixed8x80',
  200. 'fixed8x88',
  201. 'fixed8x96',
  202. 'fixed8x104',
  203. 'fixed8x112',
  204. 'fixed8x120',
  205. 'fixed8x128',
  206. 'fixed8x136',
  207. 'fixed8x144',
  208. 'fixed8x152',
  209. 'fixed8x160',
  210. 'fixed8x168',
  211. 'fixed8x176',
  212. 'fixed8x184',
  213. 'fixed8x192',
  214. 'fixed8x200',
  215. 'fixed8x208',
  216. 'fixed8x216',
  217. 'fixed8x224',
  218. 'fixed8x232',
  219. 'fixed8x240',
  220. 'fixed8x248',
  221. 'fixed16x8',
  222. 'fixed16x16',
  223. 'fixed16x24',
  224. 'fixed16x32',
  225. 'fixed16x40',
  226. 'fixed16x48',
  227. 'fixed16x56',
  228. 'fixed16x64',
  229. 'fixed16x72',
  230. 'fixed16x80',
  231. 'fixed16x88',
  232. 'fixed16x96',
  233. 'fixed16x104',
  234. 'fixed16x112',
  235. 'fixed16x120',
  236. 'fixed16x128',
  237. 'fixed16x136',
  238. 'fixed16x144',
  239. 'fixed16x152',
  240. 'fixed16x160',
  241. 'fixed16x168',
  242. 'fixed16x176',
  243. 'fixed16x184',
  244. 'fixed16x192',
  245. 'fixed16x200',
  246. 'fixed16x208',
  247. 'fixed16x216',
  248. 'fixed16x224',
  249. 'fixed16x232',
  250. 'fixed16x240',
  251. 'fixed24x8',
  252. 'fixed24x16',
  253. 'fixed24x24',
  254. 'fixed24x32',
  255. 'fixed24x40',
  256. 'fixed24x48',
  257. 'fixed24x56',
  258. 'fixed24x64',
  259. 'fixed24x72',
  260. 'fixed24x80',
  261. 'fixed24x88',
  262. 'fixed24x96',
  263. 'fixed24x104',
  264. 'fixed24x112',
  265. 'fixed24x120',
  266. 'fixed24x128',
  267. 'fixed24x136',
  268. 'fixed24x144',
  269. 'fixed24x152',
  270. 'fixed24x160',
  271. 'fixed24x168',
  272. 'fixed24x176',
  273. 'fixed24x184',
  274. 'fixed24x192',
  275. 'fixed24x200',
  276. 'fixed24x208',
  277. 'fixed24x216',
  278. 'fixed24x224',
  279. 'fixed24x232',
  280. 'fixed32x8',
  281. 'fixed32x16',
  282. 'fixed32x24',
  283. 'fixed32x32',
  284. 'fixed32x40',
  285. 'fixed32x48',
  286. 'fixed32x56',
  287. 'fixed32x64',
  288. 'fixed32x72',
  289. 'fixed32x80',
  290. 'fixed32x88',
  291. 'fixed32x96',
  292. 'fixed32x104',
  293. 'fixed32x112',
  294. 'fixed32x120',
  295. 'fixed32x128',
  296. 'fixed32x136',
  297. 'fixed32x144',
  298. 'fixed32x152',
  299. 'fixed32x160',
  300. 'fixed32x168',
  301. 'fixed32x176',
  302. 'fixed32x184',
  303. 'fixed32x192',
  304. 'fixed32x200',
  305. 'fixed32x208',
  306. 'fixed32x216',
  307. 'fixed32x224',
  308. 'fixed40x8',
  309. 'fixed40x16',
  310. 'fixed40x24',
  311. 'fixed40x32',
  312. 'fixed40x40',
  313. 'fixed40x48',
  314. 'fixed40x56',
  315. 'fixed40x64',
  316. 'fixed40x72',
  317. 'fixed40x80',
  318. 'fixed40x88',
  319. 'fixed40x96',
  320. 'fixed40x104',
  321. 'fixed40x112',
  322. 'fixed40x120',
  323. 'fixed40x128',
  324. 'fixed40x136',
  325. 'fixed40x144',
  326. 'fixed40x152',
  327. 'fixed40x160',
  328. 'fixed40x168',
  329. 'fixed40x176',
  330. 'fixed40x184',
  331. 'fixed40x192',
  332. 'fixed40x200',
  333. 'fixed40x208',
  334. 'fixed40x216',
  335. 'fixed48x8',
  336. 'fixed48x16',
  337. 'fixed48x24',
  338. 'fixed48x32',
  339. 'fixed48x40',
  340. 'fixed48x48',
  341. 'fixed48x56',
  342. 'fixed48x64',
  343. 'fixed48x72',
  344. 'fixed48x80',
  345. 'fixed48x88',
  346. 'fixed48x96',
  347. 'fixed48x104',
  348. 'fixed48x112',
  349. 'fixed48x120',
  350. 'fixed48x128',
  351. 'fixed48x136',
  352. 'fixed48x144',
  353. 'fixed48x152',
  354. 'fixed48x160',
  355. 'fixed48x168',
  356. 'fixed48x176',
  357. 'fixed48x184',
  358. 'fixed48x192',
  359. 'fixed48x200',
  360. 'fixed48x208',
  361. 'fixed56x8',
  362. 'fixed56x16',
  363. 'fixed56x24',
  364. 'fixed56x32',
  365. 'fixed56x40',
  366. 'fixed56x48',
  367. 'fixed56x56',
  368. 'fixed56x64',
  369. 'fixed56x72',
  370. 'fixed56x80',
  371. 'fixed56x88',
  372. 'fixed56x96',
  373. 'fixed56x104',
  374. 'fixed56x112',
  375. 'fixed56x120',
  376. 'fixed56x128',
  377. 'fixed56x136',
  378. 'fixed56x144',
  379. 'fixed56x152',
  380. 'fixed56x160',
  381. 'fixed56x168',
  382. 'fixed56x176',
  383. 'fixed56x184',
  384. 'fixed56x192',
  385. 'fixed56x200',
  386. 'fixed64x8',
  387. 'fixed64x16',
  388. 'fixed64x24',
  389. 'fixed64x32',
  390. 'fixed64x40',
  391. 'fixed64x48',
  392. 'fixed64x56',
  393. 'fixed64x64',
  394. 'fixed64x72',
  395. 'fixed64x80',
  396. 'fixed64x88',
  397. 'fixed64x96',
  398. 'fixed64x104',
  399. 'fixed64x112',
  400. 'fixed64x120',
  401. 'fixed64x128',
  402. 'fixed64x136',
  403. 'fixed64x144',
  404. 'fixed64x152',
  405. 'fixed64x160',
  406. 'fixed64x168',
  407. 'fixed64x176',
  408. 'fixed64x184',
  409. 'fixed64x192',
  410. 'fixed72x8',
  411. 'fixed72x16',
  412. 'fixed72x24',
  413. 'fixed72x32',
  414. 'fixed72x40',
  415. 'fixed72x48',
  416. 'fixed72x56',
  417. 'fixed72x64',
  418. 'fixed72x72',
  419. 'fixed72x80',
  420. 'fixed72x88',
  421. 'fixed72x96',
  422. 'fixed72x104',
  423. 'fixed72x112',
  424. 'fixed72x120',
  425. 'fixed72x128',
  426. 'fixed72x136',
  427. 'fixed72x144',
  428. 'fixed72x152',
  429. 'fixed72x160',
  430. 'fixed72x168',
  431. 'fixed72x176',
  432. 'fixed72x184',
  433. 'fixed80x8',
  434. 'fixed80x16',
  435. 'fixed80x24',
  436. 'fixed80x32',
  437. 'fixed80x40',
  438. 'fixed80x48',
  439. 'fixed80x56',
  440. 'fixed80x64',
  441. 'fixed80x72',
  442. 'fixed80x80',
  443. 'fixed80x88',
  444. 'fixed80x96',
  445. 'fixed80x104',
  446. 'fixed80x112',
  447. 'fixed80x120',
  448. 'fixed80x128',
  449. 'fixed80x136',
  450. 'fixed80x144',
  451. 'fixed80x152',
  452. 'fixed80x160',
  453. 'fixed80x168',
  454. 'fixed80x176',
  455. 'fixed88x8',
  456. 'fixed88x16',
  457. 'fixed88x24',
  458. 'fixed88x32',
  459. 'fixed88x40',
  460. 'fixed88x48',
  461. 'fixed88x56',
  462. 'fixed88x64',
  463. 'fixed88x72',
  464. 'fixed88x80',
  465. 'fixed88x88',
  466. 'fixed88x96',
  467. 'fixed88x104',
  468. 'fixed88x112',
  469. 'fixed88x120',
  470. 'fixed88x128',
  471. 'fixed88x136',
  472. 'fixed88x144',
  473. 'fixed88x152',
  474. 'fixed88x160',
  475. 'fixed88x168',
  476. 'fixed96x8',
  477. 'fixed96x16',
  478. 'fixed96x24',
  479. 'fixed96x32',
  480. 'fixed96x40',
  481. 'fixed96x48',
  482. 'fixed96x56',
  483. 'fixed96x64',
  484. 'fixed96x72',
  485. 'fixed96x80',
  486. 'fixed96x88',
  487. 'fixed96x96',
  488. 'fixed96x104',
  489. 'fixed96x112',
  490. 'fixed96x120',
  491. 'fixed96x128',
  492. 'fixed96x136',
  493. 'fixed96x144',
  494. 'fixed96x152',
  495. 'fixed96x160',
  496. 'fixed104x8',
  497. 'fixed104x16',
  498. 'fixed104x24',
  499. 'fixed104x32',
  500. 'fixed104x40',
  501. 'fixed104x48',
  502. 'fixed104x56',
  503. 'fixed104x64',
  504. 'fixed104x72',
  505. 'fixed104x80',
  506. 'fixed104x88',
  507. 'fixed104x96',
  508. 'fixed104x104',
  509. 'fixed104x112',
  510. 'fixed104x120',
  511. 'fixed104x128',
  512. 'fixed104x136',
  513. 'fixed104x144',
  514. 'fixed104x152',
  515. 'fixed112x8',
  516. 'fixed112x16',
  517. 'fixed112x24',
  518. 'fixed112x32',
  519. 'fixed112x40',
  520. 'fixed112x48',
  521. 'fixed112x56',
  522. 'fixed112x64',
  523. 'fixed112x72',
  524. 'fixed112x80',
  525. 'fixed112x88',
  526. 'fixed112x96',
  527. 'fixed112x104',
  528. 'fixed112x112',
  529. 'fixed112x120',
  530. 'fixed112x128',
  531. 'fixed112x136',
  532. 'fixed112x144',
  533. 'fixed120x8',
  534. 'fixed120x16',
  535. 'fixed120x24',
  536. 'fixed120x32',
  537. 'fixed120x40',
  538. 'fixed120x48',
  539. 'fixed120x56',
  540. 'fixed120x64',
  541. 'fixed120x72',
  542. 'fixed120x80',
  543. 'fixed120x88',
  544. 'fixed120x96',
  545. 'fixed120x104',
  546. 'fixed120x112',
  547. 'fixed120x120',
  548. 'fixed120x128',
  549. 'fixed120x136',
  550. 'fixed128x8',
  551. 'fixed128x16',
  552. 'fixed128x24',
  553. 'fixed128x32',
  554. 'fixed128x40',
  555. 'fixed128x48',
  556. 'fixed128x56',
  557. 'fixed128x64',
  558. 'fixed128x72',
  559. 'fixed128x80',
  560. 'fixed128x88',
  561. 'fixed128x96',
  562. 'fixed128x104',
  563. 'fixed128x112',
  564. 'fixed128x120',
  565. 'fixed128x128',
  566. 'fixed136x8',
  567. 'fixed136x16',
  568. 'fixed136x24',
  569. 'fixed136x32',
  570. 'fixed136x40',
  571. 'fixed136x48',
  572. 'fixed136x56',
  573. 'fixed136x64',
  574. 'fixed136x72',
  575. 'fixed136x80',
  576. 'fixed136x88',
  577. 'fixed136x96',
  578. 'fixed136x104',
  579. 'fixed136x112',
  580. 'fixed136x120',
  581. 'fixed144x8',
  582. 'fixed144x16',
  583. 'fixed144x24',
  584. 'fixed144x32',
  585. 'fixed144x40',
  586. 'fixed144x48',
  587. 'fixed144x56',
  588. 'fixed144x64',
  589. 'fixed144x72',
  590. 'fixed144x80',
  591. 'fixed144x88',
  592. 'fixed144x96',
  593. 'fixed144x104',
  594. 'fixed144x112',
  595. 'fixed152x8',
  596. 'fixed152x16',
  597. 'fixed152x24',
  598. 'fixed152x32',
  599. 'fixed152x40',
  600. 'fixed152x48',
  601. 'fixed152x56',
  602. 'fixed152x64',
  603. 'fixed152x72',
  604. 'fixed152x80',
  605. 'fixed152x88',
  606. 'fixed152x96',
  607. 'fixed152x104',
  608. 'fixed160x8',
  609. 'fixed160x16',
  610. 'fixed160x24',
  611. 'fixed160x32',
  612. 'fixed160x40',
  613. 'fixed160x48',
  614. 'fixed160x56',
  615. 'fixed160x64',
  616. 'fixed160x72',
  617. 'fixed160x80',
  618. 'fixed160x88',
  619. 'fixed160x96',
  620. 'fixed168x8',
  621. 'fixed168x16',
  622. 'fixed168x24',
  623. 'fixed168x32',
  624. 'fixed168x40',
  625. 'fixed168x48',
  626. 'fixed168x56',
  627. 'fixed168x64',
  628. 'fixed168x72',
  629. 'fixed168x80',
  630. 'fixed168x88',
  631. 'fixed176x8',
  632. 'fixed176x16',
  633. 'fixed176x24',
  634. 'fixed176x32',
  635. 'fixed176x40',
  636. 'fixed176x48',
  637. 'fixed176x56',
  638. 'fixed176x64',
  639. 'fixed176x72',
  640. 'fixed176x80',
  641. 'fixed184x8',
  642. 'fixed184x16',
  643. 'fixed184x24',
  644. 'fixed184x32',
  645. 'fixed184x40',
  646. 'fixed184x48',
  647. 'fixed184x56',
  648. 'fixed184x64',
  649. 'fixed184x72',
  650. 'fixed192x8',
  651. 'fixed192x16',
  652. 'fixed192x24',
  653. 'fixed192x32',
  654. 'fixed192x40',
  655. 'fixed192x48',
  656. 'fixed192x56',
  657. 'fixed192x64',
  658. 'fixed200x8',
  659. 'fixed200x16',
  660. 'fixed200x24',
  661. 'fixed200x32',
  662. 'fixed200x40',
  663. 'fixed200x48',
  664. 'fixed200x56',
  665. 'fixed208x8',
  666. 'fixed208x16',
  667. 'fixed208x24',
  668. 'fixed208x32',
  669. 'fixed208x40',
  670. 'fixed208x48',
  671. 'fixed216x8',
  672. 'fixed216x16',
  673. 'fixed216x24',
  674. 'fixed216x32',
  675. 'fixed216x40',
  676. 'fixed224x8',
  677. 'fixed224x16',
  678. 'fixed224x24',
  679. 'fixed224x32',
  680. 'fixed232x8',
  681. 'fixed232x16',
  682. 'fixed232x24',
  683. 'fixed240x8',
  684. 'fixed240x16',
  685. 'fixed248x8',
  686. //All ufixed
  687. 'ufixed',
  688. 'ufixed0x8',
  689. 'ufixed0x16',
  690. 'ufixed0x24',
  691. 'ufixed0x32',
  692. 'ufixed0x40',
  693. 'ufixed0x48',
  694. 'ufixed0x56',
  695. 'ufixed0x64',
  696. 'ufixed0x72',
  697. 'ufixed0x80',
  698. 'ufixed0x88',
  699. 'ufixed0x96',
  700. 'ufixed0x104',
  701. 'ufixed0x112',
  702. 'ufixed0x120',
  703. 'ufixed0x128',
  704. 'ufixed0x136',
  705. 'ufixed0x144',
  706. 'ufixed0x152',
  707. 'ufixed0x160',
  708. 'ufixed0x168',
  709. 'ufixed0x176',
  710. 'ufixed0x184',
  711. 'ufixed0x192',
  712. 'ufixed0x200',
  713. 'ufixed0x208',
  714. 'ufixed0x216',
  715. 'ufixed0x224',
  716. 'ufixed0x232',
  717. 'ufixed0x240',
  718. 'ufixed0x248',
  719. 'ufixed0x256',
  720. 'ufixed8x8',
  721. 'ufixed8x16',
  722. 'ufixed8x24',
  723. 'ufixed8x32',
  724. 'ufixed8x40',
  725. 'ufixed8x48',
  726. 'ufixed8x56',
  727. 'ufixed8x64',
  728. 'ufixed8x72',
  729. 'ufixed8x80',
  730. 'ufixed8x88',
  731. 'ufixed8x96',
  732. 'ufixed8x104',
  733. 'ufixed8x112',
  734. 'ufixed8x120',
  735. 'ufixed8x128',
  736. 'ufixed8x136',
  737. 'ufixed8x144',
  738. 'ufixed8x152',
  739. 'ufixed8x160',
  740. 'ufixed8x168',
  741. 'ufixed8x176',
  742. 'ufixed8x184',
  743. 'ufixed8x192',
  744. 'ufixed8x200',
  745. 'ufixed8x208',
  746. 'ufixed8x216',
  747. 'ufixed8x224',
  748. 'ufixed8x232',
  749. 'ufixed8x240',
  750. 'ufixed8x248',
  751. 'ufixed16x8',
  752. 'ufixed16x16',
  753. 'ufixed16x24',
  754. 'ufixed16x32',
  755. 'ufixed16x40',
  756. 'ufixed16x48',
  757. 'ufixed16x56',
  758. 'ufixed16x64',
  759. 'ufixed16x72',
  760. 'ufixed16x80',
  761. 'ufixed16x88',
  762. 'ufixed16x96',
  763. 'ufixed16x104',
  764. 'ufixed16x112',
  765. 'ufixed16x120',
  766. 'ufixed16x128',
  767. 'ufixed16x136',
  768. 'ufixed16x144',
  769. 'ufixed16x152',
  770. 'ufixed16x160',
  771. 'ufixed16x168',
  772. 'ufixed16x176',
  773. 'ufixed16x184',
  774. 'ufixed16x192',
  775. 'ufixed16x200',
  776. 'ufixed16x208',
  777. 'ufixed16x216',
  778. 'ufixed16x224',
  779. 'ufixed16x232',
  780. 'ufixed16x240',
  781. 'ufixed24x8',
  782. 'ufixed24x16',
  783. 'ufixed24x24',
  784. 'ufixed24x32',
  785. 'ufixed24x40',
  786. 'ufixed24x48',
  787. 'ufixed24x56',
  788. 'ufixed24x64',
  789. 'ufixed24x72',
  790. 'ufixed24x80',
  791. 'ufixed24x88',
  792. 'ufixed24x96',
  793. 'ufixed24x104',
  794. 'ufixed24x112',
  795. 'ufixed24x120',
  796. 'ufixed24x128',
  797. 'ufixed24x136',
  798. 'ufixed24x144',
  799. 'ufixed24x152',
  800. 'ufixed24x160',
  801. 'ufixed24x168',
  802. 'ufixed24x176',
  803. 'ufixed24x184',
  804. 'ufixed24x192',
  805. 'ufixed24x200',
  806. 'ufixed24x208',
  807. 'ufixed24x216',
  808. 'ufixed24x224',
  809. 'ufixed24x232',
  810. 'ufixed32x8',
  811. 'ufixed32x16',
  812. 'ufixed32x24',
  813. 'ufixed32x32',
  814. 'ufixed32x40',
  815. 'ufixed32x48',
  816. 'ufixed32x56',
  817. 'ufixed32x64',
  818. 'ufixed32x72',
  819. 'ufixed32x80',
  820. 'ufixed32x88',
  821. 'ufixed32x96',
  822. 'ufixed32x104',
  823. 'ufixed32x112',
  824. 'ufixed32x120',
  825. 'ufixed32x128',
  826. 'ufixed32x136',
  827. 'ufixed32x144',
  828. 'ufixed32x152',
  829. 'ufixed32x160',
  830. 'ufixed32x168',
  831. 'ufixed32x176',
  832. 'ufixed32x184',
  833. 'ufixed32x192',
  834. 'ufixed32x200',
  835. 'ufixed32x208',
  836. 'ufixed32x216',
  837. 'ufixed32x224',
  838. 'ufixed40x8',
  839. 'ufixed40x16',
  840. 'ufixed40x24',
  841. 'ufixed40x32',
  842. 'ufixed40x40',
  843. 'ufixed40x48',
  844. 'ufixed40x56',
  845. 'ufixed40x64',
  846. 'ufixed40x72',
  847. 'ufixed40x80',
  848. 'ufixed40x88',
  849. 'ufixed40x96',
  850. 'ufixed40x104',
  851. 'ufixed40x112',
  852. 'ufixed40x120',
  853. 'ufixed40x128',
  854. 'ufixed40x136',
  855. 'ufixed40x144',
  856. 'ufixed40x152',
  857. 'ufixed40x160',
  858. 'ufixed40x168',
  859. 'ufixed40x176',
  860. 'ufixed40x184',
  861. 'ufixed40x192',
  862. 'ufixed40x200',
  863. 'ufixed40x208',
  864. 'ufixed40x216',
  865. 'ufixed48x8',
  866. 'ufixed48x16',
  867. 'ufixed48x24',
  868. 'ufixed48x32',
  869. 'ufixed48x40',
  870. 'ufixed48x48',
  871. 'ufixed48x56',
  872. 'ufixed48x64',
  873. 'ufixed48x72',
  874. 'ufixed48x80',
  875. 'ufixed48x88',
  876. 'ufixed48x96',
  877. 'ufixed48x104',
  878. 'ufixed48x112',
  879. 'ufixed48x120',
  880. 'ufixed48x128',
  881. 'ufixed48x136',
  882. 'ufixed48x144',
  883. 'ufixed48x152',
  884. 'ufixed48x160',
  885. 'ufixed48x168',
  886. 'ufixed48x176',
  887. 'ufixed48x184',
  888. 'ufixed48x192',
  889. 'ufixed48x200',
  890. 'ufixed48x208',
  891. 'ufixed56x8',
  892. 'ufixed56x16',
  893. 'ufixed56x24',
  894. 'ufixed56x32',
  895. 'ufixed56x40',
  896. 'ufixed56x48',
  897. 'ufixed56x56',
  898. 'ufixed56x64',
  899. 'ufixed56x72',
  900. 'ufixed56x80',
  901. 'ufixed56x88',
  902. 'ufixed56x96',
  903. 'ufixed56x104',
  904. 'ufixed56x112',
  905. 'ufixed56x120',
  906. 'ufixed56x128',
  907. 'ufixed56x136',
  908. 'ufixed56x144',
  909. 'ufixed56x152',
  910. 'ufixed56x160',
  911. 'ufixed56x168',
  912. 'ufixed56x176',
  913. 'ufixed56x184',
  914. 'ufixed56x192',
  915. 'ufixed56x200',
  916. 'ufixed64x8',
  917. 'ufixed64x16',
  918. 'ufixed64x24',
  919. 'ufixed64x32',
  920. 'ufixed64x40',
  921. 'ufixed64x48',
  922. 'ufixed64x56',
  923. 'ufixed64x64',
  924. 'ufixed64x72',
  925. 'ufixed64x80',
  926. 'ufixed64x88',
  927. 'ufixed64x96',
  928. 'ufixed64x104',
  929. 'ufixed64x112',
  930. 'ufixed64x120',
  931. 'ufixed64x128',
  932. 'ufixed64x136',
  933. 'ufixed64x144',
  934. 'ufixed64x152',
  935. 'ufixed64x160',
  936. 'ufixed64x168',
  937. 'ufixed64x176',
  938. 'ufixed64x184',
  939. 'ufixed64x192',
  940. 'ufixed72x8',
  941. 'ufixed72x16',
  942. 'ufixed72x24',
  943. 'ufixed72x32',
  944. 'ufixed72x40',
  945. 'ufixed72x48',
  946. 'ufixed72x56',
  947. 'ufixed72x64',
  948. 'ufixed72x72',
  949. 'ufixed72x80',
  950. 'ufixed72x88',
  951. 'ufixed72x96',
  952. 'ufixed72x104',
  953. 'ufixed72x112',
  954. 'ufixed72x120',
  955. 'ufixed72x128',
  956. 'ufixed72x136',
  957. 'ufixed72x144',
  958. 'ufixed72x152',
  959. 'ufixed72x160',
  960. 'ufixed72x168',
  961. 'ufixed72x176',
  962. 'ufixed72x184',
  963. 'ufixed80x8',
  964. 'ufixed80x16',
  965. 'ufixed80x24',
  966. 'ufixed80x32',
  967. 'ufixed80x40',
  968. 'ufixed80x48',
  969. 'ufixed80x56',
  970. 'ufixed80x64',
  971. 'ufixed80x72',
  972. 'ufixed80x80',
  973. 'ufixed80x88',
  974. 'ufixed80x96',
  975. 'ufixed80x104',
  976. 'ufixed80x112',
  977. 'ufixed80x120',
  978. 'ufixed80x128',
  979. 'ufixed80x136',
  980. 'ufixed80x144',
  981. 'ufixed80x152',
  982. 'ufixed80x160',
  983. 'ufixed80x168',
  984. 'ufixed80x176',
  985. 'ufixed88x8',
  986. 'ufixed88x16',
  987. 'ufixed88x24',
  988. 'ufixed88x32',
  989. 'ufixed88x40',
  990. 'ufixed88x48',
  991. 'ufixed88x56',
  992. 'ufixed88x64',
  993. 'ufixed88x72',
  994. 'ufixed88x80',
  995. 'ufixed88x88',
  996. 'ufixed88x96',
  997. 'ufixed88x104',
  998. 'ufixed88x112',
  999. 'ufixed88x120',
  1000. 'ufixed88x128',
  1001. 'ufixed88x136',
  1002. 'ufixed88x144',
  1003. 'ufixed88x152',
  1004. 'ufixed88x160',
  1005. 'ufixed88x168',
  1006. 'ufixed96x8',
  1007. 'ufixed96x16',
  1008. 'ufixed96x24',
  1009. 'ufixed96x32',
  1010. 'ufixed96x40',
  1011. 'ufixed96x48',
  1012. 'ufixed96x56',
  1013. 'ufixed96x64',
  1014. 'ufixed96x72',
  1015. 'ufixed96x80',
  1016. 'ufixed96x88',
  1017. 'ufixed96x96',
  1018. 'ufixed96x104',
  1019. 'ufixed96x112',
  1020. 'ufixed96x120',
  1021. 'ufixed96x128',
  1022. 'ufixed96x136',
  1023. 'ufixed96x144',
  1024. 'ufixed96x152',
  1025. 'ufixed96x160',
  1026. 'ufixed104x8',
  1027. 'ufixed104x16',
  1028. 'ufixed104x24',
  1029. 'ufixed104x32',
  1030. 'ufixed104x40',
  1031. 'ufixed104x48',
  1032. 'ufixed104x56',
  1033. 'ufixed104x64',
  1034. 'ufixed104x72',
  1035. 'ufixed104x80',
  1036. 'ufixed104x88',
  1037. 'ufixed104x96',
  1038. 'ufixed104x104',
  1039. 'ufixed104x112',
  1040. 'ufixed104x120',
  1041. 'ufixed104x128',
  1042. 'ufixed104x136',
  1043. 'ufixed104x144',
  1044. 'ufixed104x152',
  1045. 'ufixed112x8',
  1046. 'ufixed112x16',
  1047. 'ufixed112x24',
  1048. 'ufixed112x32',
  1049. 'ufixed112x40',
  1050. 'ufixed112x48',
  1051. 'ufixed112x56',
  1052. 'ufixed112x64',
  1053. 'ufixed112x72',
  1054. 'ufixed112x80',
  1055. 'ufixed112x88',
  1056. 'ufixed112x96',
  1057. 'ufixed112x104',
  1058. 'ufixed112x112',
  1059. 'ufixed112x120',
  1060. 'ufixed112x128',
  1061. 'ufixed112x136',
  1062. 'ufixed112x144',
  1063. 'ufixed120x8',
  1064. 'ufixed120x16',
  1065. 'ufixed120x24',
  1066. 'ufixed120x32',
  1067. 'ufixed120x40',
  1068. 'ufixed120x48',
  1069. 'ufixed120x56',
  1070. 'ufixed120x64',
  1071. 'ufixed120x72',
  1072. 'ufixed120x80',
  1073. 'ufixed120x88',
  1074. 'ufixed120x96',
  1075. 'ufixed120x104',
  1076. 'ufixed120x112',
  1077. 'ufixed120x120',
  1078. 'ufixed120x128',
  1079. 'ufixed120x136',
  1080. 'ufixed128x8',
  1081. 'ufixed128x16',
  1082. 'ufixed128x24',
  1083. 'ufixed128x32',
  1084. 'ufixed128x40',
  1085. 'ufixed128x48',
  1086. 'ufixed128x56',
  1087. 'ufixed128x64',
  1088. 'ufixed128x72',
  1089. 'ufixed128x80',
  1090. 'ufixed128x88',
  1091. 'ufixed128x96',
  1092. 'ufixed128x104',
  1093. 'ufixed128x112',
  1094. 'ufixed128x120',
  1095. 'ufixed128x128',
  1096. 'ufixed136x8',
  1097. 'ufixed136x16',
  1098. 'ufixed136x24',
  1099. 'ufixed136x32',
  1100. 'ufixed136x40',
  1101. 'ufixed136x48',
  1102. 'ufixed136x56',
  1103. 'ufixed136x64',
  1104. 'ufixed136x72',
  1105. 'ufixed136x80',
  1106. 'ufixed136x88',
  1107. 'ufixed136x96',
  1108. 'ufixed136x104',
  1109. 'ufixed136x112',
  1110. 'ufixed136x120',
  1111. 'ufixed144x8',
  1112. 'ufixed144x16',
  1113. 'ufixed144x24',
  1114. 'ufixed144x32',
  1115. 'ufixed144x40',
  1116. 'ufixed144x48',
  1117. 'ufixed144x56',
  1118. 'ufixed144x64',
  1119. 'ufixed144x72',
  1120. 'ufixed144x80',
  1121. 'ufixed144x88',
  1122. 'ufixed144x96',
  1123. 'ufixed144x104',
  1124. 'ufixed144x112',
  1125. 'ufixed152x8',
  1126. 'ufixed152x16',
  1127. 'ufixed152x24',
  1128. 'ufixed152x32',
  1129. 'ufixed152x40',
  1130. 'ufixed152x48',
  1131. 'ufixed152x56',
  1132. 'ufixed152x64',
  1133. 'ufixed152x72',
  1134. 'ufixed152x80',
  1135. 'ufixed152x88',
  1136. 'ufixed152x96',
  1137. 'ufixed152x104',
  1138. 'ufixed160x8',
  1139. 'ufixed160x16',
  1140. 'ufixed160x24',
  1141. 'ufixed160x32',
  1142. 'ufixed160x40',
  1143. 'ufixed160x48',
  1144. 'ufixed160x56',
  1145. 'ufixed160x64',
  1146. 'ufixed160x72',
  1147. 'ufixed160x80',
  1148. 'ufixed160x88',
  1149. 'ufixed160x96',
  1150. 'ufixed168x8',
  1151. 'ufixed168x16',
  1152. 'ufixed168x24',
  1153. 'ufixed168x32',
  1154. 'ufixed168x40',
  1155. 'ufixed168x48',
  1156. 'ufixed168x56',
  1157. 'ufixed168x64',
  1158. 'ufixed168x72',
  1159. 'ufixed168x80',
  1160. 'ufixed168x88',
  1161. 'ufixed176x8',
  1162. 'ufixed176x16',
  1163. 'ufixed176x24',
  1164. 'ufixed176x32',
  1165. 'ufixed176x40',
  1166. 'ufixed176x48',
  1167. 'ufixed176x56',
  1168. 'ufixed176x64',
  1169. 'ufixed176x72',
  1170. 'ufixed176x80',
  1171. 'ufixed184x8',
  1172. 'ufixed184x16',
  1173. 'ufixed184x24',
  1174. 'ufixed184x32',
  1175. 'ufixed184x40',
  1176. 'ufixed184x48',
  1177. 'ufixed184x56',
  1178. 'ufixed184x64',
  1179. 'ufixed184x72',
  1180. 'ufixed192x8',
  1181. 'ufixed192x16',
  1182. 'ufixed192x24',
  1183. 'ufixed192x32',
  1184. 'ufixed192x40',
  1185. 'ufixed192x48',
  1186. 'ufixed192x56',
  1187. 'ufixed192x64',
  1188. 'ufixed200x8',
  1189. 'ufixed200x16',
  1190. 'ufixed200x24',
  1191. 'ufixed200x32',
  1192. 'ufixed200x40',
  1193. 'ufixed200x48',
  1194. 'ufixed200x56',
  1195. 'ufixed208x8',
  1196. 'ufixed208x16',
  1197. 'ufixed208x24',
  1198. 'ufixed208x32',
  1199. 'ufixed208x40',
  1200. 'ufixed208x48',
  1201. 'ufixed216x8',
  1202. 'ufixed216x16',
  1203. 'ufixed216x24',
  1204. 'ufixed216x32',
  1205. 'ufixed216x40',
  1206. 'ufixed224x8',
  1207. 'ufixed224x16',
  1208. 'ufixed224x24',
  1209. 'ufixed224x32',
  1210. 'ufixed232x8',
  1211. 'ufixed232x16',
  1212. 'ufixed232x24',
  1213. 'ufixed240x8',
  1214. 'ufixed240x16',
  1215. 'ufixed248x8',
  1216. 'event',
  1217. 'enum',
  1218. 'let',
  1219. 'mapping',
  1220. 'private',
  1221. 'public',
  1222. 'external',
  1223. 'inherited',
  1224. 'payable',
  1225. 'true',
  1226. 'false',
  1227. 'var',
  1228. 'import',
  1229. 'constant',
  1230. 'if',
  1231. 'else',
  1232. 'for',
  1233. 'else',
  1234. 'for',
  1235. 'while',
  1236. 'do',
  1237. 'break',
  1238. 'continue',
  1239. 'throw',
  1240. 'returns',
  1241. 'return',
  1242. 'suicide',
  1243. 'new',
  1244. 'is',
  1245. 'this',
  1246. 'super'
  1247. ],
  1248. operators: [
  1249. '=',
  1250. '>',
  1251. '<',
  1252. '!',
  1253. '~',
  1254. '?',
  1255. ':',
  1256. '==',
  1257. '<=',
  1258. '>=',
  1259. '!=',
  1260. '&&',
  1261. '||',
  1262. '++',
  1263. '--',
  1264. '+',
  1265. '-',
  1266. '*',
  1267. '/',
  1268. '&',
  1269. '|',
  1270. '^',
  1271. '%',
  1272. '<<',
  1273. '>>',
  1274. '>>>',
  1275. '+=',
  1276. '-=',
  1277. '*=',
  1278. '/=',
  1279. '&=',
  1280. '|=',
  1281. '^=',
  1282. '%=',
  1283. '<<=',
  1284. '>>=',
  1285. '>>>='
  1286. ],
  1287. // we include these common regular expressions
  1288. symbols: /[=><!~?:&|+\-*\/\^%]+/,
  1289. escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
  1290. integersuffix: /(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,
  1291. floatsuffix: /[fFlL]?/,
  1292. // The main tokenizer for our languages
  1293. tokenizer: {
  1294. root: [
  1295. // identifiers and keywords
  1296. [
  1297. /[a-zA-Z_]\w*/,
  1298. {
  1299. cases: {
  1300. '@keywords': { token: 'keyword.$0' },
  1301. '@default': 'identifier'
  1302. }
  1303. }
  1304. ],
  1305. // whitespace
  1306. { include: '@whitespace' },
  1307. // [[ attributes ]].
  1308. [/\[\[.*\]\]/, 'annotation'],
  1309. // Preprocessor directive
  1310. [/^\s*#\w+/, 'keyword'],
  1311. //DataTypes
  1312. [/int\d*/, 'keyword'],
  1313. // delimiters and operators
  1314. [/[{}()\[\]]/, '@brackets'],
  1315. [/[<>](?!@symbols)/, '@brackets'],
  1316. [
  1317. /@symbols/,
  1318. {
  1319. cases: {
  1320. '@operators': 'delimiter',
  1321. '@default': ''
  1322. }
  1323. }
  1324. ],
  1325. // numbers
  1326. [/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/, 'number.float'],
  1327. [/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/, 'number.float'],
  1328. [/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/, 'number.hex'],
  1329. [/0[0-7']*[0-7](@integersuffix)/, 'number.octal'],
  1330. [/0[bB][0-1']*[0-1](@integersuffix)/, 'number.binary'],
  1331. [/\d[\d']*\d(@integersuffix)/, 'number'],
  1332. [/\d(@integersuffix)/, 'number'],
  1333. // delimiter: after number because of .\d floats
  1334. [/[;,.]/, 'delimiter'],
  1335. // strings
  1336. [/"([^"\\]|\\.)*$/, 'string.invalid'],
  1337. [/"/, 'string', '@string'],
  1338. // characters
  1339. [/'[^\\']'/, 'string'],
  1340. [/(')(@escapes)(')/, ['string', 'string.escape', 'string']],
  1341. [/'/, 'string.invalid']
  1342. ],
  1343. whitespace: [
  1344. [/[ \t\r\n]+/, ''],
  1345. [/\/\*\*(?!\/)/, 'comment.doc', '@doccomment'],
  1346. [/\/\*/, 'comment', '@comment'],
  1347. [/\/\/.*$/, 'comment']
  1348. ],
  1349. comment: [
  1350. [/[^\/*]+/, 'comment'],
  1351. [/\*\//, 'comment', '@pop'],
  1352. [/[\/*]/, 'comment']
  1353. ],
  1354. //Identical copy of comment above, except for the addition of .doc
  1355. doccomment: [
  1356. [/[^\/*]+/, 'comment.doc'],
  1357. [/\*\//, 'comment.doc', '@pop'],
  1358. [/[\/*]/, 'comment.doc']
  1359. ],
  1360. string: [
  1361. [/[^\\"]+/, 'string'],
  1362. [/@escapes/, 'string.escape'],
  1363. [/\\./, 'string.escape.invalid'],
  1364. [/"/, 'string', '@pop']
  1365. ]
  1366. }
  1367. };