From 6d79e0b4913949d90f6420e2be63c2abf1be73e6 Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Thu, 10 Oct 2019 19:01:09 -0400 Subject: [PATCH] updated number literals --- src/Language/SystemVerilog/Parser/Lex.x | 41 +++++++++++++++---------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/Language/SystemVerilog/Parser/Lex.x b/src/Language/SystemVerilog/Parser/Lex.x index b46168d..7ce66d0 100644 --- a/src/Language/SystemVerilog/Parser/Lex.x +++ b/src/Language/SystemVerilog/Parser/Lex.x @@ -43,8 +43,8 @@ import Language.SystemVerilog.Parser.Tokens -- Numbers -$nonZeroDecimalDigit = [1-9] -$decimalDigit = [0-9] +@nonZeroDecimalDigit = [1-9] +@decimalDigit = [0-9] @xDigit = [xX] @zDigit = [zZ\?] @binaryDigit = @xDigit | @zDigit | [0-1] @@ -56,33 +56,40 @@ $decimalDigit = [0-9] @octalBase = "'" [sS]? [oO] @hexBase = "'" [sS]? [hH] -@binaryValue = @binaryDigit ("_" | @binaryDigit)* -@octalValue = @octalDigit ("_" | @octalDigit)* -@hexValue = @hexDigit ("_" | @hexDigit)* - -@unsignedNumber = $decimalDigit ("_" | $decimalDigit)* +@nonZeroUnsignedNumber = @nonZeroDecimalDigit ("_" | @decimalDigit)* +@unsignedNumber = @decimalDigit ("_" | @decimalDigit)* +@binaryValue = @binaryDigit ("_" | @binaryDigit )* +@octalValue = @octalDigit ("_" | @octalDigit )* +@hexValue = @hexDigit ("_" | @hexDigit )* +@exp = [eE] @sign = [\-\+] -@fixedPointNumber = @unsignedNumber "." @unsignedNumber -@floatingPointNumber = @unsignedNumber ("." @unsignedNumber)? [eE] @sign? @unsignedNumber +@fixedPointNumber = @unsignedNumber "." @unsignedNumber +@realNumber + = @fixedPointNumber + | @unsignedNumber ("." @unsignedNumber)? @exp @sign? @unsignedNumber -@size = @unsignedNumber " "? +@size = @nonZeroUnsignedNumber " "? -@decimalNumber = @size? @decimalBase " "? @unsignedNumber -@binaryNumber = @size? @binaryBase " "? @binaryValue -@octalNumber = @size? @octalBase " "? @octalValue -@hexNumber = @size? @hexBase " "? @hexValue -@realNumber = @fixedPointNumber | @floatingPointNumber +@binaryNumber = @size? @binaryBase " "? @binaryValue +@octalNumber = @size? @octalBase " "? @octalValue +@hexNumber = @size? @hexBase " "? @hexValue @unbasedUnsizedLiteral = "'" ( 0 | 1 | x | X | z | Z ) -@number +@decimalNumber = @unsignedNumber - | @decimalNumber + | @size? @decimalBase " "? @unsignedNumber + | @size? @decimalBase " "? @xDigit "_"* + | @size? @decimalBase " "? @zDigit "_"* +@integralNumber + = @decimalNumber | @octalNumber | @binaryNumber | @hexNumber | @unbasedUnsizedLiteral +@number + = @integralNumber | @realNumber -- Strings