aboutsummaryrefslogtreecommitdiffstats
path: root/test/racc/assets/journey.y
diff options
context:
space:
mode:
Diffstat (limited to 'test/racc/assets/journey.y')
-rw-r--r--test/racc/assets/journey.y47
1 files changed, 47 insertions, 0 deletions
diff --git a/test/racc/assets/journey.y b/test/racc/assets/journey.y
new file mode 100644
index 0000000000..c2640f3339
--- /dev/null
+++ b/test/racc/assets/journey.y
@@ -0,0 +1,47 @@
+class Journey::Parser
+
+token SLASH LITERAL SYMBOL LPAREN RPAREN DOT STAR OR
+
+rule
+ expressions
+ : expressions expression { result = Cat.new(val.first, val.last) }
+ | expression { result = val.first }
+ | or
+ ;
+ expression
+ : terminal
+ | group
+ | star
+ ;
+ group
+ : LPAREN expressions RPAREN { result = Group.new(val[1]) }
+ ;
+ or
+ : expressions OR expression { result = Or.new([val.first, val.last]) }
+ ;
+ star
+ : STAR { result = Star.new(Symbol.new(val.last)) }
+ ;
+ terminal
+ : symbol
+ | literal
+ | slash
+ | dot
+ ;
+ slash
+ : SLASH { result = Slash.new('/') }
+ ;
+ symbol
+ : SYMBOL { result = Symbol.new(val.first) }
+ ;
+ literal
+ : LITERAL { result = Literal.new(val.first) }
+ dot
+ : DOT { result = Dot.new(val.first) }
+ ;
+
+end
+
+---- header
+
+require 'journey/parser_extras'