mirror of
https://github.com/ralsina/tartrazine.git
synced 2025-06-19 06:33:06 -03:00
Reorganize tests into a real spec suite
This commit is contained in:
157
spec/tests/systemverilog/test_basic.txt
Normal file
157
spec/tests/systemverilog/test_basic.txt
Normal file
@ -0,0 +1,157 @@
|
||||
# Examine tokens emitted by the SV lexer for a trivial module.
|
||||
# Not intended to stress any particular corner of the language.
|
||||
|
||||
---input---
|
||||
// Adder flops the sum of its inputs
|
||||
module Adder #(
|
||||
parameter int N = 42
|
||||
) (
|
||||
output logic [N-1:0] y,
|
||||
output logic co,
|
||||
|
||||
input logic [N-1:0] a,
|
||||
input logic [N-1:0] b,
|
||||
input logic ci,
|
||||
|
||||
input logic clk
|
||||
);
|
||||
always_ff @(posedge clk) begin
|
||||
{co, y} <= a + b + ci;
|
||||
end
|
||||
endmodule : Adder
|
||||
|
||||
---tokens---
|
||||
'// Adder flops the sum of its inputs\n' Comment.Single
|
||||
|
||||
'module' Keyword
|
||||
' ' Text.Whitespace
|
||||
'Adder' Name
|
||||
' ' Text.Whitespace
|
||||
'#' Punctuation
|
||||
'(' Punctuation
|
||||
'\n ' Text.Whitespace
|
||||
'parameter' Keyword
|
||||
' ' Text.Whitespace
|
||||
'int' Keyword.Type
|
||||
' ' Text.Whitespace
|
||||
'N' Name
|
||||
' ' Text.Whitespace
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'42' Literal.Number.Integer
|
||||
'\n' Text.Whitespace
|
||||
|
||||
')' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'(' Punctuation
|
||||
'\n ' Text.Whitespace
|
||||
'output' Keyword
|
||||
' ' Text.Whitespace
|
||||
'logic' Keyword.Type
|
||||
' ' Text.Whitespace
|
||||
'[' Punctuation
|
||||
'N' Name
|
||||
'-' Operator
|
||||
'1' Literal.Number.Integer
|
||||
':' Operator
|
||||
'0' Literal.Number.Integer
|
||||
']' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'y' Name
|
||||
',' Punctuation
|
||||
'\n ' Text.Whitespace
|
||||
'output' Keyword
|
||||
' ' Text.Whitespace
|
||||
'logic' Keyword.Type
|
||||
' ' Text.Whitespace
|
||||
'co' Name
|
||||
',' Punctuation
|
||||
'\n\n ' Text.Whitespace
|
||||
'input' Keyword
|
||||
' ' Text.Whitespace
|
||||
'logic' Keyword.Type
|
||||
' ' Text.Whitespace
|
||||
'[' Punctuation
|
||||
'N' Name
|
||||
'-' Operator
|
||||
'1' Literal.Number.Integer
|
||||
':' Operator
|
||||
'0' Literal.Number.Integer
|
||||
']' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'a' Name
|
||||
',' Punctuation
|
||||
'\n ' Text.Whitespace
|
||||
'input' Keyword
|
||||
' ' Text.Whitespace
|
||||
'logic' Keyword.Type
|
||||
' ' Text.Whitespace
|
||||
'[' Punctuation
|
||||
'N' Name
|
||||
'-' Operator
|
||||
'1' Literal.Number.Integer
|
||||
':' Operator
|
||||
'0' Literal.Number.Integer
|
||||
']' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'b' Name
|
||||
',' Punctuation
|
||||
'\n ' Text.Whitespace
|
||||
'input' Keyword
|
||||
' ' Text.Whitespace
|
||||
'logic' Keyword.Type
|
||||
' ' Text.Whitespace
|
||||
'ci' Name
|
||||
',' Punctuation
|
||||
'\n\n ' Text.Whitespace
|
||||
'input' Keyword
|
||||
' ' Text.Whitespace
|
||||
'logic' Keyword.Type
|
||||
' ' Text.Whitespace
|
||||
'clk' Name
|
||||
'\n' Text.Whitespace
|
||||
|
||||
')' Punctuation
|
||||
';' Punctuation
|
||||
'\n ' Text.Whitespace
|
||||
'always_ff' Keyword
|
||||
' ' Text.Whitespace
|
||||
'@' Punctuation
|
||||
'(' Punctuation
|
||||
'posedge' Keyword
|
||||
' ' Text.Whitespace
|
||||
'clk' Name
|
||||
')' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'begin' Keyword
|
||||
'\n ' Text.Whitespace
|
||||
'{' Punctuation
|
||||
'co' Name
|
||||
',' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'y' Name
|
||||
'}' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'<' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'a' Name
|
||||
' ' Text.Whitespace
|
||||
'+' Operator
|
||||
' ' Text.Whitespace
|
||||
'b' Name
|
||||
' ' Text.Whitespace
|
||||
'+' Operator
|
||||
' ' Text.Whitespace
|
||||
'ci' Name
|
||||
';' Punctuation
|
||||
'\n ' Text.Whitespace
|
||||
'end' Keyword
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'endmodule' Keyword
|
||||
' ' Text.Whitespace
|
||||
':' Operator
|
||||
' ' Text.Whitespace
|
||||
'Adder' Name
|
||||
'\n' Text.Whitespace
|
89
spec/tests/systemverilog/test_classes.txt
Normal file
89
spec/tests/systemverilog/test_classes.txt
Normal file
@ -0,0 +1,89 @@
|
||||
# Most of the interesting types of class declarations
|
||||
|
||||
---input---
|
||||
class Foo;
|
||||
endclass
|
||||
|
||||
class Bar;
|
||||
endclass : Bar
|
||||
|
||||
class Fiz extends Buz;
|
||||
endclass : Fiz
|
||||
|
||||
class Free #(parameter type T = byte) extends Beer #(T);
|
||||
endclass : Free
|
||||
|
||||
---tokens---
|
||||
'class' Keyword.Declaration
|
||||
' ' Text.Whitespace
|
||||
'Foo' Name.Class
|
||||
';' Punctuation
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'endclass' Keyword.Declaration
|
||||
'\n\n' Text.Whitespace
|
||||
|
||||
'class' Keyword.Declaration
|
||||
' ' Text.Whitespace
|
||||
'Bar' Name.Class
|
||||
';' Punctuation
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'endclass' Keyword.Declaration
|
||||
' ' Text.Whitespace
|
||||
':' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'Bar' Name.Class
|
||||
'\n\n' Text.Whitespace
|
||||
|
||||
'class' Keyword.Declaration
|
||||
' ' Text.Whitespace
|
||||
'Fiz' Name.Class
|
||||
' ' Text.Whitespace
|
||||
'extends' Keyword.Declaration
|
||||
' ' Text.Whitespace
|
||||
'Buz' Name.Class
|
||||
';' Punctuation
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'endclass' Keyword.Declaration
|
||||
' ' Text.Whitespace
|
||||
':' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'Fiz' Name.Class
|
||||
'\n\n' Text.Whitespace
|
||||
|
||||
'class' Keyword.Declaration
|
||||
' ' Text.Whitespace
|
||||
'Free' Name.Class
|
||||
' ' Text.Whitespace
|
||||
'#' Punctuation
|
||||
'(' Punctuation
|
||||
'parameter' Keyword
|
||||
' ' Text.Whitespace
|
||||
'type' Keyword.Type
|
||||
' ' Text.Whitespace
|
||||
'T' Name
|
||||
' ' Text.Whitespace
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'byte' Keyword.Type
|
||||
')' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'extends' Keyword.Declaration
|
||||
' ' Text.Whitespace
|
||||
'Beer' Name.Class
|
||||
' ' Text.Whitespace
|
||||
'#' Punctuation
|
||||
'(' Punctuation
|
||||
'T' Name
|
||||
')' Punctuation
|
||||
';' Punctuation
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'endclass' Keyword.Declaration
|
||||
' ' Text.Whitespace
|
||||
':' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'Free' Name.Class
|
||||
'\n' Text.Whitespace
|
158
spec/tests/systemverilog/test_numbers.txt
Normal file
158
spec/tests/systemverilog/test_numbers.txt
Normal file
@ -0,0 +1,158 @@
|
||||
# Believe it or not, SystemVerilog supports spaces before and after the base
|
||||
# specifier (ie 'b, 'd, 'h). See IEEE 1800-2017 Section 5.7.1 for examples.
|
||||
|
||||
---input---
|
||||
8'b10101010
|
||||
8 'b10101010
|
||||
8'b 10101010
|
||||
8'sb10101010
|
||||
8'Sb10101010
|
||||
8'B10101010
|
||||
8'b1010_1010
|
||||
8'b10xXzZ?10
|
||||
|
||||
24'o01234567
|
||||
24 'o01234567
|
||||
24'o 01234567
|
||||
24'so01234567
|
||||
24'So01234567
|
||||
24'O01234567
|
||||
24'o0123_4567
|
||||
24'o01xXzZ?7
|
||||
|
||||
32'd27182818
|
||||
32 'd27182818
|
||||
32'd 27182818
|
||||
32'sd27182818
|
||||
32'Sd27182818
|
||||
32'D27182818
|
||||
32'd2718_2818
|
||||
32'd27xXzZ?8
|
||||
|
||||
32'hdeadbeef
|
||||
32 'hdeadbeef
|
||||
32'h deadbeef
|
||||
32'shdeadbeef
|
||||
32'Shdeadbeef
|
||||
32'Hdeadbeef
|
||||
32'hdead_beef
|
||||
32'hdexXzZ?f
|
||||
|
||||
'0 '1 'x 'X 'z 'Z
|
||||
|
||||
42 1234_5678
|
||||
|
||||
---tokens---
|
||||
"8'b10101010" Literal.Number.Bin
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"8 'b10101010" Literal.Number.Bin
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"8'b 10101010" Literal.Number.Bin
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"8'sb10101010" Literal.Number.Bin
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"8'Sb10101010" Literal.Number.Bin
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"8'B10101010" Literal.Number.Bin
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"8'b1010_1010" Literal.Number.Bin
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"8'b10xXzZ?10" Literal.Number.Bin
|
||||
'\n\n' Text.Whitespace
|
||||
|
||||
"24'o01234567" Literal.Number.Oct
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"24 'o01234567" Literal.Number.Oct
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"24'o 01234567" Literal.Number.Oct
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"24'so01234567" Literal.Number.Oct
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"24'So01234567" Literal.Number.Oct
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"24'O01234567" Literal.Number.Oct
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"24'o0123_4567" Literal.Number.Oct
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"24'o01xXzZ?7" Literal.Number.Oct
|
||||
'\n\n' Text.Whitespace
|
||||
|
||||
"32'd27182818" Literal.Number.Integer
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32 'd27182818" Literal.Number.Integer
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'd 27182818" Literal.Number.Integer
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'sd27182818" Literal.Number.Integer
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'Sd27182818" Literal.Number.Integer
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'D27182818" Literal.Number.Integer
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'd2718_2818" Literal.Number.Integer
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'd27xXzZ?8" Literal.Number.Integer
|
||||
'\n\n' Text.Whitespace
|
||||
|
||||
"32'hdeadbeef" Literal.Number.Hex
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32 'hdeadbeef" Literal.Number.Hex
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'h deadbeef" Literal.Number.Hex
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'shdeadbeef" Literal.Number.Hex
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'Shdeadbeef" Literal.Number.Hex
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'Hdeadbeef" Literal.Number.Hex
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'hdead_beef" Literal.Number.Hex
|
||||
'\n' Text.Whitespace
|
||||
|
||||
"32'hdexXzZ?f" Literal.Number.Hex
|
||||
'\n\n' Text.Whitespace
|
||||
|
||||
"'0" Literal.Number
|
||||
' ' Text.Whitespace
|
||||
"'1" Literal.Number
|
||||
' ' Text.Whitespace
|
||||
"'x" Literal.Number
|
||||
' ' Text.Whitespace
|
||||
"'X" Literal.Number
|
||||
' ' Text.Whitespace
|
||||
"'z" Literal.Number
|
||||
' ' Text.Whitespace
|
||||
"'Z" Literal.Number
|
||||
'\n\n' Text.Whitespace
|
||||
|
||||
'42' Literal.Number.Integer
|
||||
' ' Text.Whitespace
|
||||
'1234_5678' Literal.Number.Integer
|
||||
'\n' Text.Whitespace
|
213
spec/tests/systemverilog/test_operators.txt
Normal file
213
spec/tests/systemverilog/test_operators.txt
Normal file
@ -0,0 +1,213 @@
|
||||
# See 1800-2017 Table 11-2: Operator Precedence and Associativity
|
||||
# Note that the duplicates (unary/binary) have been removed,
|
||||
# ie '+', '-', '&', '|', '^', '~^', '^~'
|
||||
# Note: This is a inconsistent mix of operator and punctuation
|
||||
# Note: Operators would ideally be represented as one token: ':' ':' -> '::', '~' '&' -> '~&'
|
||||
|
||||
---input---
|
||||
() [] :: .
|
||||
+ - ! ~ & ~& | ~| ^ ~^ ^~ ++ --
|
||||
**
|
||||
* / %
|
||||
<< >> <<< >>>
|
||||
< <= > >= inside dist
|
||||
== != === !== ==? !=?
|
||||
&&
|
||||
||
|
||||
?:
|
||||
-> <->
|
||||
= += -= *= /= %= &= ^= |= <<= >>= <<<= >>>= := :/ <=
|
||||
{} {{}}
|
||||
|
||||
---tokens---
|
||||
'(' Punctuation
|
||||
')' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'[' Punctuation
|
||||
']' Punctuation
|
||||
' ' Text.Whitespace
|
||||
':' Operator
|
||||
':' Operator
|
||||
' ' Text.Whitespace
|
||||
'.' Punctuation
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'+' Operator
|
||||
' ' Text.Whitespace
|
||||
'-' Operator
|
||||
' ' Text.Whitespace
|
||||
'!' Operator
|
||||
' ' Text.Whitespace
|
||||
'~' Operator
|
||||
' ' Text.Whitespace
|
||||
'&' Operator
|
||||
' ' Text.Whitespace
|
||||
'~' Operator
|
||||
'&' Operator
|
||||
' ' Text.Whitespace
|
||||
'|' Operator
|
||||
' ' Text.Whitespace
|
||||
'~' Operator
|
||||
'|' Operator
|
||||
' ' Text.Whitespace
|
||||
'^' Operator
|
||||
' ' Text.Whitespace
|
||||
'~' Operator
|
||||
'^' Operator
|
||||
' ' Text.Whitespace
|
||||
'^' Operator
|
||||
'~' Operator
|
||||
' ' Text.Whitespace
|
||||
'+' Operator
|
||||
'+' Operator
|
||||
' ' Text.Whitespace
|
||||
'-' Operator
|
||||
'-' Operator
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'*' Operator
|
||||
'*' Operator
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'*' Operator
|
||||
' ' Text.Whitespace
|
||||
'/' Operator
|
||||
' ' Text.Whitespace
|
||||
'%' Operator
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'<' Operator
|
||||
'<' Operator
|
||||
' ' Text.Whitespace
|
||||
'>' Operator
|
||||
'>' Operator
|
||||
' ' Text.Whitespace
|
||||
'<' Operator
|
||||
'<' Operator
|
||||
'<' Operator
|
||||
' ' Text.Whitespace
|
||||
'>' Operator
|
||||
'>' Operator
|
||||
'>' Operator
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'<' Operator
|
||||
' ' Text.Whitespace
|
||||
'<' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'>' Operator
|
||||
' ' Text.Whitespace
|
||||
'>' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'inside' Operator.Word
|
||||
' ' Text.Whitespace
|
||||
'dist' Operator.Word
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'=' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'!' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'=' Operator
|
||||
'=' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'!' Operator
|
||||
'=' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'=' Operator
|
||||
'=' Operator
|
||||
'?' Operator
|
||||
' ' Text.Whitespace
|
||||
'!' Operator
|
||||
'=' Operator
|
||||
'?' Operator
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'&' Operator
|
||||
'&' Operator
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'|' Operator
|
||||
'|' Operator
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'?' Operator
|
||||
':' Operator
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'-' Operator
|
||||
'>' Operator
|
||||
' ' Text.Whitespace
|
||||
'<' Operator
|
||||
'-' Operator
|
||||
'>' Operator
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'+' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'-' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'*' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'/' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'%' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'&' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'^' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'|' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'<' Operator
|
||||
'<' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'>' Operator
|
||||
'>' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'<' Operator
|
||||
'<' Operator
|
||||
'<' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
'>' Operator
|
||||
'>' Operator
|
||||
'>' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
':' Operator
|
||||
'=' Operator
|
||||
' ' Text.Whitespace
|
||||
':' Operator
|
||||
'/' Operator
|
||||
' ' Text.Whitespace
|
||||
'<' Operator
|
||||
'=' Operator
|
||||
'\n' Text.Whitespace
|
||||
|
||||
'{' Punctuation
|
||||
'}' Punctuation
|
||||
' ' Text.Whitespace
|
||||
'{' Punctuation
|
||||
'{' Punctuation
|
||||
'}' Punctuation
|
||||
'}' Punctuation
|
||||
'\n' Text.Whitespace
|
Reference in New Issue
Block a user