From 92ce30f354003ac0a011c32f1d08f91622390cf5 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 19 Sep 2022 22:16:57 -0400 Subject: [PATCH] Add tokenid keyword --- lib/propane/grammar.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/propane/grammar.rb b/lib/propane/grammar.rb index 60a5bd3..2b93d1e 100644 --- a/lib/propane/grammar.rb +++ b/lib/propane/grammar.rb @@ -41,6 +41,13 @@ class Propane @tokens << token pattern = Pattern.new(pattern: pattern, token: token, line_number: line_number) @patterns << pattern + elsif sliced = input.slice!(/\Atokenid\s+(\S+?)\s*;/m) + name = $1 + unless name =~ /^[a-zA-Z_][a-zA-Z_0-9]*$/ + raise Error.new("Invalid token name #{name.inspect}") + end + token = Token.new(name: name, id: @tokens.size, line_number: line_number) + @tokens << token elsif sliced = input.slice!(/\Adrop\s+(\S+)\s*;/) pattern = $1 @patterns << Pattern.new(pattern: pattern, line_number: line_number, drop: true)