MCPcopy Create free account
hub / github.com/davidkingzyb/SCAST / parse

Function parse

js/SCASTPY.js:258–717  ·  view source on GitHub ↗
(input)

Source from the content-addressed store, hash-verified

256 }
257
258 function parse(input){
259 var isclass=false
260 return parse_toplevel();
261 function is_kw(kw) {
262 var tok = input.peek();
263 return tok && tok.type == "kw" && (!kw || tok.value == kw) && tok;
264 }
265 function is_punc(ch) {
266 var tok = input.peek();
267 return tok && tok.type == "punc" && (!ch || tok.value == ch) && tok;
268 }
269 function is_sp(ch) {
270 var tok = input.peek();
271 return tok && tok.type == "sp" && (!ch || tok.value == ch) && tok;
272 }
273 function is_kw(kw) {
274 var tok = input.peek();
275 return tok && tok.type == "kw" && (!kw || tok.value == kw) && tok;
276 }
277 function is_op(op) {
278 var tok = input.peek();
279 return tok && tok.type == "op" && (!op || tok.value == op) && tok;
280 }
281 function is_id() {
282 var tok = input.peek();
283 return tok.type=='id';
284 }
285 function is_num(){
286 var tok = input.peek();
287 return tok.type=='num';
288 }
289 function is_str(){
290 var tok = input.peek();
291 return tok.type=='str';
292 }
293
294 function skip_punc(ch) {
295 if (is_punc(ch)) input.next();
296 else input.croak("Expecting punctuation: \"" + ch + "\"");
297 }
298 function skip_split(ch) {
299 if (is_sp(ch)) input.next();
300 else input.croak("Expecting punctuation: \"" + ch + "\"");
301 }
302 function parse_next() {
303 var n = input.next();
304 // console.log('parse next ',n)
305 return n;
306 }
307 function parse_toplevel() {
308 var prog = [];
309 while (!input.eof()) {
310 prog.push(parse_statement());
311 }
312 return { type: "top", 'body': prog };
313 }
314
315 function parse_id(iscls){

Callers 1

getAstFunction · 0.70

Calls 1

parse_toplevelFunction · 0.70

Tested by

no test coverage detected