function removeComment(e){return e.indexOf(";")!==-1?e.substring(0,e.indexOf(";")):e}function checkForLabel(e,t){e=removeComment(e);var r;null!==(r=/\b\w*\b:/.exec(e))&&t.labels.push(r[0].substring(0,r[0].length-1))}function checkForSegmentDeclaration(e){var t=getTokens(e);return void 0!==t[0]&&(".data"===t[0].toLowerCase()||".text"===t[0].toLowerCase())}function checkForEQUInstruction(e,t,r){var n=getTokens(e);if(e.toLowerCase().indexOf(" equ ")!==-1||void 0!==n[1]&&"equ"===n[1].toLowerCase()){var o=Number(n[2]);return isNaN(o)||o!==Math.floor(o)?(t.annotations.push({row:r,column:0,text:"Usage: constant_name EQU immediate_value",type:"error"}),!0):(t.labels.push(n[0]),!0)}return!1}function getTokens(e){for(var t=e.split(/\s+/),r=0;r1){var s=Number(n[1]);return!isNaN(s)&&s===Math.floor(s)||(t.annotations.push({row:r,column:0,text:"Invalid operand: "+n[1],type:"error"}),!0)}}function parseDWInstruction(e,t,r){if(e=e.trim(),"dw"===e.substr(0,2).toLowerCase()){for(var n=e.substr(2,e.length).split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/,-1),o=0;o1){if(s=e.substring(e.indexOf(o)+o.length).trim(),!new RegExp("\\b(?:push|mul|pop|div|neg|call|jnz|jg|jl|jge|jle|hwi|hwq|jz|js|jns|ret|jmp|not|jc|jnc|jo|jno)\\b").test(o.toLowerCase()))return void t.annotations.push({row:r,column:0,text:o+" instruction with 1 operand is illegal",type:"error"});getOperandType(s,t)===OPERAND_INVALID&&t.annotations.push({row:r,column:0,text:"Invalid operand: "+s,type:"error"})}else new RegExp("\\b(?:ret|brk|nop|pushf|popf)\\b").test(o.toLowerCase())||t.annotations.push({row:r,column:0,text:o+" instruction with no operand is illegal",type:"error"});else t.annotations.push({row:r,column:0,text:"Unknown mnemonic: "+o,type:"error"})}function parse(){for(var e=ace.edit("editor").getValue(),t=e.split("\n"),r={labels:[],annotations:[]},n=0;n