diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-10-16 17:54:47 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-10-16 17:54:47 -0700 |
commit | 39cb16d507c3711de89f0997c08720fbdca02879 (patch) | |
tree | 07aac6860dc7ea06170428b29c68b38fa5711d3a /src/intertyper.js | |
parent | bc218e3c21b9e3372bddcde6320e70463bfc0120 (diff) |
remove .item from tokenizer output
Diffstat (limited to 'src/intertyper.js')
-rw-r--r-- | src/intertyper.js | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/src/intertyper.js b/src/intertyper.js index d0bb2b15..bfeed625 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -49,11 +49,7 @@ function tokenize(text, lineNum, indent) { text: text }; if (text[0] in enclosers) { - if (text[0] !== '{') { - token.item = tokenize(text.substr(1, text.length-2)); - } else { - token.tokens = tokenize(text.substr(1, text.length-2)).tokens; - } + token.tokens = tokenize(text.substr(1, text.length-2)).tokens; token.type = text[0]; } // merge function definitions together @@ -396,10 +392,10 @@ function intertyper(lines, sidePass, baseLineNums) { return { intertype: 'struct', type: segment[0].text, contents: handleSegments(segment[1].tokens) }; } else if (segment[1].type && segment[1].type == '<') { Types.needAnalysis[segment[0].text] = 0; - return { intertype: 'struct', type: segment[0].text, contents: handleSegments(segment[1].item.tokens[0].tokens) }; + return { intertype: 'struct', type: segment[0].text, contents: handleSegments(segment[1].tokens[0].tokens) }; } else if (segment[1].type && segment[1].type == '[') { Types.needAnalysis[segment[0].text] = 0; - return { intertype: 'list', type: segment[0].text, contents: handleSegments(segment[1].item.tokens) }; + return { intertype: 'list', type: segment[0].text, contents: handleSegments(segment[1].tokens) }; } else if (segment.length == 2) { Types.needAnalysis[segment[0].text] = 0; return { intertype: 'value', type: segment[0].text, ident: toNiceIdent(segment[1].text) }; @@ -426,19 +422,19 @@ function intertyper(lines, sidePass, baseLineNums) { return { intertype: 'string', text: value.text.substr(1, value.text.length-2) }; } else { if (value.type == '<') { // <{ i8 }> etc. - value = value.item.tokens; + value = value.tokens; } var contents; - if (value.item) { + if (value.type && value.type !== '{') { // list of items - contents = value.item.tokens; + contents = value.tokens; } else if (value.type == '{') { // struct contents = value.tokens; } else if (value[0]) { contents = value[0]; } else { - throw '// interfailzzzzzzzzzzzzzz ' + dump(value.item) + ' ::: ' + dump(value); + throw '// interfailzzzzzzzzzzzzzz ' + dump(value); } return { intertype: 'segments', contents: handleSegments(contents) }; } @@ -471,7 +467,7 @@ function intertyper(lines, sidePass, baseLineNums) { } else if (item.tokens[1].text != 'opaque') { if (item.tokens[1].type == '<') { packed = true; - item.tokens[1] = item.tokens[1].item.tokens[0]; + item.tokens[1] = item.tokens[1].tokens[0]; } var subTokens = item.tokens[1].tokens; if (subTokens) { @@ -514,8 +510,8 @@ function intertyper(lines, sidePass, baseLineNums) { noteGlobalVariable(ret); if (ident == '_llvm_global_ctors') { ret.ctors = []; - if (item.tokens[1].item) { - var subTokens = item.tokens[1].item.tokens; + var subTokens = item.tokens[1].tokens; + if (subTokens) { splitTokenList(subTokens).forEach(function(segment) { var parsed = parseLLVMSegment(segment); assert(parsed.intertype === 'structvalue'); @@ -549,7 +545,7 @@ function intertyper(lines, sidePass, baseLineNums) { item.tokens = item.tokens.filter(function(token) { return !(token.text in LLVM.LINKAGES || token.text in LLVM.PARAM_ATTR || token.text in LLVM.FUNC_ATTR || token.text in LLVM.CALLING_CONVENTIONS); }); - var params = parseParamTokens(item.tokens[2].item.tokens); + var params = parseParamTokens(item.tokens[2].tokens); if (sidePass) dprint('unparsedFunctions', 'Processing function: ' + item.tokens[1].text); return { intertype: 'function', @@ -634,9 +630,9 @@ function intertyper(lines, sidePass, baseLineNums) { while (!isType(item.tokens[first].text)) first++; Types.needAnalysis[item.tokens[first].text] = 0; var last = getTokenIndexByText(item.tokens, ';'); - var segment = [ item.tokens[first], { text: 'getelementptr' }, null, { item: { + var segment = [ item.tokens[first], { text: 'getelementptr' }, null, { tokens: item.tokens.slice(first, last) - } } ]; + } ]; var data = parseLLVMFunctionCall(segment); item.intertype = 'getelementptr'; item.type = '*'; // We need type info to determine this - all we know is it's a pointer @@ -675,7 +671,7 @@ function intertyper(lines, sidePass, baseLineNums) { assert((item.tokens[5].text.match(/=/g) || []).length <= 1, 'we only support at most 1 exported variable from inline js: ' + item.ident); var i = 0; var params = [], args = []; - splitTokenList(tokensLeft[3].item.tokens).map(function(element) { + splitTokenList(tokensLeft[3].tokens).map(function(element) { var ident = toNiceIdent(element[1].text); var type = element[0].text; params.push('$' + (i++)); @@ -694,7 +690,7 @@ function intertyper(lines, sidePass, baseLineNums) { } item.params = []; } else { - item.params = parseParamTokens(tokensLeft[0].item.tokens); + item.params = parseParamTokens(tokensLeft[0].tokens); } item.ident = toNiceIdent(item.ident); if (type === 'invoke') { @@ -785,7 +781,7 @@ function intertyper(lines, sidePass, baseLineNums) { Types.needAnalysis[item.type] = 0; var last = getTokenIndexByText(item.tokens, ';'); item.params = splitTokenList(item.tokens.slice(2, last)).map(function(segment) { - var subSegments = splitTokenList(segment[0].item.tokens); + var subSegments = splitTokenList(segment[0].tokens); var ret = { intertype: 'phiparam', label: toNiceIdent(subSegments[1][0].text), @@ -923,7 +919,7 @@ function intertyper(lines, sidePass, baseLineNums) { function switchHandler(item) { function parseSwitchLabels(item) { var ret = []; - var tokens = item.item.tokens; + var tokens = item.tokens; while (tokens.length > 0) { ret.push({ value: tokens[1].text, @@ -956,7 +952,7 @@ function intertyper(lines, sidePass, baseLineNums) { while (item.tokens[1].text in LLVM.LINKAGES || item.tokens[1].text in LLVM.PARAM_ATTR || item.tokens[1].text in LLVM.VISIBILITIES || item.tokens[1].text in LLVM.CALLING_CONVENTIONS) { item.tokens.splice(1, 1); } - var params = parseParamTokens(item.tokens[3].item.tokens); + var params = parseParamTokens(item.tokens[3].tokens); return { intertype: 'functionStub', ident: toNiceIdent(item.tokens[2].text), |