Skip to content

Commit 2d111ea

Browse files
committed
feat: locations
1 parent 27e5ea6 commit 2d111ea

File tree

16 files changed

+5841
-5188
lines changed

16 files changed

+5841
-5188
lines changed

packages/parser-next/grammar.ts

Lines changed: 4359 additions & 3717 deletions
Large diffs are not rendered by default.

packages/parser-next/index.ts

Lines changed: 0 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,2 @@
11
export * from './grammar';
2-
3-
import * as $ from '@langtools/runtime';
4-
import * as G from './grammar';
5-
import { inspect } from 'util';
6-
7-
const log = (obj: unknown) => console.log(inspect(obj, { colors: true, depth: Infinity }));
8-
9-
// npm run generate -w @langtools/parser-next && npx prettier packages/parser-next/grammar.ts --write && ts-node packages/parser-next/index.ts
10-
11-
const code = `
12-
struct Transfer {
13-
seqno: Int as uint32;
14-
mode: Int as uint8;
15-
to: Address;
16-
amount: Int as coins;
17-
body: Cell?;
18-
}
19-
20-
message(123) TransferMessage {
21-
signature: Slice;
22-
transfer: Transfer;
23-
}
24-
25-
contract Wallet {
26-
27-
seqno: Int as uint32 = 0;
28-
key: Int as uint256;
29-
walletId: Int as uint64;
30-
31-
init(key: Int, walletId: Int) {
32-
self.key = key;
33-
self.walletId = walletId;
34-
}
35-
36-
receive("Deploy") {
37-
// Do nothing
38-
}
39-
40-
receive(msg: TransferMessage) {
41-
42-
// Check Signature
43-
let op_hash: Int = msg.transfer.toCell().hash();
44-
require(checkSignature(op_hash, msg.signature, self.key), "Invalid signature");
45-
require(msg.transfer.seqno == self.seqno, "Invalid seqno");
46-
47-
// Increment seqno
48-
self.seqno = self.seqno + 1;
49-
50-
// Send message
51-
send(SendParameters{value: msg.transfer.amount, to: msg.transfer.to, mode: msg.transfer.mode, body: msg.transfer.body});
52-
}
53-
54-
receive(msg: Slice) {
55-
self.seqno = self.seqno + 1;
56-
}
57-
58-
receive() {
59-
self.seqno = self.seqno + 1;
60-
}
61-
62-
receive("notify") {
63-
self.seqno = self.seqno + 1;
64-
}
65-
66-
receive("你好ж") {
67-
self.seqno = self.seqno + 1;
68-
}
69-
70-
receive("duplicate") {
71-
// Create new wallet
72-
let walletInit: StateInit = initOf Wallet(self.key, self.walletId + 1);
73-
}
74-
75-
bounced(msg: Slice) {
76-
// TODO: Handle
77-
}
78-
79-
get fun publicKey(): Int {
80-
return self.key;
81-
}
82-
83-
get fun walletId(): Int {
84-
return self.walletId;
85-
}
86-
87-
get fun seqno(): Int {
88-
return self.seqno;
89-
}
90-
}
91-
`;
92-
93-
const ast = $.parse($.left($.right(
94-
$.star(G.space$noSkip),
95-
96-
G.Module,
97-
), $.eof), code);
98-
99-
log(ast);
1002

0 commit comments

Comments
 (0)