From cb846766ff5b758233e9931420c80ecedd8805c0 Mon Sep 17 00:00:00 2001 From: Andrew Summers Date: Mon, 9 Mar 2020 18:48:32 -0500 Subject: [PATCH] fix: Resolve <<< parsing error. (#45) --- src/lexer.xrl | 2 -- src/parser.yrl | 7 +++---- test/literals_pretty_print_test.exs | 8 ++++++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/lexer.xrl b/src/lexer.xrl index 9822ab8..ce5e9c0 100644 --- a/src/lexer.xrl +++ b/src/lexer.xrl @@ -31,9 +31,7 @@ _ : {token, {'_', TokenLine}}. \=\> : {token, {'=>', TokenLine}}. \-\> : {token, {'->', TokenLine}}. \| : {token, {'|', TokenLine}}. -\<\< : {token, {'<<', TokenLine}}. \< : {token, {'<', TokenLine}}. -\>\> : {token, {'>>', TokenLine}}. \> : {token, {'>', TokenLine}}. \' : {token, {'\'', TokenLine}}. , : {token, {',', TokenLine}}. diff --git a/src/parser.yrl b/src/parser.yrl index 6e13854..c3ce9cc 100644 --- a/src/parser.yrl +++ b/src/parser.yrl @@ -37,7 +37,6 @@ int '::' ':' '...' -'<<' '>>' '<' '>' '*' 'when' @@ -67,9 +66,9 @@ value -> rest : '$1'. value -> tuple : '$1'. value -> type : '$1'. -binary -> '<<' '>>' : {binary, []}. -binary -> '<<' binary_items '>>' : {binary, '$2'}. -binary -> '<<' value_items '>>' : {binary, '$2'}. +binary -> '<' '<' '>' '>' : {binary, []}. +binary -> '<' '<' binary_items '>' '>' : {binary, '$3'}. +binary -> '<' '<' value_items '>' '>' : {binary, '$3'}. pattern -> '<' value_items '>' : {pattern, '$2'}. diff --git a/test/literals_pretty_print_test.exs b/test/literals_pretty_print_test.exs index 3d16578..4f5e827 100644 --- a/test/literals_pretty_print_test.exs +++ b/test/literals_pretty_print_test.exs @@ -123,4 +123,12 @@ defmodule Erlex.Test.LiteralsPretyPrintTest do expected_output = "<<_ :: 64, _ :: size(8)>>" assert pretty_printed == expected_output end + + test "binary as first value in pattern" do + input = "<<<_:8,_:_*1>>,'false'>" + + pretty_printed = Erlex.pretty_print(input) + + assert pretty_printed == "<<_ :: 8, _ :: size(1)>>, false" + end end