From 9598e4ff43a8fd4bc2aa2af75ff1094c2ef96258 Mon Sep 17 00:00:00 2001 From: NanoTech Date: Wed, 7 Dec 2016 18:11:05 -0600 Subject: Reference input strings without copying --- src/grammar.lalrpop | 49 +++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 24 deletions(-) (limited to 'src/grammar.lalrpop') diff --git a/src/grammar.lalrpop b/src/grammar.lalrpop index c49e2b6..3e216ac 100644 --- a/src/grammar.lalrpop +++ b/src/grammar.lalrpop @@ -3,17 +3,18 @@ use core::Expr::*; use grammar_util::*; use lexer::*; +use std::borrow::Cow; use std::collections::HashMap; use std::iter; use std::iter::FromIterator; -grammar; +grammar<'input>; extern { type Location = usize; type Error = LexicalError; - enum Tok { + enum Tok<'input> { Pi => Tok::Pi, Lambda => Tok::Lambda, Combine => Tok::Combine, @@ -23,7 +24,7 @@ extern { Nat => Tok::Natural(), Text => Tok::Text(), Bool => Tok::Bool(), - Label => Tok::Identifier(), + Label => Tok::Identifier(>), Const => Tok::Const(), Let => Tok::Keyword(Keyword::Let), In => Tok::Keyword(Keyword::In), @@ -54,36 +55,36 @@ extern { } } -pub Expr: BoxExpr = { // exprA +pub Expr: BoxExpr<'input> = { // exprA ":" => bx(Annot(<>)), ExprB, }; -ExprB: BoxExpr = { +ExprB: BoxExpr<'input> = { Lambda "("