How to use readToken method in Cucumber-gherkin

Best JavaScript code snippet using cucumber-gherkin

parsesb.js

Source:parsesb.js Github

copy

Full Screen

...85 break;case "CALL":86 current.type="CALL";87 //CALL SPRITE and CALL BG88 if(peekWord("SPRITE")||peekWord("BG")){89 readToken("word");90 current.mode=""//TODO: sprite or BG91 //regular CALL92 }else{93 current.inputs=readList(readExpression);94 if(readToken("OUT","keyword"))95 current.outputs=readList(readVariable);96 }97 //COMMON98 break;case "COMMON":99 assert(peekToken("DEF"),"COMMON without DEF");100 nextDefCommon=true;101 //DATA102 break;case "DATA":103 current.type="DATA";104 assert(current.inputs=readList(readExpression,true),"Missing list"); //should read constant expression105 //SWAP106 break;case "SWAP":107 current.type="SWAP";108 assert(current.variable=readVariable(),"Missing variable in SWAP");109 assert(readToken(","),"Missing comma in SWAP");110 assert(current.variable2=readVariable(),"Missing variable in SWAP");111 //READ112 break;case "READ":113 current.type="READ";114 assert(current.inputs=readList(readVariable,true),"Missing list");115 //DEC/INC116 break;case "DEC":117 current.type="DEC";118 assert(current.variable=readVariable(),"Missing DEC variable");119 if(readToken(","))120 assert(current.value=readExpression(),"Missing DEC amount");121 break;case "INC":122 current.type="INC";123 assert(current.variable=readVariable(),"Missing INC variable");124 if(readToken(","))125 assert(current.value=readExpression(),"Missing INC amount");126 //DEF127 break;case "DEF":128 assert(!defType,"Nested DEF");129 current.type="DEF";130 if(nextDefCommon)131 current.common=true;132 nextDefCommon=false;133 //read function name134 assert(readToken("word"),"Missing DEF name");135 current.name=word;136 //() form137 if(readToken("(")){138 defType=2;139 current.parenDef=true;140 //read argument list141 current.inputs=readList(readArgument,true);142 //read )143 assert(readToken(")"),"Missing \")\" after DEF arguments"144 );145 //subroutine/out form146 }else{147 defType=1;148 //read argument list149 current.inputs=readList(readArgument,true);150 //OUT151 //read output list152 if(readToken("OUT"))153 current.outputs=readList(readArgument,true);154 }155 startBlock();156 //VAR157 break;case "VAR":158 //assignment form159 if(peekToken("(")){160 current.type="assignment"161 readToken("(");162 assert(current.varName=readExpression(),"Missing var name");163 assert(readToken(")"),"missing )");164 //TODO - this165 while(readToken("[")){166 assert(readList(readExpression,true),"Missing array index");167 assert(readToken("]"),"Missing \"]\"");168 }169 assert(readToken("="),"missing =");170 current.value=readExpression();171 //normal form172 }else{173 current.type="DIM";174 assert(current.inputs=readList(readDeclaration),"Missing variable list");175 }176 //DIM177 break;case "DIM":178 current.type="DIM";179 assert(current.inputs=readList(readDeclaration),"Missing variable list");180 //IF, ELSEIF181 break;case "ELSEIF":182 assert(currentBlock().type=="IF"||currentBlock().type=="ELSEIF","ELSEIF without IF");183 endBlock();184 current.type="ELSEIF"185 current.condition=readExpression();186 startBlock();187 break;case "IF":188 current.type="IF"189 assert(current.condition=readExpression(),"Missing IF condition");190 assert(readToken("THEN")||readToken("GOTO"),"IF without THEN");191 //check goto vs then192 readToken("label");//optional193 startBlock();194 //END195 break;case "END":196 if(defType){197 defType=0;198 endDef();199 }else200 current.type="END";201 //EXEC/USE202 break;case "EXEC":203 current.type="EXEC";204 current.value=readExpression();205 break;case "USE":206 current.type="USE";207 current.value=readExpression();208 //FOR209 break;case "FOR":210 current.type="FOR";211 assert(current.variable=readVariable(),"Missing FOR variable");212 assert(readToken("="),"Missing = in FOR");213 current.start=readExpression();214 assert(readToken("word") && word==="TO","Missing TO in FOR");215 current.end=readExpression();216 if(readToken("word") && word==="STEP"){217 current.step=readExpression();218 }else219 readNext=0; //heck220 startBlock();221 //GOSUB GOTO RESTORE(?)222 break;case "GOSUB":223 current.type="GOSUB";224 if(readToken("label"))225 current.label=word;226 else227 assert(current.label=readExpression(),"Missing argument to GOSUB");228 break;case "GOTO":229 current.type="GOTO";230 if(readToken("label"))231 current.label=word;232 else233 assert(current.label=readExpression(),"Missing argument to GOTO");234 break;case "RESTORE":235 current.type="RESTORE";236 if(!(current.label=readToken("label")))237 assert(current.label=readExpression(),"Missing argument to RESTORE");238 //WHILE <condition>239 break;case "WHILE":240 current.type="WHILE"241 assert(current.condition=readExpression(),"Missing argument to keyword");242 startBlock();243 //UNTIL <condition>244 break;case "UNTIL":245 assert(currentBlock().type=="REPEAT","UNTIL without REPEAT");246 assert(currentBlock().condition=readExpression(),"Missing UNTIL condition");247 endBlock();248 //INPUT249 break;case "INPUT":250 current.type="INPUT";251 current.inputs=readPrintList(readExpression);252 //LINPUT253 break;case "LINPUT":254 current.type="LINPUT";255 current.inputs=readPrintList(readExpression);256 //NEXT257 break;case "NEXT":258 assert(currentBlock().type=="FOR","NEXT without FOR");259 readExpression();260 endBlock();261 //ON262 break;case "ON":263 current.type="ON"264 current.condition=readExpression();265 assert(readToken("GOTO")||readToken("GOSUB"),"ON without GOTO/GOSUB");266 current.onMode=""//GOTO or GOSUB267 assert(current.labels=readList(readExpression,true),"Missing label list after ON");268 //PRINT269 break;case "PRINT":270 current.type="PRINT"271 current.inputs=readPrintList(readExpression);272 //REM273 break;case "REM":274 do{275 next();276 }while(type!=="linebreak" && type!=="eof");;;277 //RETURN278 break;case "RETURN":279 current.type="RETURN";280 if(defType===2)281 current.value=readExpression();282 //OUT/THEN283 break;case "OUT":case "THEN":284 assert(false,"Illegal OUT/THEN");285 //other words286 break;case "word":case "(":287 //var name=text;288 readNext=readNext-1;289 var x=readVariable(true);290 if(readToken("=")){291 current.type="assignment";292 current.variable=x;293 current.value=readExpression();294 }else{295 //HORRIBLE STUPID FAKE KEYWORDS!!!296 //XON/XOFF/OPTION297 // I hate you! :(298 // not nice >:[299 switch(x){300 case "XON":301 current.type="xon";302 if(readToken("word")){303 assert(word==="MOTION"||word==="EXPAD"||word==="MIC"||word==="WIIU"||word=="COMPAT","invalid option");304 current.feature=word;305 }else{306 //what the [heck] were you THINKING!?!??!307 assert(readToken("integer"),"invalid option");308 assert(word==="3","invalid option");309 assert(readToken("word"),"invalid option");310 assert(word==="DS","invalid option");311 current.feature="3DS";312 }313 break;case "XOFF":314 current.type="xon";315 assert(readToken("word"));316 assert(word==="MOTION"||word==="EXPAD"||word==="MIC"||word=="COMPAT","invalid option");317 current.feature=word;318 break;case "OPTION":319 current.type="option";320 assert(readToken("word"),"invalid option");321 assert(word==="STRICT"||word==="DEFINT"||word==="TOOL","invalid option");322 current.option=word;323 //return to sanity, normal function call!324 break;default:325 current.type="function";326 current.name=x.name;327 current.inputs=readList(readExpression);328 if(readToken("OUT"))329 current.outputs=readList(readVariable);330 else331 current.outputs=[];332 }333 }334 //label335 break;case "label":336 current.type="label";337 current.label=word; //TODO: store label names338 //comment339 break;case "comment":340 //end341 break;case "eof":342 //line break, colon343 break;case ":":344 break;case "linebreak":345 break;default:346 assert(false,"Expected statement, got "+type);347 }348 if(current.type){349 currentBlocks[currentBlocks.length-1].code.push(current)//push to current block!350 current={}351 }352 }353 354 function currentBlock(){355 return currentBlocks[currentBlocks.length-1]356 }357 358 //check if next token is of a specific type359 function peekToken(wantedType){360 var prevType=type,prevWord=word;361 next();362 readNext=-1;363 newType=type;364 newWord=word;365 type=prevType;366 word=prevWord;367 return newType===wantedType;368 }369 //check if next token is of a specific type370 function peekWord(wantedWord){371 var prevType=type,prevWord=word;372 next();373 readNext=-1;374 newType=type;375 newWord=word;376 type=prevType;377 word=prevWord;378 return newType==="word" && newWord.trimLeft().toUpperCase()===wantedWord;379 }380 381 //Try to read a specific token382 function readToken(wantedType){383 next();384 if(type===wantedType){385 readNext=1;386 return true;387 }388 readNext=0;389 return false;390 }391 392 //Read list393 //reader: function to read item (readExpression etc.)394 //noNull: throw an error if a null value is found395 function readList(reader,noNull){396 var ret=[];397 var x=reader();398 if(x)399 ret.push(x);400 if(readToken(",","")){401 if(!x)402 ret.push(x);403 assert(x||!noNull,"Null value not allowed");404 do{405 assert(ret.push(reader())||!noNull,"Null value not allowed");406 }while(readToken(","));;;407 }408 return ret;409 }410 411 //read list of PRINT arguments412 function readPrintList(reader){413 var x=reader();414 if(!x)415 return [];416 var ret=[x];417 while(1){418 if(readToken(",")){419 ret.push(",");420 }else if(readToken(";")){421 ret.push(";");422 }else{423 return ret;424 }425 x=reader();426 if(!x)427 return ret;428 ret.push(x);429 }430 }431 432 //read normal expression433 //SHould return RPN list434 function readExpression(){435 expr=[];436 //var rpn=[],stack=[];437 //rpn parse tokens as they are read?438 if(readExpression2())439 return rpnFromExpr(expr);440 return false;441 }442 443 function prec(token){444 if(token.type==="unary"||token.type==="index")445 return Infinity446 else447 switch(token.name){448 case "*":case "/": case "DIV": case "MOD":449 return 10450 case "+":case "-":451 return 9452 case "<<":case ">>":453 return 8454 case "<":case "<=":case ">":case ">=":455 return 7456 case "==":case "!=":457 return 6458 case "AND":459 return 5460 case "XOR":461 return 4462 case "OR":463 return 3464 case "&&":465 return 2466 case "||":467 return 1468 }469 console.log(token);470 throw new Error("HECK")471 assert(false,"error prec "+token.name);472 }473 function left(token){474 return 0475 }476 477 function rpnFromExpr(expr){478 var rpn=[],stack=[];479 for(var i=0;i<expr.length;i++){480 var token=expr[i];481 switch(token.type){482 case "integer":case "float":case "string":case "variable":case "function":case "index":483 rpn.push(token);484 break;case "operator":case "unary":485 while(stack.length){486 var top=stack[stack.length-1]487 console.log(top)488 if(top.type!="("&&(prec(top)>=prec(token) || (prec(top)==prec(token) && left(token)))){489 rpn.push(stack.pop());490 }else{491 break;492 }493 }494 stack.push(token);495 break;case "(":496 stack.push(token);497 break;case ")":498 while(1){499 var top=stack[stack.length-1]500 if(top.type!="("){501 rpn.push(stack.pop());502 }else{503 break;504 }505 }506 stack.pop();507 break;default:508 assert(false,"error typ")509 }510 }511 while(stack.length){512 rpn.push(stack.pop());513 }514 return rpn;515 }516 517 function readExpression2(){518 var ret=false;519 next();520 switch(type){521 //VAR()522 case "VAR":523 readVar();524 //function or variable525 break;case "word":526 var name=word;527 if(readToken("(")){528 var x=readList(readExpression2);529 expr.push({type:"function",name:name,args:x.length});530 assert(readToken(")"),"Missing \")\" in function call");531 }else532 expr.push({type:"variable",name:name});533 //CALL()534 break;case "CALL":535 assert(readToken("("),"Bad CALL");536 //CALL537 var x=readList(readExpression2);538 expr.push({type:"call",args:x.length});539 assert(readToken(")"),"Missing \")\" in CALL()");540 ret=true;541 //number literals542 break;case "integer":case "float":543 expr.push({type:type,value:word});544 //string/label545 break;case "string":case "label":546 expr.push({type:"string",value:word});547 //operator (unary)548 break;case "unary":case "minus":549 //unary op550 expr.push({type:"unary",name:word,args:1});551 assert(readExpression2(),"Missing operator argument");552 //open parenthesis553 break;case "(":554 expr.push({type:"("});555 readExpression2();556 assert(readToken(")"),"Missing \")\"");557 expr.push({type:")"});558 //other crap559 break;default:560 readNext=0;561 return false;562 }563 //read []s564 while(readToken("[")){565 assert(x=readList(readExpression2,true),"Missing array index");566 expr.push({type:"index",args:x.length+1});567 assert(readToken("]"),"Missing \"]\"");568 }569 //read infix operators570 while(readToken("operator")||readToken("minus")){571 expr.push({type:"operator",name:word,args:2}); 572 assert(readExpression2(),"Operator missing second argument");573 }574 return true;575 }576 577 //read function definition argument578 function readArgument(){579 if(readToken("word")){580 var x=word;581 if(readToken("["))582 assert(readToken("]"),"Missing \"]\"");583 return x;584 }585 return false;586 }587 588 //read variable declaration589 function readDeclaration(){590 var ret={};591 if(readToken("word")){592 ret.name=word;593 if(readToken("[")){594 assert(ret.dims=readList(readExpression,true),"Missing array size");595 assert(readToken("]"),"Missing \"]\"");596 }else if(readToken("="))597 ret.value=readExpression();598 return ret;599 }600 return false;601 }602 603 //read function VAR()604 function readVar(){605 var ret;606 //"function" form of VAR607 if(readToken("(")){608 assert(ret=readExpression(),"Missing VAR argument");609 assert(readToken(")"),"Missing \")\" in VAR()");610 //bad VAR611 }else612 assert(false,"invalid VAR");613 return ret;614 }615 616 //keys:617 //name: [variable name expr token list]618 //indexes: [index list]619 function readVariable(noPrintVarName){620 var ret={name:"",indexes:[]};621 next();622 switch(type){623 case "VAR":624 ret.name=readVar();625 break;case "word":626 ret.name=word;627 break;default:628 readNext=0;629 return false;630 }631 while(readToken("[")){632 assert(ret.indexes.push(readList(readExpression)),"Missing index");633 assert(readToken("]"),"Missing \"]\"");634 }635 if(!ret.indexes)636 ret.indexes=undefined637 return ret;638 }639 640 //throw error with message if condition is false641 function assert(condition,message){642 if(!condition){643 console.log(message);644 var error=new Error(message);645 error.name="ParseError";646 throw error;647 } ...

Full Screen

Full Screen

module$node_modules$graphql$language$lexer.js

Source:module$node_modules$graphql$language$lexer.js Github

copy

Full Screen

1shadow$provide.module$node_modules$graphql$language$lexer = function($_blockStringValue_global$$, $process$$, $require$$, $module$$, $exports$$) {2 function $advanceLexer$$() {3 this.lastToken = this.token;4 return this.token = this.lookahead();5 }6 function $lookahead$$() {7 var $exports$$ = this.token;8 if ($exports$$.kind !== $TokenKind$$.EOF) {9 do {10 $exports$$ = $exports$$.next || ($exports$$.next = $readToken$$(this, $exports$$));11 } while ($exports$$.kind === $TokenKind$$.COMMENT);12 }13 return $exports$$;14 }15 function $Tok$$($exports$$, $require$$, $_error$$, $lookahead$$, $readToken$$, $readDigits$$, $Tok$$) {16 this.kind = $exports$$;17 this.start = $require$$;18 this.end = $_error$$;19 this.line = $lookahead$$;20 this.column = $readToken$$;21 this.value = $Tok$$;22 this.prev = $readDigits$$;23 this.next = null;24 }25 function $printCharCode$$($exports$$) {26 return isNaN($exports$$) ? $TokenKind$$.EOF : 127 > $exports$$ ? JSON.stringify(String.fromCharCode($exports$$)) : '"\\u' + ("00" + $exports$$.toString(16).toUpperCase()).slice(-4) + '"';27 }28 function $readToken$$($exports$$, $require$$) {29 var $lookahead$$ = $exports$$.source, $readToken$$ = $lookahead$$.body, $_blockStringValue_global$$ = $readToken$$.length;30 var $advanceLexer$$ = $readToken$$.length;31 for (var $col_lexer$$ = $require$$.end; $col_lexer$$ < $advanceLexer$$;) {32 var $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = $charCodeAt$$.call($readToken$$, $col_lexer$$);33 if (9 === $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ || 32 === $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ || 44 === $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ || 65279 === $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$) {34 ++$col_lexer$$;35 } else {36 if (10 === $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$) {37 ++$col_lexer$$, ++$exports$$.line, $exports$$.lineStart = $col_lexer$$;38 } else {39 if (13 === $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$) {40 10 === $charCodeAt$$.call($readToken$$, $col_lexer$$ + 1) ? $col_lexer$$ += 2 : ++$col_lexer$$, ++$exports$$.line, $exports$$.lineStart = $col_lexer$$;41 } else {42 break;43 }44 }45 }46 }47 $advanceLexer$$ = $col_lexer$$;48 $col_lexer$$ = $exports$$.line;49 $exports$$ = 1 + $advanceLexer$$ - $exports$$.lineStart;50 if ($advanceLexer$$ >= $_blockStringValue_global$$) {51 return new $Tok$$($TokenKind$$.EOF, $_blockStringValue_global$$, $_blockStringValue_global$$, $col_lexer$$, $exports$$, $require$$);52 }53 $_blockStringValue_global$$ = $charCodeAt$$.call($readToken$$, $advanceLexer$$);54 if (32 > $_blockStringValue_global$$ && 9 !== $_blockStringValue_global$$ && 10 !== $_blockStringValue_global$$ && 13 !== $_blockStringValue_global$$) {55 throw (0, $_error$$.syntaxError)($lookahead$$, $advanceLexer$$, "Cannot contain the invalid character " + $printCharCode$$($_blockStringValue_global$$) + ".");56 }57 switch($_blockStringValue_global$$) {58 case 33:59 return new $Tok$$($TokenKind$$.BANG, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);60 case 35:61 $lookahead$$ = $lookahead$$.body;62 $_blockStringValue_global$$ = $advanceLexer$$;63 do {64 $readToken$$ = $charCodeAt$$.call($lookahead$$, ++$_blockStringValue_global$$);65 } while (null !== $readToken$$ && (31 < $readToken$$ || 9 === $readToken$$));66 return new $Tok$$($TokenKind$$.COMMENT, $advanceLexer$$, $_blockStringValue_global$$, $col_lexer$$, $exports$$, $require$$, $slice$$.call($lookahead$$, $advanceLexer$$ + 1, $_blockStringValue_global$$));67 case 36:68 return new $Tok$$($TokenKind$$.DOLLAR, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);69 case 38:70 return new $Tok$$($TokenKind$$.AMP, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);71 case 40:72 return new $Tok$$($TokenKind$$.PAREN_L, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);73 case 41:74 return new $Tok$$($TokenKind$$.PAREN_R, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);75 case 46:76 if (46 === $charCodeAt$$.call($readToken$$, $advanceLexer$$ + 1) && 46 === $charCodeAt$$.call($readToken$$, $advanceLexer$$ + 2)) {77 return new $Tok$$($TokenKind$$.SPREAD, $advanceLexer$$, $advanceLexer$$ + 3, $col_lexer$$, $exports$$, $require$$);78 }79 break;80 case 58:81 return new $Tok$$($TokenKind$$.COLON, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);82 case 61:83 return new $Tok$$($TokenKind$$.EQUALS, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);84 case 64:85 return new $Tok$$($TokenKind$$.AT, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);86 case 91:87 return new $Tok$$($TokenKind$$.BRACKET_L, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);88 case 93:89 return new $Tok$$($TokenKind$$.BRACKET_R, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);90 case 123:91 return new $Tok$$($TokenKind$$.BRACE_L, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);92 case 124:93 return new $Tok$$($TokenKind$$.PIPE, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);94 case 125:95 return new $Tok$$($TokenKind$$.BRACE_R, $advanceLexer$$, $advanceLexer$$ + 1, $col_lexer$$, $exports$$, $require$$);96 case 65:97 case 66:98 case 67:99 case 68:100 case 69:101 case 70:102 case 71:103 case 72:104 case 73:105 case 74:106 case 75:107 case 76:108 case 77:109 case 78:110 case 79:111 case 80:112 case 81:113 case 82:114 case 83:115 case 84:116 case 85:117 case 86:118 case 87:119 case 88:120 case 89:121 case 90:122 case 95:123 case 97:124 case 98:125 case 99:126 case 100:127 case 101:128 case 102:129 case 103:130 case 104:131 case 105:132 case 106:133 case 107:134 case 108:135 case 109:136 case 110:137 case 111:138 case 112:139 case 113:140 case 114:141 case 115:142 case 116:143 case 117:144 case 118:145 case 119:146 case 120:147 case 121:148 case 122:149 $lookahead$$ = $lookahead$$.body;150 $readToken$$ = $lookahead$$.length;151 $_blockStringValue_global$$ = $advanceLexer$$ + 1;152 for ($JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = 0; $_blockStringValue_global$$ !== $readToken$$ && null !== ($JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = $charCodeAt$$.call($lookahead$$, $_blockStringValue_global$$)) && (95 === $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ || 48 <= $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ && 153 57 >= $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ || 65 <= $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ && 90 >= $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ || 97 <= $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ && 122 >= $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$);) {154 ++$_blockStringValue_global$$;155 }156 return new $Tok$$($TokenKind$$.NAME, $advanceLexer$$, $_blockStringValue_global$$, $col_lexer$$, $exports$$, $require$$, $slice$$.call($lookahead$$, $advanceLexer$$, $_blockStringValue_global$$));157 case 45:158 case 48:159 case 49:160 case 50:161 case 51:162 case 52:163 case 53:164 case 54:165 case 55:166 case 56:167 case 57:168 $readToken$$ = $lookahead$$.body;169 $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = $advanceLexer$$;170 var $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ = !1;171 45 === $_blockStringValue_global$$ && ($_blockStringValue_global$$ = $charCodeAt$$.call($readToken$$, ++$JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$));172 if (48 === $_blockStringValue_global$$) {173 if ($_blockStringValue_global$$ = $charCodeAt$$.call($readToken$$, ++$JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$), 48 <= $_blockStringValue_global$$ && 57 >= $_blockStringValue_global$$) {174 throw (0, $_error$$.syntaxError)($lookahead$$, $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$, "Invalid number, unexpected digit after 0: " + $printCharCode$$($_blockStringValue_global$$) + ".");175 }176 } else {177 $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = $readDigits$$($lookahead$$, $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$, $_blockStringValue_global$$), $_blockStringValue_global$$ = $charCodeAt$$.call($readToken$$, $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$);178 }179 46 === $_blockStringValue_global$$ && ($code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ = !0, $_blockStringValue_global$$ = $charCodeAt$$.call($readToken$$, ++$JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$), $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = $readDigits$$($lookahead$$, $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$, 180 $_blockStringValue_global$$), $_blockStringValue_global$$ = $charCodeAt$$.call($readToken$$, $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$));181 if (69 === $_blockStringValue_global$$ || 101 === $_blockStringValue_global$$) {182 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ = !0;183 $_blockStringValue_global$$ = $charCodeAt$$.call($readToken$$, ++$JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$);184 if (43 === $_blockStringValue_global$$ || 45 === $_blockStringValue_global$$) {185 $_blockStringValue_global$$ = $charCodeAt$$.call($readToken$$, ++$JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$);186 }187 $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = $readDigits$$($lookahead$$, $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$, $_blockStringValue_global$$);188 }189 return new $Tok$$($code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ ? $TokenKind$$.FLOAT : $TokenKind$$.INT, $advanceLexer$$, $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$, $col_lexer$$, $exports$$, $require$$, $slice$$.call($readToken$$, $advanceLexer$$, $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$));190 case 34:191 if (34 === $charCodeAt$$.call($readToken$$, $advanceLexer$$ + 1) && 34 === $charCodeAt$$.call($readToken$$, $advanceLexer$$ + 2)) {192 a: {193 $readToken$$ = $lookahead$$.body;194 $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = $_blockStringValue_global$$ = $advanceLexer$$ + 3;195 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ = 0;196 for (var $a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$ = ""; $_blockStringValue_global$$ < $readToken$$.length && null !== ($code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ = $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$));) {197 if (34 === $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ && 34 === $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$ + 1) && 34 === $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$ + 2)) {198 $a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$ += $slice$$.call($readToken$$, $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$, $_blockStringValue_global$$);199 $require$$ = new $Tok$$($TokenKind$$.BLOCK_STRING, $advanceLexer$$, $_blockStringValue_global$$ + 3, $col_lexer$$, $exports$$, $require$$, (0, $_blockStringValue2$$.default)($a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$));200 break a;201 }202 if (32 > $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ && 9 !== $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ && 10 !== $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ && 13 !== $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$) {203 throw (0, $_error$$.syntaxError)($lookahead$$, $_blockStringValue_global$$, "Invalid character within String: " + $printCharCode$$($code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$) + ".");204 }205 92 === $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ && 34 === $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$ + 1) && 34 === $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$ + 2) && 34 === $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$ + 3) ? ($a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$ += $slice$$.call($readToken$$, $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$, 206 $_blockStringValue_global$$) + '"""', $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = $_blockStringValue_global$$ += 4) : ++$_blockStringValue_global$$;207 }208 throw (0, $_error$$.syntaxError)($lookahead$$, $_blockStringValue_global$$, "Unterminated string.");209 }210 return $require$$;211 }212 a: {213 $readToken$$ = $lookahead$$.body;214 $a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$ = $_blockStringValue_global$$ = $advanceLexer$$ + 1;215 $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = 0;216 for ($code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ = ""; $_blockStringValue_global$$ < $readToken$$.length && null !== ($JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$)) && 10 !== $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ && 13 !== $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$;) {217 if (34 === $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$) {218 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ += $slice$$.call($readToken$$, $a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$, $_blockStringValue_global$$);219 $require$$ = new $Tok$$($TokenKind$$.STRING, $advanceLexer$$, $_blockStringValue_global$$ + 1, $col_lexer$$, $exports$$, $require$$, $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$);220 break a;221 }222 if (32 > $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ && 9 !== $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$) {223 throw (0, $_error$$.syntaxError)($lookahead$$, $_blockStringValue_global$$, "Invalid character within String: " + $printCharCode$$($JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$) + ".");224 }225 ++$_blockStringValue_global$$;226 if (92 === $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$) {227 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ += $slice$$.call($readToken$$, $a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$, $_blockStringValue_global$$ - 1);228 $JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$ = $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$);229 switch($JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$) {230 case 34:231 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ += '"';232 break;233 case 47:234 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ += "/";235 break;236 case 92:237 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ += "\\";238 break;239 case 98:240 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ += "\b";241 break;242 case 102:243 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ += "\f";244 break;245 case 110:246 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ += "\n";247 break;248 case 114:249 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ += "\r";250 break;251 case 116:252 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ += "\t";253 break;254 case 117:255 $a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$ = $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$ + 1);256 var $b$$ = $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$ + 2), $c$$ = $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$ + 3), $d$$ = $charCodeAt$$.call($readToken$$, $_blockStringValue_global$$ + 4);257 $a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$ = $char2hex$$($a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$) << 12 | $char2hex$$($b$$) << 8 | $char2hex$$($c$$) << 4 | $char2hex$$($d$$);258 if (0 > $a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$) {259 throw (0, $_error$$.syntaxError)($lookahead$$, $_blockStringValue_global$$, "Invalid character escape sequence: " + ("\\u" + $readToken$$.slice($_blockStringValue_global$$ + 1, $_blockStringValue_global$$ + 5) + "."));260 }261 $code$jscomp$inline_121_isFloat$jscomp$inline_111_value$$ += String.fromCharCode($a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$);262 $_blockStringValue_global$$ += 4;263 break;264 default:265 throw (0, $_error$$.syntaxError)($lookahead$$, $_blockStringValue_global$$, "Invalid character escape sequence: \\" + String.fromCharCode($JSCompiler_inline_result$jscomp$10_JSCompiler_inline_result$jscomp$9_JSCompiler_temp_const$jscomp$5_prev$$) + ".");266 }267 ++$_blockStringValue_global$$;268 $a$jscomp$inline_362_charCode$jscomp$inline_134_chunkStart$jscomp$inline_131_rawValue$$ = $_blockStringValue_global$$;269 }270 }271 throw (0, $_error$$.syntaxError)($lookahead$$, $_blockStringValue_global$$, "Unterminated string.");272 }273 return $require$$;274 }275 $require$$ = (0, $_error$$.syntaxError);276 $col_lexer$$ = 39 === $_blockStringValue_global$$ ? "Unexpected single quote character ('), did you mean to use a double quote (\")?" : "Cannot parse the unexpected character " + $printCharCode$$($_blockStringValue_global$$) + ".";277 throw $require$$($lookahead$$, $advanceLexer$$, $col_lexer$$);278 }279 function $readDigits$$($exports$$, $require$$, $lookahead$$) {280 var $readToken$$ = $exports$$.body;281 if (48 <= $lookahead$$ && 57 >= $lookahead$$) {282 do {283 $lookahead$$ = $charCodeAt$$.call($readToken$$, ++$require$$);284 } while (48 <= $lookahead$$ && 57 >= $lookahead$$);285 return $require$$;286 }287 throw (0, $_error$$.syntaxError)($exports$$, $require$$, "Invalid number, expected digit but got: " + $printCharCode$$($lookahead$$) + ".");288 }289 function $char2hex$$($exports$$) {290 return 48 <= $exports$$ && 57 >= $exports$$ ? $exports$$ - 48 : 65 <= $exports$$ && 70 >= $exports$$ ? $exports$$ - 55 : 97 <= $exports$$ && 102 >= $exports$$ ? $exports$$ - 87 : -1;291 }292 Object.defineProperty($exports$$, "__esModule", {value:!0});293 $exports$$.TokenKind = void 0;294 $exports$$.createLexer = function($exports$$, $require$$) {295 var $_error$$ = new $Tok$$($TokenKind$$.SOF, 0, 0, 0, 0, null);296 return {source:$exports$$, options:$require$$, lastToken:$_error$$, token:$_error$$, line:1, lineStart:0, advance:$advanceLexer$$, lookahead:$lookahead$$};297 };298 $exports$$.getTokenDesc = function($exports$$) {299 var $require$$ = $exports$$.value;300 return $require$$ ? $exports$$.kind + ' "' + $require$$ + '"' : $exports$$.kind;301 };302 var $_error$$ = $require$$("module$node_modules$graphql$error$index"), $_blockStringValue2$$ = ($_blockStringValue_global$$ = $require$$("module$node_modules$graphql$language$blockStringValue")) && $_blockStringValue_global$$.__esModule ? $_blockStringValue_global$$ : {default:$_blockStringValue_global$$}, $TokenKind$$ = $exports$$.TokenKind = Object.freeze({SOF:"\x3cSOF\x3e", EOF:"\x3cEOF\x3e", BANG:"!", DOLLAR:"$", AMP:"\x26", PAREN_L:"(", PAREN_R:")", SPREAD:"...", COLON:":", EQUALS:"\x3d", 303 AT:"@", BRACKET_L:"[", BRACKET_R:"]", BRACE_L:"{", PIPE:"|", BRACE_R:"}", NAME:"Name", INT:"Int", FLOAT:"Float", STRING:"String", BLOCK_STRING:"BlockString", COMMENT:"Comment"}), $charCodeAt$$ = String.prototype.charCodeAt, $slice$$ = String.prototype.slice;304 $Tok$$.prototype.toJSON = $Tok$$.prototype.inspect = function() {305 return {kind:this.kind, value:this.value, line:this.line, column:this.column};306 };...

Full Screen

Full Screen

sbhighlight.js

Source:sbhighlight.js Github

copy

Full Screen

...31 break;case "CALL":32 output("keyword call");33 //CALL SPRITE and CALL BG34 if(peekWord("SPRITE")||peekWord("BG")){35 readToken("word","keyword");36 //regular CALL37 }else{38 readList(readExpression);39 if(readToken("OUT","keyword"))40 readList(readVariable);41 }42 //COMMON43 break;case "COMMON":44 output("keyword");45 assert(peekToken("DEF"),"COMMON without DEF");46 //DATA47 break;case "DATA":48 output("keyword");49 assert(readList(readExpression,true),"Missing list"); //should read constant expression50 //SWAP51 break;case "SWAP":52 output("keyword");53 assert(readVariable(),"Missing variable in SWAP");54 assert(readToken(","),"Missing comma in SWAP");55 assert(readVariable(),"Missing variable in SWAP");56 //READ57 break;case "READ":58 output("keyword");59 assert(readList(readVariable,true),"Missing list");60 //DEC/INC61 break;case "DEC":case "INC":62 output("keyword");63 assert(readVariable(),"Missing INC/DEC variable");64 if(readToken(",",""))65 assert(readExpression(),"Missing INC/DEC amount");66 //DEF67 break;case "DEF":68 output("keyword");69 //read function name70 assert(readToken("word","declaration function"),"Missing DEF name");71 //() form72 if(readToken("(","")){73 inDef=true;74 //read argument list75 readList(readArgument,true);76 //read )77 assert(readToken(")",""),"Missing \")\" after DEF arguments"78 );79 //subroutine/out form80 }else{81 //read argument list82 readList(readArgument,true);83 //OUT84 if(readToken("OUT","keyword"))85 //read output list86 readList(readArgument,true);87 }88 //VAR89 break;case "VAR":90 //assignment form91 if(peekToken("(")){92 output("var function");93 readToken("(","");94 assert(readExpression(),"Missing var name");95 assert(readToken(")",""),"missing )");96 while(readToken("[","")){97 assert(readList(readExpression,true),"Missing array index");98 assert(readToken("]",""),"Missing \"]\"");99 }100 assert(readToken("=",""),"missing =");101 readExpression();102 //normal form103 }else{104 output("keyword");105 assert(readList(readDeclaration,true),"Missing variable list");106 }107 //DIM108 break;case "DIM":109 output("keyword");110 assert(readList(readDeclaration,true),"Missing variable list");111 //IF, ELSEIF112 break;case "ELSEIF":case "IF":113 output("keyword");114 assert(readExpression(),"Missing IF condition");115 assert(readToken("THEN","keyword")||readToken("GOTO","keyword"),"IF without THEN");116 readToken("label","label");//optional117 //END118 break;case "END":119 output("keyword");120 if(inDef)121 inDef=false;122 //EXEC/USE123 break;case "EXEC":case "USE":124 output("keyword");125 readExpression();126 //FOR127 break;case "FOR":128 output("keyword");129 assert(readVariable(),"Missing FOR variable");130 assert(readToken("=",""),"Missing = in FOR");131 readExpression();132 assert(readToken("word","keyword") && word==="TO","Missing TO in FOR");133 readExpression();134 if(readToken("word") && word==="STEP"){135 output("keyword");136 readExpression();137 }else138 readNext=0; //heck139 //GOSUB GOTO RESTORE(?)140 break;case "GOSUB":case "GOTO":case "RESTORE":141 output("keyword");142 if(!readToken("label","label"))143 assert(readExpression(),"Missing argument to keyword");144 //WHILE, UNTIL145 break;case "UNTIL":case "WHILE": 146 output("keyword");147 assert(readExpression(),"Missing argument to keyword");148 //INPUT149 break;case "INPUT":150 output("keyword");151 readPrintList(readExpression);152 //LINPUT153 break;case "LINPUT":154 output("keyword");155 readPrintList(readExpression);156 //NEXT157 break;case "NEXT":158 output("keyword");159 readExpression();160 //ON161 break;case "ON":162 output("keyword");163 readExpression();164 assert(readToken("GOTO","keyword")||readToken("GOSUB","keyword"),"ON without GOTO/GOSUB");165 assert(readList(readLabel,true),"Missing label list after ON");166 //PRINT167 break;case "PRINT":168 output("keyword");169 readPrintList(readExpression);170 //REM171 break;case "REM":172 output("keyword");173 do{174 next();175 output("comment");176 }while(type!=="linebreak" && type!=="eof");;;177 //RETURN178 break;case "RETURN":179 output("keyword");180 if(inDef)181 readExpression();182 //OUT/THEN183 break;case "OUT":case "THEN":184 output("error");185 assert(false,"Illegal OUT/THEN");186 //other words187 break;case "word":case "(":188 //var name=text;189 readNext=readNext-1;190 var oldWord=word; //this is, the variable name! :D191 switch(readVariable(true)){192 case true:193 assert(readToken("=","equals"),"missing =");194 readExpression();195 break;case false:196 alert("what");197 break;default:198 if(peekToken("=")){199 output("variable");200 readToken("=","equals");201 readExpression();202 }else{203 //HORRIBLE STUPID FAKE KEYWORDS!!!204 //XON/XOFF/OPTION205 // I hate you! :(206 // not nice >:[207 switch(oldWord){208 case "XON":209 output("keyword");210 if(peekToken("word")){211 assert(newWord==="MOTION"||newWord==="EXPAD"||newWord==="MIC"||newWord==="WIIU"||newWord=="COMPAT","invalid option");212 readToken("word","keyword");213 }else{214 //what the [heck] were you THINKING!?!??!215 assert(peekToken("number"),"invalid option");216 assert(/^[ \t]*3$/.test(newText),"invalid option");217 var owo=newText;218 next();219 if(!(peekToken("word") && newWord==="DS")){220 callback(owo,"error");221 assert(false,"invalid option");222 }223 callback(owo,"keyword");224 readToken("word","keyword");225 }226 break;case "XOFF":227 output("keyword");228 assert(peekToken("word"),"invalid option");229 assert(newWord==="MOTION"||newWord==="EXPAD"||newWord==="MIC"||newWord=="COMPAT","invalid option");230 readToken("word","keyword");231 break;case "OPTION":232 output("keyword");233 assert(peekToken("word"),"invalid option");234 assert(newWord==="STRICT"||newWord==="DEFINT"||newWord==="TOOL","invalid option");235 readToken("word","keyword");236 //return to sanity, normal function call!237 break;default:238 output("function");239 readList(readExpression);240 if(readToken("OUT","keyword"))241 readList(readVariable); //------- (fence to stop people from falling off the indent cliff)242 }243 }244 }245 //label246 break;case "label":247 output("label");248 //comment249 break;case "comment":250 output("comment");251 //end252 break;case "eof":253 output("");254 return;255 //line break, colon256 break;case ":":257 output("");258 break;case "linebreak":259 output("linebreak");260 break;default:261 output("error");262 assert(false,"Expected statement, got "+type);263 }264 }catch(error){265 //normal parsing error266 if(error.name==="ParseError"){267 //read until the end of the line268 while(1){269 next();270 if(type==="linebreak"||type=="eof"){271 break;272 }273 output("error");274 }275 if(type==="linebreak")276 callback(text.slice(0,-1),"");277 else278 output("");279 //show error message280 if(showErrors)281 callback(error.message,"errormessage");282 else283 callback("","errormessage");284 if(type==="linebreak")285 output("linebreak");286 //bad error!!!287 }else{288 throw error;289 return;290 }291 }292 }293 294 //check if next token is of a specific type295 function peekToken(wantedType){296 var prevType=type,prevText=text,prevWord=word;297 next();298 readNext=-1;299 newType=type;300 newText=text;301 newWord=word;302 type=prevType;303 text=prevText;304 word=prevWord;305 return newType===wantedType;306 }307 //check if next token is of a specific type308 function peekWord(wantedWord){309 var prevType=type,prevText=text,prevWord=word;310 next();311 readNext=-1;312 newType=type;313 newText=text;314 newWord=word;315 type=prevType;316 text=prevText;317 word=prevWord;318 return newType==="word" && newWord.trimLeft().toUpperCase()===wantedWord;319 }320 321 //Try to read a specific token322 function readToken(wantedType,outputType){323 next();324 if(type===wantedType){325 readNext=1;326 if(outputType!==undefined)327 output(outputType);328 return true;329 }330 readNext=0;331 return false;332 }333 334 //Read list335 //reader: function to read item (readExpression etc.)336 //noNull: throw an error if a null value is found337 function readList(reader,noNull){338 var ret=reader();339 if(readToken(",","")){340 assert(ret||!noNull,"Null value not allowed");341 ret=1;342 do{343 assert(reader()||!noNull,"Null value not allowed");344 }while(readToken(",",""));;;345 }346 return ret;347 }348 349 //read list of PRINT arguments350 function readPrintList(reader){351 if(!reader())352 return;353 while((readToken(",","")||readToken(";",""))&&reader());354 }355 356 function readLabel(){357 return readToken("label","label");358 }359 360 //read normal expression361 function readExpression(){362 var ret=false;363 next();364 switch(type){365 //VAR()366 case "VAR":367 readVar();368 //function or variable369 break;case "word":370 if(peekToken("(")){371 output("function");372 readToken("(","");373 readList(readExpression);374 assert(readToken(")",""),"Missing \")\" in function call");375 }else376 output("variable");377 //CALL()378 break;case "CALL":379 if(peekToken("(")){380 output("function call");381 readToken("(","");382 readList(readExpression);383 assert(readToken(")",""),"Missing \")\" in CALL()");384 ret=true;385 //bad VAR386 }else{387 output("error");388 assert(false,"invalid CALL");389 }390 //literal value391 break;case "number":392 output("number");393 break;case "string":case "label":394 output("string");395 //operator (unary)396 break;case "unary":case "minus":397 output("operator");398 assert(readExpression(),"Missing operator argument");399 //open parenthesis400 break;case "(":401 output("");402 readExpression();403 assert(readToken(")",""),"Missing \")\"");404 //other crap405 break;default:406 readNext=0;407 return false;408 }409 //read []s410 while(readToken("[","")){411 assert(readList(readExpression,true),"Missing array index");412 assert(readToken("]",""),"Missing \"]\"");413 }414 //read infix operators415 while(readToken("operator","operator")||readToken("minus","operator"))416 assert(readExpression(),"Operator missing second argument");417 return true;418 }419 420 //read function definition argument421 function readArgument(){422 if(readToken("word","variable")){423 if(readToken("[",""))424 assert(readToken("]",""),"Missing \"]\"");425 return true;426 }427 return false;428 }429 430 //read variable declaration431 function readDeclaration(){432 if(readToken("word","variable")){433 if(readToken("[","")){434 assert(readList(readExpression,true),"Missing array size");435 assert(readToken("]",""),"Missing \"]\"");436 }else if(readToken("=",""))437 readExpression();438 return true;439 }440 return false;441 }442 443 //read function VAR()444 function readVar(){445 //"function" form of VAR446 if(peekToken("(")){447 output("var function");448 readToken("(","");449 assert(readExpression(),"Missing VAR argument");450 assert(readToken(")",""),"Missing \")\" in VAR()");451 //bad VAR452 }else{453 output("error");454 assert(false,"invalid VAR");455 }456 }457 458 //return values:459 // false - bad460 // true - definitely a variable461 // string - single word (could be function call or variable)462 // if true is passed to function, variable name will not be outputted when it might be a function call (for use in handling =)463 function readVariable(noPrintVarName){464 var ret=false;465 next();466 switch(type){467 case "VAR":468 readVar();469 break;case "word":470 if(!noPrintVarName){471 output("variable");472 ret=true;473 }else474 ret=text;475 break;case "(":476 output("");477 assert(readVariable(),"missing variable");478 assert(readToken(")",""),"missing )");479 ret=true;480 break;default:481 readNext=0;482 return false;483 }484 if(peekToken("[")){485 if(ret!==true && ret!==false)486 output("variable");487 while(readToken("[","")){488 assert(readList(readExpression,true),"Missing array index");489 assert(readToken("]",""),"Missing \"]\"");490 }491 ret=true;492 }493 return ret;494 }495 496 //throw error with message if condition is false497 function assert(condition,message){498 if(!condition){499 console.log(message);500 var error=new Error(message);501 error.name="ParseError";502 throw error;503 } ...

Full Screen

Full Screen

msgpack.js

Source:msgpack.js Github

copy

Full Screen

1const Buffer = require('./buffer').Buffer2module.exports = (function() {3 var __MODS__ = {};4 var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };5 var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };6 var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };7 var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };8 __DEFINE__(1578039707142, function(require, module, exports) {9 10 var BufferUtil = require('./lib/buffer-util');11 12 BufferUtil.toString = function (buffer, start, end) {13 return Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength)14 .toString('utf8', start, end);15 };16 BufferUtil.fromString = function (string) {17 var buffer = Buffer.from(string);18 return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);19 };20 21 module.exports = require('./lib/msgpack');22 23 }, function(modId) {var map = {"./lib/buffer-util":1578039707143,"./lib/msgpack":1578039707144}; return __REQUIRE__(map[modId], modId); })24 __DEFINE__(1578039707143, function(require, module, exports) {25 26 27 // The given argument must be an array of Uint8Arrays.28 exports.concat = function (buffers) {29 var bufferCount = buffers.length;30 var totalLength = 0;31 for (var i=0; i<bufferCount; ++i) {32 totalLength += buffers[i].byteLength;33 }34 var output = new Uint8Array(totalLength);35 var offset = 0;36 for (var i=0; i<bufferCount; ++i) {37 var buffer = buffers[i];38 output.set(buffer, offset);39 offset += buffer.byteLength;40 }41 return output;42 };43 44 // The first argument must be a Uint8Array.45 // Start and end indices will be clamped to the range of the given Uint8Array.46 exports.subarray = function (buffer, start, end) {47 start = Math.min(Math.max(0, start), buffer.byteLength);48 return new Uint8Array(buffer.buffer,49 buffer.byteOffset + start,50 Math.min(Math.max(start, end), buffer.byteLength) - start51 );52 };53 54 }, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })55 __DEFINE__(1578039707144, function(require, module, exports) {56 57 var Codec = require('./codec');58 var Paper = require('./paper');59 var encode = require('./encode');60 var decode = require('./decode');61 62 exports.encode = function (input, codec) {63 if (codec != null && !(codec instanceof Codec)) {64 throw new TypeError('Expected second argument to be a Codec, if provided.');65 }66 var encoder = new Paper(codec);67 encode(encoder, input);68 return encoder.read();69 };70 exports.decode = function (input, codec) {71 if (codec != null && !(codec instanceof Codec)) {72 throw new TypeError('Expected second argument to be a Codec, if provided.');73 }74 if (!(input instanceof Uint8Array)) {75 throw new TypeError('Expected first argument to be a Uint8Array.');76 }77 var decoder = new Paper(codec);78 decoder.setBuffer(input);79 return decode(decoder);80 };81 exports.Codec = Codec;82 83 }, function(modId) { var map = {"./codec":1578039707145,"./paper":1578039707146,"./encode":1578039707147,"./decode":1578039707149}; return __REQUIRE__(map[modId], modId); })84 __DEFINE__(1578039707145, function(require, module, exports) {85 86 function Codec() {87 if (!(this instanceof Codec)) {88 throw new TypeError('Codecs must be constructed with the "new" keyword.');89 }90 this._packers = [];91 this._packerClasses = [];92 this._unpackers = {};93 }94 Codec.prototype.register = function (etype, Class, packer, unpacker) {95 if (Array.isArray(packer)) {96 packer = join(packer);97 }98 if (Array.isArray(unpacker)) {99 unpacker = join(unpacker);100 }101 if (~~etype !== etype || !(etype >= 0 && etype < 128)) {102 throw new TypeError('Invalid extension type (must be between 0 and 127).');103 }104 if (typeof Class !== 'function') {105 throw new TypeError('Expected second argument to be a constructor function.');106 }107 this._packers.push(function (value) {108 var buffer = packer(value);109 if (!(buffer instanceof Uint8Array)) {110 throw new TypeError('Codec must return a Uint8Array (encoding "' + Class.name + '").');111 }112 return new ExtensionBuffer(buffer, etype);113 });114 this._packerClasses.push(Class);115 this._unpackers[etype] = unpacker;116 return this;117 };118 Codec.prototype._packerFor = function (value) {119 return getPacker(value.constructor, this._packerClasses, this._packers);120 };121 Codec.prototype._unpackerFor = function (etype) {122 return this._unpackers[etype];123 };124 module.exports = Codec;125 126 // This is isolated for optimization purposes.127 var getPacker = function (constructor, classes, packers) {128 for (var i=0, len=classes.length; i<len; ++i) {129 if (constructor === classes[i]) {130 return packers[i];131 }132 }133 };134 135 var join = function (filters) {136 filters = filters.slice();137 var iterator = function (value, filter) {138 return filter(value);139 };140 return function (value) {141 return filters.reduce(iterator, value);142 };143 };144 145 var ExtensionBuffer = function (buffer, etype) {146 this.buffer = buffer;147 this.etype = etype;148 };149 150 }, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })151 __DEFINE__(1578039707146, function(require, module, exports) {152 153 var BufferUtil = require('./buffer-util');154 var MIN_BUFFER_SIZE = 2048;155 var MAX_BUFFER_SIZE = 65536;156 157 var Paper = function (codec) {158 this.codec = codec;159 };160 Paper.prototype.push = function (chunk) {161 var buffers = this.buffers || (this.buffers = []);162 buffers.push(chunk);163 };164 Paper.prototype.read = function () {165 this.flush();166 var buffers = this.buffers;167 if (buffers) {168 var chunk = buffers.length > 1 ? BufferUtil.concat(buffers) : buffers[0];169 buffers.length = 0;170 return chunk;171 }172 };173 Paper.prototype.flush = function () {174 if (this.start < this.offset) {175 this.push(BufferUtil.subarray(this.buffer, this.start, this.offset));176 this.start = this.offset;177 }178 };179 Paper.prototype.reserve = function (length) {180 if (!this.buffer) {181 return this.alloc(length);182 }183 var size = this.buffer.byteLength;184 // Does it need to be resized?185 if (this.offset + length > size) {186 // Flush current buffer.187 this.offset && this.flush();188 // Resize it to 2x current length.189 this.alloc(Math.max(length, Math.min(size * 2, MAX_BUFFER_SIZE)));190 }191 };192 Paper.prototype.alloc = function (length) {193 this.setBuffer(new Uint8Array(Math.max(length, MIN_BUFFER_SIZE)));194 };195 Paper.prototype.setBuffer = function (buffer) {196 this.buffer = buffer;197 this.offset = 0;198 this.start = 0;199 };200 Paper.prototype.send = function (buffer) {201 var end = this.offset + buffer.byteLength;202 if (this.buffer && end <= this.buffer.byteLength) {203 this.buffer.set(buffer, this.offset);204 this.offset = end;205 } else {206 this.flush();207 this.push(buffer);208 }209 };210 module.exports = Paper;211 212 }, function(modId) { var map = {"./buffer-util":1578039707143}; return __REQUIRE__(map[modId], modId); })213 __DEFINE__(1578039707147, function(require, module, exports) {214 215 var writeType = {};216 217 var encode = module.exports = function (encoder, value) {218 writeType[typeof value](encoder, value);219 };220 221 // Fills the writeType hash with functions that each encode values of their222 // respective types at the given Paper's offset.223 (function (write, fromString) {224 225 var float32Buffer = new Float32Array(1);226 var isFloat32 = function (num) {227 float32Buffer[0] = num;228 return float32Buffer[0] === num;229 };230 231 writeType.number = function (encoder, value) {232 var uivalue = value >>> 0;233 if (value === uivalue) {234 // positive fixint -- 0x00 - 0x7f235 // uint 8 -- 0xcc236 // uint 16 -- 0xcd237 // uint 32 -- 0xce238 uivalue <= 0x7f ? write.type(encoder, uivalue) :239 uivalue <= 0xff ? write.int8(encoder, 0xcc, uivalue) :240 uivalue <= 0xffff ? write.int16(encoder, 0xcd, uivalue) :241 write.int32(encoder, 0xce, uivalue);242 } else {243 var ivalue = value | 0;244 if (value === ivalue) {245 // negative fixint -- 0xe0 - 0xff246 // int 8 -- 0xd0247 // int 16 -- 0xd1248 // int 32 -- 0xd2249 ivalue >= -0x20 ? write.type(encoder, ivalue & 0xff) :250 ivalue >= -0x80 ? write.int8(encoder, 0xd0, ivalue) :251 ivalue >= -0x8000 ? write.int16(encoder, 0xd1, ivalue) :252 write.int32(encoder, 0xd2, ivalue);253 } else {254 isFloat32(value)255 ? write.float32(encoder, value) // float 32 -- 0xca256 : write.float64(encoder, value); // float 64 -- 0xcb257 }258 }259 };260 261 writeType.string = function (encoder, value) {262 var utf8 = fromString(value);263 var byteLength = utf8.byteLength;264 265 // fixstr -- 0xa0 - 0xbf266 // str 8 -- 0xd9267 // str 16 -- 0xda268 // str 32 -- 0xdb269 byteLength < 32 ? write.type(encoder, 0xa0 + byteLength) :270 byteLength <= 0xff ? write.int8(encoder, 0xd9, byteLength) :271 byteLength <= 0xffff ? write.int16(encoder, 0xda, byteLength) :272 write.int32(encoder, 0xdb, byteLength);273 274 encoder.send(utf8);275 };276 277 writeType.boolean = function (encoder, value) {278 // false -- 0xc2279 // true -- 0xc3280 write.type(encoder, value ? 0xc3 : 0xc2);281 };282 283 writeType.object = function (encoder, value) {284 var packer;285 if (value === null) return nil(encoder, value);286 if (Array.isArray(value)) return array(encoder, value);287 if (value instanceof Uint8Array) return bin(encoder, value);288 if (encoder.codec && (packer = encoder.codec._packerFor(value))) {289 return ext(encoder, packer(value));290 }291 map(encoder, value);292 };293 294 var nil = function (encoder) {295 // nil -- 0xc0296 write.type(encoder, 0xc0);297 };298 299 var array = function (encoder, value) {300 var length = value.length;301 302 // fixarray -- 0x90 - 0x9f303 // array 16 -- 0xdc304 // array 32 -- 0xdd305 length < 16 ? write.type(encoder, 0x90 + length) :306 length <= 0xffff ? write.int16(encoder, 0xdc, length) :307 write.int32(encoder, 0xdd, length);308 309 for (var i=0; i<length; ++i) {310 encode(encoder, value[i]);311 }312 };313 314 var bin = function (encoder, value) {315 var byteLength = value.byteLength;316 317 // bin 8 -- 0xc4318 // bin 16 -- 0xc5319 // bin 32 -- 0xc6320 byteLength <= 0xff ? write.int8(encoder, 0xc4, byteLength) :321 byteLength <= 0xffff ? write.int16(encoder, 0xc5, byteLength) :322 write.int32(encoder, 0xc6, byteLength);323 324 encoder.send(value);325 };326 327 var ext = function (encoder, value) {328 var byteLength = value.buffer.byteLength;329 330 // fixext 1 -- 0xd4331 // fixext 2 -- 0xd5332 // fixext 4 -- 0xd6333 // fixext 8 -- 0xd7334 // fixext 16 -- 0xd8335 // ext 8 -- 0xc7336 // ext 16 -- 0xc8337 // ext 32 -- 0xc9338 byteLength === 1 ? write.int8(encoder, 0xd4, value.etype) :339 byteLength === 2 ? write.int8(encoder, 0xd5, value.etype) :340 byteLength === 4 ? write.int8(encoder, 0xd6, value.etype) :341 byteLength === 8 ? write.int8(encoder, 0xd7, value.etype) :342 byteLength === 16 ? write.int8(encoder, 0xd8, value.etype) :343 byteLength <= 0xff ? (write.int8(encoder, 0xc7, byteLength), write.type(encoder, value.etype)) :344 byteLength <= 0xffff ? (write.int16(encoder, 0xc8, byteLength), write.type(encoder, value.etype)) :345 (write.int32(encoder, 0xc9, byteLength), write.type(encoder, value.etype));346 347 encoder.send(value.buffer);348 };349 350 var map = function (encoder, value) {351 var keys = Object.keys(value);352 var length = keys.length;353 354 // fixmap -- 0x80 - 0x8f355 // map 16 -- 0xde356 // map 32 -- 0xdf357 length < 16 ? write.type(encoder, 0x80 + length) :358 length <= 0xffff ? write.int16(encoder, 0xde, length) :359 write.int32(encoder, 0xdf, length);360 361 for (var i=0; i<length; ++i) {362 var key = keys[i];363 (key >>> 0) + '' === key ? encode(encoder, key >>> 0) : encode(encoder, key);364 encode(encoder, value[key]);365 }366 };367 368 writeType.undefined = nil;369 writeType.function = nil;370 writeType.symbol = nil;371 }(require('./write-header'), require('./buffer-util').fromString));372 373 }, function(modId) { var map = {"./write-header":1578039707148,"./buffer-util":1578039707143}; return __REQUIRE__(map[modId], modId); })374 __DEFINE__(1578039707148, function(require, module, exports) {375 376 377 exports.type = function (encoder, type) {378 encoder.reserve(1);379 encoder.buffer[encoder.offset++] = type;380 };381 exports.int8 = function (encoder, type, value) {382 encoder.reserve(2);383 var buffer = encoder.buffer;384 buffer[encoder.offset++] = type;385 buffer[encoder.offset++] = value;386 };387 exports.int16 = function (encoder, type, value) {388 encoder.reserve(3);389 var buffer = encoder.buffer;390 buffer[encoder.offset++] = type;391 buffer[encoder.offset++] = value >>> 8;392 buffer[encoder.offset++] = value;393 };394 exports.int32 = function (encoder, type, value) {395 encoder.reserve(5);396 var buffer = encoder.buffer;397 buffer[encoder.offset++] = type;398 buffer[encoder.offset++] = value >>> 24;399 buffer[encoder.offset++] = value >>> 16;400 buffer[encoder.offset++] = value >>> 8;401 buffer[encoder.offset++] = value;402 };403 exports.float32 = function (encoder, value) {404 encoder.reserve(5);405 var buffer = encoder.buffer;406 buffer[encoder.offset++] = 0xca;407 new DataView(buffer.buffer).setFloat32(buffer.byteOffset + encoder.offset, value);408 encoder.offset += 4;409 };410 exports.float64 = function (encoder, value) {411 encoder.reserve(9);412 var buffer = encoder.buffer;413 buffer[encoder.offset++] = 0xcb;414 new DataView(buffer.buffer).setFloat64(buffer.byteOffset + encoder.offset, value);415 encoder.offset += 8;416 };417 418 }, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })419 __DEFINE__(1578039707149, function(require, module, exports) {420 421 module.exports = function (decoder) {422 var type = readUint8(decoder);423 var func = readToken[type];424 if (!func) {425 throw new Error('Invalid type: ' + (type ? ('0x' + type.toString(16)) : type));426 }427 return func(decoder);428 };429 430 // Dependencies are loaded after exporting, to satisfy the required load order.431 var readUint8 = require('./read-format').uint8;432 var readToken = new Array(256);433 434 // Fills the readToken array with functions that each return their decoded435 // interpretation of the bytes at the given Paper's offset.436 (function (read) {437 var i;438 439 // Creates a readToken function that returns a constant value.440 var constant = function (value) {441 return function () {442 return value;443 };444 };445 446 // Transforms the given method to always receive a second argument, which is447 // a number constant.448 var fix = function (len, method) {449 return function (decoder) {450 return method(decoder, len);451 };452 };453 454 // Transforms the given method to always receive a second argument, which is455 // a number returned by lenFunc when given a Paper.456 var flex = function (lenFunc, method) {457 return function (decoder) {458 return method(decoder, lenFunc(decoder));459 };460 };461 462 // positive fixint -- 0x00 - 0x7f463 for (i=0x00; i<=0x7f; ++i) {464 readToken[i] = constant(i);465 }466 467 // fixmap -- 0x80 - 0x8f468 for (i=0x80; i<=0x8f; ++i) {469 readToken[i] = fix(i - 0x80, read.map);470 }471 472 // fixarray -- 0x90 - 0x9f473 for (i=0x90; i<=0x9f; ++i) {474 readToken[i] = fix(i - 0x90, read.array);475 }476 477 // fixstr -- 0xa0 - 0xbf478 for (i=0xa0; i<=0xbf; ++i) {479 readToken[i] = fix(i - 0xa0, read.str);480 }481 482 // nil -- 0xc0483 readToken[0xc0] = constant(null);484 485 // (never used) -- 0xc1486 readToken[0xc1] = null;487 488 // false -- 0xc2489 // true -- 0xc3490 readToken[0xc2] = constant(false);491 readToken[0xc3] = constant(true);492 493 // bin 8 -- 0xc4494 // bin 16 -- 0xc5495 // bin 32 -- 0xc6496 readToken[0xc4] = flex(read.uint8, read.bin);497 readToken[0xc5] = flex(read.uint16, read.bin);498 readToken[0xc6] = flex(read.uint32, read.bin);499 500 // ext 8 -- 0xc7501 // ext 16 -- 0xc8502 // ext 32 -- 0xc9503 readToken[0xc7] = flex(read.uint8, read.ext);504 readToken[0xc8] = flex(read.uint16, read.ext);505 readToken[0xc9] = flex(read.uint32, read.ext);506 507 // float 32 -- 0xca508 // float 64 -- 0xcb509 readToken[0xca] = read.float32;510 readToken[0xcb] = read.float64;511 512 // uint 8 -- 0xcc513 // uint 16 -- 0xcd514 // uint 32 -- 0xce515 // uint 64 -- 0xcf516 readToken[0xcc] = read.uint8;517 readToken[0xcd] = read.uint16;518 readToken[0xce] = read.uint32;519 readToken[0xcf] = null;520 521 // int 8 -- 0xd0522 // int 16 -- 0xd1523 // int 32 -- 0xd2524 // int 64 -- 0xd3525 readToken[0xd0] = read.int8;526 readToken[0xd1] = read.int16;527 readToken[0xd2] = read.int32;528 readToken[0xd3] = null;529 530 // fixext 1 -- 0xd4531 // fixext 2 -- 0xd5532 // fixext 4 -- 0xd6533 // fixext 8 -- 0xd7534 // fixext 16 -- 0xd8535 readToken[0xd4] = fix(1, read.ext);536 readToken[0xd5] = fix(2, read.ext);537 readToken[0xd6] = fix(4, read.ext);538 readToken[0xd7] = fix(8, read.ext);539 readToken[0xd8] = fix(16, read.ext);540 541 // str 8 -- 0xd9542 // str 16 -- 0xda543 // str 32 -- 0xdb544 readToken[0xd9] = flex(read.uint8, read.str);545 readToken[0xda] = flex(read.uint16, read.str);546 readToken[0xdb] = flex(read.uint32, read.str);547 548 // array 16 -- 0xdc549 // array 32 -- 0xdd550 readToken[0xdc] = flex(read.uint16, read.array);551 readToken[0xdd] = flex(read.uint32, read.array);552 553 // map 16 -- 0xde554 // map 32 -- 0xdf555 readToken[0xde] = flex(read.uint16, read.map);556 readToken[0xdf] = flex(read.uint32, read.map);557 558 // negative fixint -- 0xe0 - 0xff559 for (i=0xe0; i<=0xff; ++i) {560 readToken[i] = constant(i - 0x100);561 }562 }(require('./read-format')));563 564 }, function(modId) { var map = {"./read-format":1578039707150}; return __REQUIRE__(map[modId], modId); })565 __DEFINE__(1578039707150, function(require, module, exports) {566 567 var BufferUtil = require('./buffer-util');568 var decode = require('./decode');569 570 var map = function (decoder, len) {571 var value = {};572 for (var i=0; i<len; ++i) {573 value[decode(decoder)] = decode(decoder);574 }575 return value;576 };577 578 var array = function (decoder, len) {579 var value = new Array(len);580 for (var i=0; i<len; ++i) {581 value[i] = decode(decoder);582 }583 return value;584 };585 586 var str = function (decoder, len) {587 var start = decoder.offset;588 var end = decoder.offset = start + len;589 if (end > decoder.buffer.byteLength) throw new RangeError('BUFFER_SHORTAGE');590 return BufferUtil.toString(decoder.buffer, start, end);591 };592 593 var bin = function (decoder, len) {594 var start = decoder.offset;595 var end = decoder.offset = start + len;596 if (end > decoder.buffer.byteLength) throw new RangeError('BUFFER_SHORTAGE');597 return BufferUtil.subarray(decoder.buffer, start, end);598 };599 600 var ext = function (decoder, len) {601 var start = decoder.offset;602 var end = decoder.offset = start + len + 1;603 if (end > decoder.buffer.byteLength) throw new RangeError('BUFFER_SHORTAGE');604 var etype = decoder.buffer[start];605 var unpacker;606 if (decoder.codec && (unpacker = decoder.codec._unpackerFor(etype))) {607 return unpacker(BufferUtil.subarray(decoder.buffer, start + 1, end));608 }609 throw new Error('Unrecognized extension type: ' + (etype ? ('0x' + etype.toString(16)) : etype));610 };611 612 var uint8 = function (decoder) {613 var buffer = decoder.buffer;614 if (decoder.offset >= buffer.byteLength) throw new RangeError('BUFFER_SHORTAGE');615 return buffer[decoder.offset++];616 };617 618 var uint16 = function (decoder) {619 var buffer = decoder.buffer;620 if (decoder.offset + 2 > buffer.byteLength) throw new RangeError('BUFFER_SHORTAGE');621 return (buffer[decoder.offset++] << 8) | buffer[decoder.offset++];622 };623 624 var uint32 = function (decoder) {625 var buffer = decoder.buffer;626 if (decoder.offset + 4 > buffer.byteLength) throw new RangeError('BUFFER_SHORTAGE');627 return (buffer[decoder.offset++] * 0x1000000) +628 ((buffer[decoder.offset++] << 16) |629 (buffer[decoder.offset++] << 8) |630 buffer[decoder.offset++]);631 };632 633 var int8 = function (decoder) {634 var val = uint8(decoder);635 return !(val & 0x80) ? val : (0xff - val + 1) * -1;636 };637 638 var int16 = function (decoder) {639 var val = uint16(decoder);640 return (val & 0x8000) ? val | 0xFFFF0000 : val;641 };642 643 var int32 = function (decoder) {644 var buffer = decoder.buffer;645 if (decoder.offset + 4 > buffer.byteLength) throw new RangeError('BUFFER_SHORTAGE');646 return (buffer[decoder.offset++] << 24) |647 (buffer[decoder.offset++] << 16) |648 (buffer[decoder.offset++] << 8) |649 buffer[decoder.offset++];650 };651 652 var float32 = function (decoder) {653 var buffer = decoder.buffer;654 var offset = decoder.offset;655 decoder.offset += 4;656 return new DataView(buffer.buffer).getFloat32(buffer.byteOffset + offset);657 };658 659 var float64 = function (decoder) {660 var buffer = decoder.buffer;661 var offset = decoder.offset;662 decoder.offset += 8;663 return new DataView(buffer.buffer).getFloat64(buffer.byteOffset + offset);664 };665 666 module.exports = {667 map: map,668 array: array,669 str: str,670 bin: bin,671 ext: ext,672 uint8: uint8,673 uint16: uint16,674 uint32: uint32,675 int8: int8,676 int16: int16,677 int32: int32,678 float32: float32,679 float64: float64680 };681 682 }, function(modId) { var map = {"./buffer-util":1578039707143,"./decode":1578039707149}; return __REQUIRE__(map[modId], modId); })683 return __REQUIRE__(1578039707142);684 })()...

Full Screen

Full Screen

sbhighlight3.js

Source:sbhighlight3.js Github

copy

Full Screen

...23 output("keyword");24 break;case "CALL":25 output("keyword");26 readList(readExpression);27 if(readToken("OUT","keyword"))28 readList(readVariable);29 //COMMON30 break;case "COMMON":31 output("keyword");32 assert(peekToken("DEF"),"COMMON without DEF");33 //DATA, DEC, INC, READ, SWAP34 break;case "DATA":case "READ":case "SWAP":35 output("keyword");36 assert(readList(readExpression,true),"Missing list");37 break;case "DEC":case "INC":38 output("keyword");39 assert(readVariable(),"Missing INC/DEC variable");40 if(readToken(",","separator"))41 assert(readExpression(),"Missing INC/DEC amount");42 //DEF43 break;case "DEF":44 output("keyword");45 assert(!isDef,"Nested DEF");46 isDef=true;47 //read function name48 assert(readToken("word","function"),"Missing DEF name");49 //() form50 if(readToken("(","separator")){51 //read argument list52 readList(readArgument,true);53 //read )54 assert(readToken(")","separator"),"Missing \")\" after DEF arguments"55 );56 //subroutine/out form57 }else{58 //read argument list59 readList(readArgument,true);60 //OUT61 if(readToken("OUT","keyword"))62 //read output list63 readList(readArgument,true);64 }65 //VAR66 break;case "VAR":67 output("keyword");68 //assignment form69 if(readToken("(","separator")){70 assert(readExpression(),"Missing var name");71 assert(readToken(")","separator"),"missing )")72 while(readToken("[","separator")){73 assert(readList(readExpression,true),"Missing array index");74 assert(readToken("]","separator"),"Missing \"]\"");75 }76 assert(readToken("=","separator"),"missing =")77 readExpression();78 //normal form79 }else80 assert(readList(readDeclaration,true),"Missing variable list");81 //DIM82 break;case "DIM":83 output("keyword");84 assert(readList(readDeclaration,true),"Missing variable list");85 //IF, ELSEIF86 break;case "ELSEIF":case "IF":87 output("keyword");88 assert(readExpression(),"Missing IF condition");89 assert(readToken("THEN","keyword")||readToken("GOTO","keyword"),"IF without THEN");90 readToken("label","label");//optional91 //END92 break;case "END":93 output("keyword");94 if(isDef)95 isDef=false;96 //EXEC/USE97 break;case "EXEC":case "USE":98 output("keyword");99 readExpression();100 //FOR101 break;case "FOR":102 output("keyword");103 assert(readVariable(),"Missing FOR variable");104 assert(readToken("=","separator"),"Missing = in FOR");105 readExpression();106 assert(readToken("word") && text.toUpperCase().trimLeft()==="TO","Missing TO in FOR");107 output("keyword");108 readExpression();109 if(readToken("word") && text.toUpperCase().trimLeft()==="STEP"){110 output("keyword");111 readExpression();112 }else113 readNext=0;114 //GOSUB GOTO RESTORE(?)115 break;case "GOSUB":case "GOTO":case "RESTORE":116 output("keyword");117 if(!readToken("label","label"))118 assert(readExpression(),"Missing argument to keyword");119 //WHILE, UNTIL120 break;case "UNTIL":case "WHILE": 121 output("keyword");122 assert(readExpression(),"Missing argument to keyword");123 //INPUT124 break;case "INPUT":125 output("keyword");126 readPrintList(readExpression);127 //LINPUT128 break;case "LINPUT":129 output("keyword");130 readPrintList(readExpression);131 //NEXT132 break;case "NEXT":133 output("keyword");134 readExpression();135 //ON136 break;case "ON":137 output("keyword");138 readExpression();139 assert(readToken("GOTO","keyword")||readToken("GOSUB","keyword"),"ON without GOTO/GOSUB");140 assert(readList(readExpression,true),"Missing label list after ON");141 //PRINT142 break;case "PRINT":143 output("keyword");144 readPrintList(readExpression,true);145 //REM146 break;case "REM":147 output("keyword");148 do{149 next();150 output("comment");151 }while(type!=="linebreak" && type!=="eof");;;152 //RETURN153 break;case "RETURN":154 output("keyword");155 if(isDef)156 readExpression();157 //OUT/THEN158 break;case "OUT":case "THEN":159 output("error");160 assert(false,"Illegal OUT/THEN");161 //other words162 break;case "word":case "(":163 //var name=text;164 readNext=readNext-1;165 switch(readVariable(true)){166 case true:167 assert(readToken("=","equals"),"missing =");168 readExpression();169 break;case false:170 alert("what");171 break;default:172 if(peekToken("=")){173 output("variable");174 readToken("=","equals");175 readExpression();176 }else{177 output("function");178 readList(readExpression);179 if(readToken("OUT","keyword"))180 readList(readVariable);181 }182 }183 //label184 break;case "label":185 output("label");186 //comment187 break;case "comment":188 output("comment");189 //end190 break;case "eof":191 return;192 //line break, colon193 break;case "linebreak":case ":":194 output("separator");195 //other196 break;default:197 output("error");198 assert(false,"Expected statement, got "+type);199 }200 }catch(error){201 if(error.name==="ParseError"){202 while(1){203 next();204 if(type==="linebreak"||type=="eof"){205 break;206 }207 output("error");208 }209 callback("errormessage",error.message);210 output("text"); //line break211 }else{212 alert("real actual error!!! "+error);213 return;214 }215 }216 }217 218 function peekToken(wantedType){219 var prevType=type,prevText=text;220 next();221 readNext=-1;222 newType=type;223 newText=text;224 type=prevType;225 text=prevText;226 return newType===wantedType;227 }228 229 function readToken(wantedType,outputType){ //add "output type" too!230 next();231 if(type===wantedType){232 readNext=1;233 if(outputType)234 output(outputType);235 return true;236 }237 readNext=0;238 return false;239 }240 241 function readList(reader,noNull){242 var ret=reader();243 if(readToken(",","separator")){244 assert(ret||!noNull,"Null value not allowed");245 ret=1;246 do{247 assert(reader()||!noNull,"Null value not allowed");248 }while(readToken(",","separator"));;;249 }250 return ret;251 }252 253 function readPrintList(reader){254 var ret=false;255 if(!reader())256 return;257 while((readToken(",","separator")||readToken(";","separator"))&&reader());258 }259 260 function readExpression(){261 next();262 switch(type){263 //VAR264 case "VAR":265 readVar();266 //function or variable267 break;case "word":268 if(peekToken("(")){269 output("function");270 readToken("(","separator");271 readList(readExpression);272 assert(readToken(")","separator"),"Missing \")\" in function call");273 }else{274 output("variable");275 }276 //literal value277 break;case "number":case "string":case "label":278 output(type);279 //operator (unary)280 break;case "unary":case "minus":281 output("operator");282 assert(readExpression(),"Missing operator argument");283 //open parenthesis284 break;case "(":285 output("separator");286 readExpression();287 assert(readToken(")","separator"),"Missing \")\"");288 //other crap289 break;default:290 readNext=0;291 return false;292 }293 //read []s294 while(readToken("[","separator")){295 assert(readList(readExpression,true),"Missing array index");296 assert(readToken("]","separator"),"Missing \"]\"");297 }298 //read infix operators299 while(readToken("operator","operator")||readToken("minus","operator"))300 assert(readExpression(),"Operator missing second argument");301 return true;302 }303 304 function readArgument(){305 if(readToken("word","variable")){306 if(readToken("[","separator"))307 assert(readToken("]","separator"),"Missing \"]\"");308 return true;309 }310 return false;311 }312 313 function readDeclaration(){314 if(readToken("word","variable")){315 if(readToken("[","separator")){316 assert(readList(readExpression,true),"Missing array size");317 assert(readToken("]","separator"),"Missing \"]\"");318 }else if(readToken("=","separator"))319 readExpression();320 return true;321 }322 return false;323 }324 325 function readVar(){326 //"function" form of VAR327 if(peekToken("(")){328 output("keyword");329 readToken("(","separator");330 assert(readExpression(),"Missing VAR argument");331 assert(readToken(")","separator"),"Missing \")\" in VAR()");332 ret=true;333 //bad VAR334 }else{335 output("error");336 assert(false,"invalid VAR");337 }338 }339 340 //return values:341 // false - bad342 // true - definitely a variable343 // string - single word (could be function call or variable)344 // if true is passed to function, variable name will not be outputted when it might be a function call (for use in handling =)345 function readVariable(noPrintVarName){346 var ret=false;347 next();348 switch(type){349 case "VAR":350 readVar();351 break;case "word":352 if(!noPrintVarName){353 output("variable");354 ret=true;355 }else356 ret=text;357 break;case "(":358 output("separator");359 assert(readVariable(),"missing variable");360 assert(readToken(")","separator"),"missing )");361 ret=true;362 break;default:363 readNext=0;364 return false;365 }366 if(peekToken("[")){367 if(ret!==true && ret!==false)368 output("variable");369 while(readToken("[","separator")){370 assert(readList(readExpression,true),"Missing array index");371 assert(readToken("]","separator"),"Missing \"]\"");372 }373 ret=true;374 }375 return ret;376 }377 378 function assert(value,message){379 if(!value){380 console.log(message);381 var error=new Error(message);382 error.name="ParseError";383 throw error;384 }385 } ...

Full Screen

Full Screen

parser.js

Source:parser.js Github

copy

Full Screen

...116 //SWAP117 break;case "SWAP":118 current.type="SWAP";119 assert(current.variable=readVariable(),"Missing variable in SWAP");120 assert(readToken(","),"Missing comma in SWAP");121 assert(current.variable2=readVariable(),"Missing variable in SWAP");122 //IF, ELSEIF123 break;case "ELSEIF":124 assert(currentBlock().type=="IF"||currentBlock().type=="ELSEIF","ELSEIF without IF");125 endBlock();126 current.type="ELSEIF"127 current.condition=readExpression();128 assert(readToken("THEN"),"ELSEIF without THEN");129 startBlock();130 break;case "IF":131 current.type="IF"132 assert(current.condition=readExpression(),"Missing IF condition");133 assert(readToken("THEN"),"IF without THEN");134 startBlock();135 ifThisLine=true;136 codeAfterThen=false;137 //FOR138 break;case "FOR":139 current.type="FOR";140 assert(current.variable=readVariable(),"Missing FOR variable");141 assert(readToken("="),"Missing = in FOR");142 current.start=readExpression();143 assert(readToken("word") && word==="TO","Missing TO in FOR");144 current.end=readExpression();145 if(readToken("word") && word==="STEP")146 current.step=readExpression();147 else148 readNext=0; //heck149 startBlock();150 //WHILE <condition>151 break;case "WHILE":152 current.type="WHILE"153 assert(current.condition=readExpression(),"Missing argument to keyword");154 startBlock();155 break;case "WEND":156 assert(currentBlock().type=="WHILE","WEND without WHILE");157 endBlock();158 //do/LOOP159 break;case "DO":160 current.type="DO"161 startBlock();162 break;case "LOOP":163 assert(currentBlock().type=="DO","LOOP without DO");164 endBlock();165 //UNTIL <condition>166 break;case "UNTIL":167 assert(currentBlock().type=="REPEAT","UNTIL without REPEAT");168 assert(currentBlock().condition=readExpression(),"Missing UNTIL condition");169 endBlock();170 //NEXT171 break;case "NEXT":172 assert(currentBlock().type=="FOR","NEXT without FOR");173 readExpression();174 endBlock();175 //OUT/THEN176 break;case "OUT":case "THEN":177 assert(false,"Illegal OUT/THEN");178 //other words179 break;case "word":180 //var name=text;181 readNext=readNext-1;182 var x=readVariable(true);183 if(readToken("=")){184 current.type="assignment";185 current.variable=x;186 assert(current.value=readExpression(),"Missing value in assignment");187 }else{188 current.type="function";189 current.name=x.name;190 current.inputs=readList(readExpression);191 if(readToken("OUT"))192 current.outputs=readList(readVariable);193 else194 current.outputs=[];195 }196 //comment197 break;case "comment":198 //colon NOP199 break;case ":":200 //line break, end201 break;case "eof":202 case "linebreak":203 if(ifThisLine){204 ifThisLine=false;205 if(codeAfterThen){206 endBlock();207 console.log("ended single line IF");208 }209 }210 break;default:211 assert(false,"Expected statement, got "+type+" '"+word+"'");212 }213 if(current.type){214 current.line=lineNumber;215 currentBlocks[currentBlocks.length-1].code.push(current)//push to current block!216 current={}217 }218 }219 220 function currentBlock(){221 return currentBlocks[currentBlocks.length-1]222 }223 224 //check if next token is of a specific type225 function peekToken(wantedType){226 var prevType=type,prevWord=word;227 next();228 readNext=-1;229 newType=type;230 newWord=word;231 type=prevType;232 word=prevWord;233 return newType===wantedType;234 }235 //check if next token is of a specific type236 function peekWord(wantedWord){237 var prevType=type,prevWord=word;238 next();239 readNext=-1;240 newType=type;241 newWord=word;242 type=prevType;243 word=prevWord;244 return newType==="word" && newWord.trimLeft().toUpperCase()===wantedWord;245 }246 247 //Try to read a specific token248 function readToken(wantedType){249 next();250 if(type===wantedType){251 readNext=1;252 return true;253 }254 readNext=0;255 return false;256 }257 258 //Read list259 //reader: function to read item (readExpression etc.)260 //noNull: throw an error if a null value is found261 function readList(reader){262 var ret=[];263 var x=reader();264 if(x)265 ret.push(x);266 if(readToken(",","")){267 assert(x,"Null value not allowed");268 do269 assert(ret.push(reader()),"Null value not allowed");270 while(readToken(","));;;271 }272 return ret;273 }274 275 function readList2(reader){276 var ret=[];277 var x=reader();278 if(x)279 ret.push(x);280 if(readToken(",","")&&expr.push({type:"comma"})){281 assert(x,"Null value not allowed");282 do283 assert(ret.push(reader()),"Null value not allowed");284 while(readToken(",")&&expr.push({type:"comma"}));;;285 }286 return ret;287 }288 289 //read normal expression290 //SHould return RPN list291 function readExpression(){292 expr=[];293 //var rpn=[],stack=[];294 //rpn parse tokens as they are read?295 if(readExpression2())296 return rpnFromExpr(expr);297 return false;298 }299 300 function prec(token){301 if(token.type==="unary" || token.type==="comma")302 return Infinity;303 else304 switch(token.name){305 case "^":306 return 11;307 case "*":case "/": case "\\": case "%":308 return 10;309 case "+":case "-":310 return 9;311 case "<<":case ">>":312 return 8;313 case "<":case "<=":case ">":case ">=":314 return 7;315 case "==":case "!=":316 return 6;317 case "&":318 return 5;319 case "~":320 return 4;321 case "|":322 return 3;323 case "AND":324 return 2;325 case "OR":326 return 1;327 }328 console.log(token);329 assert(false,"error prec "+token.name);330 }331 function left(token){332 return 0333 }334 335 function rpnFromExpr(expr){336 console.log({...expr},"expr");337 var rpn=[],stack=[];338 for(var i=0;i<expr.length;i++){339 var token=expr[i];340 switch(token.type){341 case "number":case "string":case "variable":case "function":case "array": //see, functions are actually pushed AFTER their arguments, so we can just send them directly to the output! :D342 rpn.push(token);343 break;case "operator":case "unary":344 while(stack.length){345 var top=stack[stack.length-1]346 //console.log(top)347 if(top.type!="("&&(prec(top)>=prec(token) || (prec(top)==prec(token) && left(token)))){348 rpn.push(stack.pop());349 }else{350 break;351 }352 }353 stack.push(token);354 break;case "comma":355 while(stack.length){356 var top=stack[stack.length-1]357 //console.log(top)358 if(top.type!="("){359 rpn.push(stack.pop());360 }else{361 break;362 }363 }364 break;case "(":365 stack.push(token);366 break;case ")":367 while(1){368 var top=stack[stack.length-1]369 if(top.type!="(")370 rpn.push(stack.pop());371 else372 break;373 }374 stack.pop();375 break;default:376 assert(false,"error typ "+token.type)377 }378 }379 while(stack.length)380 rpn.push(stack.pop());381 return rpn;382 }383 384 function readExpression2(){385 var ret=false;386 next();387 switch(type){388 //function or variable389 case "word":390 var name=word;391 if(readToken("(")){392 expr.push({type:"("}); //all we needed!393 var x=readList2(readExpression2);394 assert(readToken(")"),"Missing \")\" in function call");395 expr.push({type:")"});396 expr.push({type:"function",name:name,args:x.length});397 }else398 expr.push({type:"variable",name:name});399 //number literals400 break;case "number":401 expr.push({type:"number",value:word});402 //string/label403 break;case "string":404 expr.push({type:"string",value:word});405 //operator (unary)406 break;case "unary":case "minus":case "xor":407 //unary op408 expr.push({type:"unary",name:word,args:1});409 //expr.push({type:"("}); //actual fear410 assert(readExpression2(),"Missing operator argument");411 //expr.push({type:")"});412 413 //open parenthesis414 break;case "(":415 expr.push({type:"("});416 readExpression2();417 assert(readToken(")"),"Missing \")\"");418 expr.push({type:")"});419 break;case "[":420 expr.push({type:"("});421 var x=readList2(readExpression2);422 expr.push({type:"array",args:x.length});423 assert(readToken("]"),"Missing \"]\"");424 expr.push({type:")"});425 426 //other crap427 break;default:428 readNext=0;429 return false;430 }431 while(readToken("dot")){432 assert(readToken("word"),"Dot missing function");433 var name=word;434 assert(readToken("("),"Dot missing function");435 expr.push({type:"("}); //all we needed!436 var x=readList2(readExpression2);437 assert(readToken(")"),"Missing \")\" in function call");438 expr.push({type:")"});439 expr.push({type:"function",name:name,args:x.length+1});440 }441 //read infix operators442 //this might have to be WHILE not IF443 if(readToken("operator")||readToken("minus")||readToken("xor")){444 expr.push({type:"operator",name:word,args:2});445 assert(readExpression2(),"Operator missing second argument");446 }447 return true;448 }449 450 //read function definition argument451 function readArgument(){452 if(readToken("word"))453 return word;454 else455 return false;456 }457 458 //read variable declaration459 function readDeclaration(){460 var ret={};461 if(readToken("word")){462 ret.name=word;463 if(readToken("="))464 ret.value=readExpression();465 return ret;466 }467 return false;468 }469 470 //keys:471 //name: [variable name expr token list]472 //indexes: [index list]473 function readVariable(){474 var ret={name:""};475 next();476 return {name:word}477 switch(type){ ...

Full Screen

Full Screen

DsdiffParser.js

Source:DsdiffParser.js Github

copy

Full Screen

...16 * http://www.sonicstudio.com/pdf/dsd/DSDIFF_1.5_Spec.pdf17 */18class DsdiffParser extends BasicParser_1.BasicParser {19 async parse() {20 const header = await this.tokenizer.readToken(DsdiffToken_1.ChunkHeader64);21 if (header.chunkID !== 'FRM8')22 throw new Error('Unexpected chunk-ID');23 const type = (await this.tokenizer.readToken(FourCC_1.FourCcToken)).trim();24 switch (type) {25 case 'DSD':26 this.metadata.setFormat('container', `DSDIFF/${type}`);27 this.metadata.setFormat('lossless', true);28 return this.readFmt8Chunks(header.chunkSize - BigInt(FourCC_1.FourCcToken.len));29 default:30 throw Error(`Unsupported DSDIFF type: ${type}`);31 }32 }33 async readFmt8Chunks(remainingSize) {34 while (remainingSize >= DsdiffToken_1.ChunkHeader64.len) {35 const chunkHeader = await this.tokenizer.readToken(DsdiffToken_1.ChunkHeader64);36 // If the data is an odd number of bytes in length, a pad byte must be added at the end37 debug(`Chunk id=${chunkHeader.chunkID}`);38 await this.readData(chunkHeader);39 remainingSize -= (BigInt(DsdiffToken_1.ChunkHeader64.len) + chunkHeader.chunkSize);40 }41 }42 async readData(header) {43 debug(`Reading data of chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);44 const p0 = this.tokenizer.position;45 switch (header.chunkID.trim()) {46 case 'FVER': // 3.1 FORMAT VERSION CHUNK47 const version = await this.tokenizer.readToken(Token.UINT32_LE);48 debug(`DSDIFF version=${version}`);49 break;50 case 'PROP': // 3.2 PROPERTY CHUNK51 const propType = await this.tokenizer.readToken(FourCC_1.FourCcToken);52 if (propType !== 'SND ')53 throw new Error('Unexpected PROP-chunk ID');54 await this.handleSoundPropertyChunks(header.chunkSize - BigInt(FourCC_1.FourCcToken.len));55 break;56 case 'ID3': // Unofficial ID3 tag support57 const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(Number(header.chunkSize)));58 const rst = strtok3.fromBuffer(id3_data);59 await new ID3v2Parser_1.ID3v2Parser().parse(this.metadata, rst, this.options);60 break;61 default:62 debug(`Ignore chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);63 break;64 case 'DSD':65 this.metadata.setFormat('numberOfSamples', Number(header.chunkSize * BigInt(8) / BigInt(this.metadata.format.numberOfChannels)));66 this.metadata.setFormat('duration', this.metadata.format.numberOfSamples / this.metadata.format.sampleRate);67 break;68 }69 const remaining = header.chunkSize - BigInt(this.tokenizer.position - p0);70 if (remaining > 0) {71 debug(`After Parsing chunk, remaining ${remaining} bytes`);72 await this.tokenizer.ignore(Number(remaining));73 }74 }75 async handleSoundPropertyChunks(remainingSize) {76 debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`);77 while (remainingSize > 0) {78 const sndPropHeader = await this.tokenizer.readToken(DsdiffToken_1.ChunkHeader64);79 debug(`Sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`);80 const p0 = this.tokenizer.position;81 switch (sndPropHeader.chunkID.trim()) {82 case 'FS': // 3.2.1 Sample Rate Chunk83 const sampleRate = await this.tokenizer.readToken(Token.UINT32_BE);84 this.metadata.setFormat('sampleRate', sampleRate);85 break;86 case 'CHNL': // 3.2.2 Channels Chunk87 const numChannels = await this.tokenizer.readToken(Token.UINT16_BE);88 this.metadata.setFormat('numberOfChannels', numChannels);89 await this.handleChannelChunks(sndPropHeader.chunkSize - BigInt(Token.UINT16_BE.len));90 break;91 case 'CMPR': // 3.2.3 Compression Type Chunk92 const compressionIdCode = (await this.tokenizer.readToken(FourCC_1.FourCcToken)).trim();93 const count = await this.tokenizer.readToken(Token.UINT8);94 const compressionName = await this.tokenizer.readToken(new Token.StringType(count, 'ascii'));95 if (compressionIdCode === 'DSD') {96 this.metadata.setFormat('lossless', true);97 this.metadata.setFormat('bitsPerSample', 1);98 }99 this.metadata.setFormat('codec', `${compressionIdCode} (${compressionName})`);100 break;101 case 'ABSS': // 3.2.4 Absolute Start Time Chunk102 const hours = await this.tokenizer.readToken(Token.UINT16_BE);103 const minutes = await this.tokenizer.readToken(Token.UINT8);104 const seconds = await this.tokenizer.readToken(Token.UINT8);105 const samples = await this.tokenizer.readToken(Token.UINT32_BE);106 debug(`ABSS ${hours}:${minutes}:${seconds}.${samples}`);107 break;108 case 'LSCO': // 3.2.5 Loudspeaker Configuration Chunk109 const lsConfig = await this.tokenizer.readToken(Token.UINT16_BE);110 debug(`LSCO lsConfig=${lsConfig}`);111 break;112 case 'COMT':113 default:114 debug(`Unknown sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`);115 await this.tokenizer.ignore(Number(sndPropHeader.chunkSize));116 }117 const remaining = sndPropHeader.chunkSize - BigInt(this.tokenizer.position - p0);118 if (remaining > 0) {119 debug(`After Parsing sound-property-chunk ${sndPropHeader.chunkSize}, remaining ${remaining} bytes`);120 await this.tokenizer.ignore(Number(remaining));121 }122 remainingSize -= BigInt(DsdiffToken_1.ChunkHeader64.len) + sndPropHeader.chunkSize;123 debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`);124 }125 if (this.metadata.format.lossless && this.metadata.format.sampleRate && this.metadata.format.numberOfChannels && this.metadata.format.bitsPerSample) {126 const bitrate = this.metadata.format.sampleRate * this.metadata.format.numberOfChannels * this.metadata.format.bitsPerSample;127 this.metadata.setFormat('bitrate', bitrate);128 }129 }130 async handleChannelChunks(remainingSize) {131 debug(`Parsing channel-chunks, remainingSize=${remainingSize}`);132 const channels = [];133 while (remainingSize >= FourCC_1.FourCcToken.len) {134 const channelId = await this.tokenizer.readToken(FourCC_1.FourCcToken);135 debug(`Channel[ID=${channelId}]`);136 channels.push(channelId);137 remainingSize -= BigInt(FourCC_1.FourCcToken.len);138 }139 debug(`Channels: ${channels.join(', ')}`);140 return channels;141 }142} ...

Full Screen

Full Screen

index.js

Source:index.js Github

copy

Full Screen

1"use strict";2function type(e, t) {3 e.reserve(1), e.buffer[e.offset++] = t;4}5function int8(e, t, n) {6 e.reserve(2), e.buffer[e.offset++] = t, e.buffer[e.offset++] = n;7}8function int16(e, t, n) {9 e.reserve(3), e.buffer[e.offset++] = t, e.buffer[e.offset++] = n >>> 8, e.buffer[e.offset++] = n;10}11function int32(e, t, n) {12 e.reserve(5), e.buffer[e.offset++] = t, e.buffer[e.offset++] = n >>> 24, e.buffer[e.offset++] = n >>> 16, 13 e.buffer[e.offset++] = n >>> 8, e.buffer[e.offset++] = n;14}15function float32(e, t) {16 e.reserve(5), e.buffer[e.offset++] = 202, new DataView(e.buffer.buffer).setFloat32(e.buffer.byteOffset + e.offset, t), 17 e.offset += 4;18}19function float64(e, t) {20 e.reserve(9), e.buffer[e.offset++] = 203, new DataView(e.buffer.buffer).setFloat64(e.buffer.byteOffset + e.offset, t), 21 e.offset += 8;22}23function concat(e) {24 let t = 0;25 const n = e.length;26 for (let f = 0; f < n; ++f) t += e[f].byteLength;27 let f = 0;28 const r = new Uint8Array(t);29 for (let t = 0; t < n; ++t) {30 const n = e[t];31 r.set(n, f), f += n.byteLength;32 }33 return r;34}35function subarray(e, t, n) {36 return t = Math.min(Math.max(0, t), e.byteLength), new Uint8Array(e.buffer, e.byteOffset + t, Math.min(Math.max(t, n), e.byteLength) - t);37}38function toString(e, t, n) {39 return Buffer.from(e.buffer, e.byteOffset, e.byteLength).toString("utf8", t, n);40}41function fromString(e) {42 const t = Buffer.from(e);43 return new Uint8Array(t.buffer, t.byteOffset, t.length);44}45Object.defineProperty(exports, "__esModule", {46 value: !047});48const float32Buffer = new Float32Array(1);49function nil(e) {50 type(e, 192);51}52function isFloat32(e) {53 return float32Buffer[0] = e, float32Buffer[0] === e;54}55function bin(e, t) {56 const n = t.byteLength;57 n <= 255 ? int8(e, 196, n) : n <= 65535 ? int16(e, 197, n) : int32(e, 198, n), e.send(t);58}59function array(e, t) {60 const n = t.length;61 n < 16 ? type(e, 144 + n) : n <= 65535 ? int16(e, 220, n) : int32(e, 221, n);62 for (let f = 0; f < n; ++f) encodeFn(e, t[f]);63}64function map(e, t) {65 const n = Object.keys(t), f = n.length;66 f < 16 ? type(e, 128 + f) : f <= 65535 ? int16(e, 222, f) : int32(e, 223, f);67 for (let r = 0; r < f; ++r) {68 const f = n[r], o = f >>> 0;69 encodeFn(e, o + "" === f ? o : f), encodeFn(e, t[f]);70 }71}72function number(e, t) {73 const n = t >>> 0;74 if (t === n) n <= 127 ? type(e, n) : n <= 255 ? int8(e, 204, n) : n <= 65535 ? int16(e, 205, n) : int32(e, 206, n); else {75 const n = 0 | t;76 t === n ? n >= -32 ? type(e, 255 & n) : n >= -128 ? int8(e, 208, n) : n >= -32768 ? int16(e, 209, n) : int32(e, 210, n) : isFloat32(t) ? float32(e, t) : float64(e, t);77 }78}79function string(e, t) {80 const n = fromString(t), f = n.byteLength;81 f < 32 ? type(e, 160 + f) : f <= 255 ? int8(e, 217, f) : f <= 65535 ? int16(e, 218, f) : int32(e, 219, f), 82 e.send(n);83}84function object(e, t) {85 return null === t ? nil(e) : Array.isArray(t) ? array(e, t) : t instanceof Uint8Array ? bin(e, t) : void map(e, t);86}87function boolean(e, t) {88 type(e, t ? 195 : 194);89}90const encodingFunctions = {91 number: number,92 object: object,93 string: string,94 boolean: boolean,95 symbol: nil,96 function: nil,97 undefined: nil98};99function encodeFn(e, t) {100 encodingFunctions[typeof t](e, t);101}102function map$1(e, t) {103 const n = {};104 for (let f = 0; f < t; ++f) n[decodeFn(e)] = decodeFn(e);105 return n;106}107function array$1(e, t) {108 const n = new Array(t);109 for (let f = 0; f < t; ++f) n[f] = decodeFn(e);110 return n;111}112function str(e, t) {113 const n = e.offset, f = e.offset = n + t;114 return toString(e.buffer, n, f);115}116function bin$1(e, t) {117 const n = e.offset, f = e.offset = n + t;118 return subarray(e.buffer, n, f);119}120function uint8(e) {121 return e.buffer[e.offset++];122}123function uint16(e) {124 const t = e.buffer;125 return t[e.offset++] << 8 | t[e.offset++];126}127function uint32(e) {128 const t = e.buffer;129 return 16777216 * t[e.offset++] + (t[e.offset++] << 16 | t[e.offset++] << 8 | t[e.offset++]);130}131function int8$1(e) {132 const t = uint8(e);133 return 128 & t ? -1 * (255 - t + 1) : t;134}135function int16$1(e) {136 const t = uint16(e);137 return 32768 & t ? 4294901760 | t : t;138}139function int32$1(e) {140 const t = e.buffer;141 return t[e.offset++] << 24 | t[e.offset++] << 16 | t[e.offset++] << 8 | t[e.offset++];142}143function float32$1(e) {144 const t = e.buffer, n = e.offset;145 return e.offset += 4, new DataView(t.buffer).getFloat32(t.byteOffset + n);146}147function float64$1(e) {148 const t = e.buffer, n = e.offset;149 return e.offset += 8, new DataView(t.buffer).getFloat64(t.byteOffset + n);150}151const readToken = new Array(256);152function fix(e, t) {153 return n => t(n, e);154}155function flex(e, t) {156 return n => t(n, e(n));157}158function constant(e) {159 return () => e;160}161let i;162for (i = 0; i <= 127; ++i) readToken[i] = constant(i);163for (i = 128; i <= 143; ++i) readToken[i] = fix(i - 128, map$1);164for (i = 144; i <= 159; ++i) readToken[i] = fix(i - 144, array$1);165for (i = 160; i <= 191; ++i) readToken[i] = fix(i - 160, str);166for (readToken[192] = constant(null), readToken[193] = null, readToken[194] = constant(!1), 167readToken[195] = constant(!0), readToken[196] = flex(uint8, bin$1), readToken[197] = flex(uint16, bin$1), 168readToken[198] = flex(uint32, bin$1), readToken[202] = float32$1, readToken[203] = float64$1, 169readToken[204] = uint8, readToken[205] = uint16, readToken[206] = uint32, readToken[207] = null, 170readToken[208] = int8$1, readToken[209] = int16$1, readToken[210] = int32$1, readToken[211] = null, 171readToken[217] = flex(uint8, str), readToken[218] = flex(uint16, str), readToken[219] = flex(uint32, str), 172readToken[220] = flex(uint16, array$1), readToken[221] = flex(uint32, array$1), 173readToken[222] = flex(uint16, map$1), readToken[223] = flex(uint32, map$1), i = 224; i <= 255; ++i) readToken[i] = constant(i - 256);174function decodeFn(e) {175 return readToken[uint8(e)](e);176}177const MIN_BUFFER_SIZE = 2048, MAX_BUFFER_SIZE = 65536;178class BufferHolder {179 constructor() {180 this.start = 0, this.offset = 0, this.buffers = [];181 }182 setBuffer(e) {183 this.start = 0, this.offset = 0, this.buffer = e;184 }185 alloc(e) {186 this.setBuffer(new Uint8Array(Math.max(e, MIN_BUFFER_SIZE)));187 }188 push(e) {189 this.buffers.push(e);190 }191 reserve(e) {192 if (!this.buffer) return this.alloc(e);193 const t = this.buffer.byteLength;194 this.offset + e > t && (this.offset && this.flush(), this.alloc(Math.max(e, Math.min(2 * t, MAX_BUFFER_SIZE))));195 }196 read() {197 this.flush();198 const e = this.buffers.length;199 if (e) {200 const t = e > 1 ? concat(this.buffers) : this.buffers[0];201 return this.buffers.length = 0, t;202 }203 }204 flush() {205 this.start < this.offset && (this.push(subarray(this.buffer, this.start, this.offset)), 206 this.start = this.offset);207 }208 send(e) {209 const t = this.offset + e.byteLength;210 this.buffer && t <= this.buffer.byteLength ? (this.buffer.set(e, this.offset), this.offset = t) : (this.flush(), 211 this.push(e));212 }213}214const encoder = new BufferHolder(), decoder = new BufferHolder();215function encode(e) {216 return encodeFn(encoder, e), encoder.read();217}218function decode(e) {219 return decoder.setBuffer(e), decodeFn(decoder);220}...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var gherkin = require('cucumber-gherkin');2var fs = require('fs');3var gherkinSource = fs.readFileSync('test.feature', 'utf-8');4var tokenScanner = new gherkin.TokenScanner(gherkinSource);5var tokenMatcher = new gherkin.TokenMatcher();6var token = tokenScanner.readToken(tokenMatcher);7while (token != null) {8 console.log(token);9 token = tokenScanner.readToken(tokenMatcher);10}11{ type: 'Feature', location: { line: 1, column: 1 } }12{ type: 'FeatureLine', location: { line: 1, column: 1 } }13{ type: 'TagLine', location: { line: 1, column: 1 } }14{ type: 'Empty', location: { line: 1, column: 1 } }15{ type: 'FeatureLine', location: { line: 2, column: 1 } }16{ type: 'Language', location: { line: 2, column: 1 } }17{ type: 'FeatureLine', location: { line: 3, column: 1 } }18{ type: 'Other', location: { line: 3, column: 1 } }19{ type: 'FeatureLine', location: { line: 4, column: 1 } }20{ type: 'Other', location: { line: 4, column: 1 } }21{ type: 'FeatureLine', location: { line: 5, column: 1 } }22{ type: 'TagLine', location: { line: 5, column: 1 } }23{ type: 'Empty', location: { line: 5, column: 1 } }24{ type: 'FeatureLine', location: { line: 6, column: 1 } }25{ type: 'FeatureLine', location: { line: 7, column: 1 } }26{ type: 'Other', location: { line: 7, column: 1 } }27{ type: 'FeatureLine', location: { line: 8, column: 1 } }28{ type: 'TagLine', location: { line: 8, column: 1 } }29{ type: 'Empty', location: { line: 8, column: 1 } }

Full Screen

Using AI Code Generation

copy

Full Screen

1var Cucumber = require('cucumber');2var gherkin = Cucumber.Gherkin;3var fs = require('fs');4var data = fs.readFileSync('test.feature', 'utf-8');5var lexer = new gherkin.Lexer('en');6var token = lexer.readToken(data);7while (token != null) {8 console.log(token);9 token = lexer.readToken(data);10}11{ type: 'Feature',12 location: { line: 1, column: 1 },13 description: 'This is a test feature' }14{ type: 'Scenario',15 location: { line: 3, column: 3 },16 description: 'This is a test scenario' }17{ type: 'Step',18 location: { line: 5, column: 5 },19 dataTable: null }20{ type: 'Step',21 location: { line: 6, column: 5 },22 dataTable: null }23{ type: 'EOF',24 location: { line: 7, column: 1 },25 description: null }

Full Screen

Using AI Code Generation

copy

Full Screen

1var gherkin = require('./node_modules/cucumber-gherkin');2var fs = require('fs');3var gherkinSource = fs.readFileSync('./test.feature', 'utf8');4var tokenMatcher = new gherkin.TokenMatcher();5var tokenScanner = new gherkin.TokenScanner(gherkinSource);6var token = tokenScanner.readToken(tokenMatcher);7while (token != null) {8 console.log(token);9 token = tokenScanner.readToken(tokenMatcher);10}11{ type: 'FeatureLine',12 location: { line: 1, column: 1 },13 text: 'Test Feature' }14{ type: 'TagLine',15 location: { line: 1, column: 1 },16 tag: '@wip' }17{ type: 'BackgroundLine',18 location: { line: 1, column: 1 },19 text: 'Test Background' }20{ type: 'ScenarioLine',21 location: { line: 1, column: 1 },22 text: 'Test Scenario' }23{ type: 'StepLine',24 location: { line: 1, column: 1 },25 text: 'I have a step "with a parameter"' }26{ type: 'DocStringSeparator',27 location: { line: 1, column: 1 },28 separator: '"""' }29{ type: 'DocString',30 location: { line: 1, column: 1 },31 content: 'Some DocString content' }32{ type: 'StepLine',33 location: { line: 1, column: 1 },34 text: 'I have another step "with another parameter"' }35{ type: 'Comment',36 location: { line: 1, column: 1 },37 text: ' Comment' }38{ type: 'Empty',39 location: { line: 1, column: 1 },40 text: '' }

Full Screen

Using AI Code Generation

copy

Full Screen

1var gherkin = require('cucumber-gherkin');2gherkin.readToken('test.feature', function(err, token) {3 console.log(token);4});5{ type: 'tag',6 location: { line: 1, column: 1 },7 text: '@tag1' }8{ type: 'tag',9 location: { line: 1, column: 7 },10 text: '@tag2' }11{ type: 'tag',12 location: { line: 1, column: 13 },13 text: '@tag3' }14{ type: 'tag',15 location: { line: 1, column: 19 },16 text: '@tag4' }17{ type: 'tag',18 location: { line: 1, column: 25 },19 text: '@tag5' }20{ type: 'feature',21 location: { line: 3, column: 1 },22 tags: [ '@tag1', '@tag2', '@tag3', '@tag4', '@tag5' ] }23{ type: 'scenario',24 location: { line: 6, column: 1 },25 tags: [] }26{ type: 'step',27 location: { line: 7, column: 3 },28 multilineArg: null }29{ type: 'step',30 location: { line: 8, column: 3 },31 multilineArg: null }32{ type: 'step',33 location: { line: 9, column: 3 },34 multilineArg: null }35{ type: 'eof', location: { line: 9, column: 22 } }

Full Screen

Cucumber Tutorial:

LambdaTest offers a detailed Cucumber testing tutorial, explaining its features, importance, best practices, and more to help you get started with running your automation testing scripts.

Cucumber Tutorial Chapters:

Here are the detailed Cucumber testing chapters to help you get started:

  • Importance of Cucumber - Learn why Cucumber is important in Selenium automation testing during the development phase to identify bugs and errors.
  • Setting Up Cucumber in Eclipse and IntelliJ - Learn how to set up Cucumber in Eclipse and IntelliJ.
  • Running First Cucumber.js Test Script - After successfully setting up your Cucumber in Eclipse or IntelliJ, this chapter will help you get started with Selenium Cucumber testing in no time.
  • Annotations in Cucumber - To handle multiple feature files and the multiple scenarios in each file, you need to use functionality to execute these scenarios. This chapter will help you learn about a handful of Cucumber annotations ranging from tags, Cucumber hooks, and more to ease the maintenance of the framework.
  • Automation Testing With Cucumber And Nightwatch JS - Learn how to build a robust BDD framework setup for performing Selenium automation testing by integrating Cucumber into the Nightwatch.js framework.
  • Automation Testing With Selenium, Cucumber & TestNG - Learn how to perform Selenium automation testing by integrating Cucumber with the TestNG framework.
  • Integrate Cucumber With Jenkins - By using Cucumber with Jenkins integration, you can schedule test case executions remotely and take advantage of the benefits of Jenkins. Learn how to integrate Cucumber with Jenkins with this detailed chapter.
  • Cucumber Best Practices For Selenium Automation - Take a deep dive into the advanced use cases, such as creating a feature file, separating feature files, and more for Cucumber testing.

Run Cucumber-gherkin automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful