1 line
1.7 KiB
JavaScript
1 line
1.7 KiB
JavaScript
function e(e){var t,n;e?(t=/^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i,n=/^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i):(t=/^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i,n=/^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i);var r=/^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i,i=/^(n?[zc]|p[oe]?|m)\b/i,a=/^([hl][xy]|i[xy][hl]|slia|sll)\b/i,o=/^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i;return{name:`z80`,startState:function(){return{context:0}},token:function(s,c){if(s.column()||(c.context=0),s.eatSpace())return null;var l;if(s.eatWhile(/\w/))if(e&&s.eat(`.`)&&s.eatWhile(/\w/),l=s.current(),s.indentation()){if((c.context==1||c.context==4)&&r.test(l))return c.context=4,`variable`;if(c.context==2&&i.test(l))return c.context=4,`variableName.special`;if(t.test(l))return c.context=1,`keyword`;if(n.test(l))return c.context=2,`keyword`;if(c.context==4&&o.test(l))return`number`;if(a.test(l))return`error`}else if(s.match(o))return`number`;else return null;else if(s.eat(`;`))return s.skipToEnd(),`comment`;else if(s.eat(`"`)){for(;(l=s.next())&&l!=`"`;)l==`\\`&&s.next();return`string`}else if(s.eat(`'`)){if(s.match(/\\?.'/))return`number`}else if(s.eat(`.`)||s.sol()&&s.eat(`#`)){if(c.context=5,s.eatWhile(/\w/))return`def`}else if(s.eat(`$`)){if(s.eatWhile(/[\da-f]/i))return`number`}else if(s.eat(`%`)){if(s.eatWhile(/[01]/))return`number`}else s.next();return null}}}var t=e(!1);e(!0);export{t as z80}; |