diff --git a/src/parse/read/expression.js b/src/parse/read/expression.js index 904b1c5229..e896f647cd 100644 --- a/src/parse/read/expression.js +++ b/src/parse/read/expression.js @@ -1,8 +1,36 @@ import { parseExpressionAt } from 'acorn'; +const literals = { + true: true, + false: false, + null: null +}; + export default function readExpression ( parser ) { const start = parser.index; + const name = parser.readUntil( /\s*}}/ ); + if ( name && /^[a-z]+$/.test( name ) ) { + const end = start + name.length; + + if ( name in literals ) { + return { + type: 'Literal', + start, + end, + value: literals[ name ], + raw: name + }; + } + + return { + type: 'Identifier', + start, + end: start + name.length, + name + }; + } + parser.index = start; try { @@ -11,15 +39,6 @@ export default function readExpression ( parser ) { return node; } catch ( err ) { - const name = parser.readUntil( /\s*}}/ ); - if ( name && /^[a-z]+$/.test( name ) ) { - return { - type: 'Identifier', - start, - end: start + name.length, - name - }; - } parser.acornError( err ); } }