MCPcopy Index your code
hub / github.com/stemkoski/stemkoski.github.com / parse_stmt

Function parse_stmt

MathBox/mathbox-bundle.js:79764–79810  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

79762 }
79763
79764 function parse_stmt() {
79765 if(state[0].brace) {
79766 if(token.data !== '}') {
79767 return unexpected('expected `}`, got '+token.data)
79768 }
79769 state[0].brace = false
79770 return tokens.shift(), state.shift()
79771 }
79772 switch(token.type) {
79773 case 'eof': return state.shift()
79774 case 'keyword':
79775 switch(token.data) {
79776 case 'for': return state.unshift(forstmt());
79777 case 'if': return state.unshift(ifstmt());
79778 case 'while': return state.unshift(whilestmt());
79779 case 'do': return state.unshift(dowhilestmt());
79780 case 'break': return state.fake(mknode(BREAK, token)), tokens.shift()
79781 case 'continue': return state.fake(mknode(CONTINUE, token)), tokens.shift()
79782 case 'discard': return state.fake(mknode(DISCARD, token)), tokens.shift()
79783 case 'return': return state.unshift(returnstmt());
79784 case 'precision': return state.unshift(precision());
79785 }
79786 return state.unshift(decl(DECL_STATEMENT))
79787 case 'ident':
79788 var lookup
79789 if(lookup = state.scope.find(token.data)) {
79790 if(lookup.parent.type === 'struct') {
79791 // this is strictly untrue, you could have an
79792 // expr that starts with a struct constructor.
79793 // ... sigh
79794 return state.unshift(decl(DECL_STATEMENT))
79795 }
79796 return state.unshift(expr(';'))
79797 }
79798 case 'operator':
79799 if(token.data === '{') {
79800 state[0].brace = true
79801 var n = stmtlist()
79802 n.expecting = '}'
79803 return tokens.shift(), state.unshift(n)
79804 }
79805 if(token.data === ';') {
79806 return tokens.shift(), state.shift()
79807 }
79808 default: return state.unshift(expr(';'))
79809 }
79810 }
79811
79812 function parse_decl() {
79813 var stmt = state[0]

Callers 1

writeFunction · 0.70

Calls 4

unexpectedFunction · 0.70
mknodeFunction · 0.70
declFunction · 0.70
exprFunction · 0.70

Tested by

no test coverage detected