mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-12-23 19:51:52 +00:00
96d4a3ecf7
Due to historical reasons, the code is in subfolder "1". With SVN removal, we place the code back and remove the annoying "1" folder.
240 lines
5.6 KiB
JavaScript
240 lines
5.6 KiB
JavaScript
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
|
|
|
(function() {
|
|
var mode = CodeMirror.getMode({indentUnit: 4}, "verilog");
|
|
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
|
|
|
|
MT("binary_literals",
|
|
"[number 1'b0]",
|
|
"[number 1'b1]",
|
|
"[number 1'bx]",
|
|
"[number 1'bz]",
|
|
"[number 1'bX]",
|
|
"[number 1'bZ]",
|
|
"[number 1'B0]",
|
|
"[number 1'B1]",
|
|
"[number 1'Bx]",
|
|
"[number 1'Bz]",
|
|
"[number 1'BX]",
|
|
"[number 1'BZ]",
|
|
"[number 1'b0]",
|
|
"[number 1'b1]",
|
|
"[number 2'b01]",
|
|
"[number 2'bxz]",
|
|
"[number 2'b11]",
|
|
"[number 2'b10]",
|
|
"[number 2'b1Z]",
|
|
"[number 12'b0101_0101_0101]",
|
|
"[number 1'b 0]",
|
|
"[number 'b0101]"
|
|
);
|
|
|
|
MT("octal_literals",
|
|
"[number 3'o7]",
|
|
"[number 3'O7]",
|
|
"[number 3'so7]",
|
|
"[number 3'SO7]"
|
|
);
|
|
|
|
MT("decimal_literals",
|
|
"[number 0]",
|
|
"[number 1]",
|
|
"[number 7]",
|
|
"[number 123_456]",
|
|
"[number 'd33]",
|
|
"[number 8'd255]",
|
|
"[number 8'D255]",
|
|
"[number 8'sd255]",
|
|
"[number 8'SD255]",
|
|
"[number 32'd123]",
|
|
"[number 32 'd123]",
|
|
"[number 32 'd 123]"
|
|
);
|
|
|
|
MT("hex_literals",
|
|
"[number 4'h0]",
|
|
"[number 4'ha]",
|
|
"[number 4'hF]",
|
|
"[number 4'hx]",
|
|
"[number 4'hz]",
|
|
"[number 4'hX]",
|
|
"[number 4'hZ]",
|
|
"[number 32'hdc78]",
|
|
"[number 32'hDC78]",
|
|
"[number 32 'hDC78]",
|
|
"[number 32'h DC78]",
|
|
"[number 32 'h DC78]",
|
|
"[number 32'h44x7]",
|
|
"[number 32'hFFF?]"
|
|
);
|
|
|
|
MT("real_number_literals",
|
|
"[number 1.2]",
|
|
"[number 0.1]",
|
|
"[number 2394.26331]",
|
|
"[number 1.2E12]",
|
|
"[number 1.2e12]",
|
|
"[number 1.30e-2]",
|
|
"[number 0.1e-0]",
|
|
"[number 23E10]",
|
|
"[number 29E-2]",
|
|
"[number 236.123_763_e-12]"
|
|
);
|
|
|
|
MT("operators",
|
|
"[meta ^]"
|
|
);
|
|
|
|
MT("keywords",
|
|
"[keyword logic]",
|
|
"[keyword logic] [variable foo]",
|
|
"[keyword reg] [variable abc]"
|
|
);
|
|
|
|
MT("variables",
|
|
"[variable _leading_underscore]",
|
|
"[variable _if]",
|
|
"[number 12] [variable foo]",
|
|
"[variable foo] [number 14]"
|
|
);
|
|
|
|
MT("tick_defines",
|
|
"[def `FOO]",
|
|
"[def `foo]",
|
|
"[def `FOO_bar]"
|
|
);
|
|
|
|
MT("system_calls",
|
|
"[meta $display]",
|
|
"[meta $vpi_printf]"
|
|
);
|
|
|
|
MT("line_comment", "[comment // Hello world]");
|
|
|
|
// Alignment tests
|
|
MT("align_port_map_style1",
|
|
/**
|
|
* mod mod(.a(a),
|
|
* .b(b)
|
|
* );
|
|
*/
|
|
"[variable mod] [variable mod][bracket (].[variable a][bracket (][variable a][bracket )],",
|
|
" .[variable b][bracket (][variable b][bracket )]",
|
|
" [bracket )];",
|
|
""
|
|
);
|
|
|
|
MT("align_port_map_style2",
|
|
/**
|
|
* mod mod(
|
|
* .a(a),
|
|
* .b(b)
|
|
* );
|
|
*/
|
|
"[variable mod] [variable mod][bracket (]",
|
|
" .[variable a][bracket (][variable a][bracket )],",
|
|
" .[variable b][bracket (][variable b][bracket )]",
|
|
"[bracket )];",
|
|
""
|
|
);
|
|
|
|
// Indentation tests
|
|
MT("indent_single_statement_if",
|
|
"[keyword if] [bracket (][variable foo][bracket )]",
|
|
" [keyword break];",
|
|
""
|
|
);
|
|
|
|
MT("no_indent_after_single_line_if",
|
|
"[keyword if] [bracket (][variable foo][bracket )] [keyword break];",
|
|
""
|
|
);
|
|
|
|
MT("indent_after_if_begin_same_line",
|
|
"[keyword if] [bracket (][variable foo][bracket )] [keyword begin]",
|
|
" [keyword break];",
|
|
" [keyword break];",
|
|
"[keyword end]",
|
|
""
|
|
);
|
|
|
|
MT("indent_after_if_begin_next_line",
|
|
"[keyword if] [bracket (][variable foo][bracket )]",
|
|
" [keyword begin]",
|
|
" [keyword break];",
|
|
" [keyword break];",
|
|
" [keyword end]",
|
|
""
|
|
);
|
|
|
|
MT("indent_single_statement_if_else",
|
|
"[keyword if] [bracket (][variable foo][bracket )]",
|
|
" [keyword break];",
|
|
"[keyword else]",
|
|
" [keyword break];",
|
|
""
|
|
);
|
|
|
|
MT("indent_if_else_begin_same_line",
|
|
"[keyword if] [bracket (][variable foo][bracket )] [keyword begin]",
|
|
" [keyword break];",
|
|
" [keyword break];",
|
|
"[keyword end] [keyword else] [keyword begin]",
|
|
" [keyword break];",
|
|
" [keyword break];",
|
|
"[keyword end]",
|
|
""
|
|
);
|
|
|
|
MT("indent_if_else_begin_next_line",
|
|
"[keyword if] [bracket (][variable foo][bracket )]",
|
|
" [keyword begin]",
|
|
" [keyword break];",
|
|
" [keyword break];",
|
|
" [keyword end]",
|
|
"[keyword else]",
|
|
" [keyword begin]",
|
|
" [keyword break];",
|
|
" [keyword break];",
|
|
" [keyword end]",
|
|
""
|
|
);
|
|
|
|
MT("indent_if_nested_without_begin",
|
|
"[keyword if] [bracket (][variable foo][bracket )]",
|
|
" [keyword if] [bracket (][variable foo][bracket )]",
|
|
" [keyword if] [bracket (][variable foo][bracket )]",
|
|
" [keyword break];",
|
|
""
|
|
);
|
|
|
|
MT("indent_case",
|
|
"[keyword case] [bracket (][variable state][bracket )]",
|
|
" [variable FOO]:",
|
|
" [keyword break];",
|
|
" [variable BAR]:",
|
|
" [keyword break];",
|
|
"[keyword endcase]",
|
|
""
|
|
);
|
|
|
|
MT("unindent_after_end_with_preceding_text",
|
|
"[keyword begin]",
|
|
" [keyword break]; [keyword end]",
|
|
""
|
|
);
|
|
|
|
MT("export_function_does_not_indent",
|
|
"[keyword export] [string \"DPI-C\"] [keyword function] [variable helloFromSV];",
|
|
""
|
|
);
|
|
|
|
MT("export_task_does_not_indent",
|
|
"[keyword export] [string \"DPI-C\"] [keyword task] [variable helloFromSV];",
|
|
""
|
|
);
|
|
|
|
|
|
})();
|