[gtksourceview] Add SystemVerilog language by Ben James. See bug #628246.



commit f5f7a98ec12c15ff4de99208496c915b4053277d
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Sat Sep 4 12:28:06 2010 +0200

    Add SystemVerilog language by Ben James. See bug #628246.

 data/language-specs/Makefile.am        |    1 +
 data/language-specs/systemverilog.lang |  263 ++++++++++++++++++++++++++++++++
 data/language-specs/testfiles.sh       |   51 ++++++
 po/POTFILES.in                         |    1 +
 4 files changed, 316 insertions(+), 0 deletions(-)
---
diff --git a/data/language-specs/Makefile.am b/data/language-specs/Makefile.am
index 366c3d8..81ba499 100644
--- a/data/language-specs/Makefile.am
+++ b/data/language-specs/Makefile.am
@@ -72,6 +72,7 @@ LANGUAGES =			\
 	sh.lang			\
 	sparql.lang		\
 	sql.lang		\
+	systemverilog.lang	\
 	t2t.lang		\
 	tcl.lang		\
 	texinfo.lang		\
diff --git a/data/language-specs/systemverilog.lang b/data/language-specs/systemverilog.lang
new file mode 100644
index 0000000..fdcf584
--- /dev/null
+++ b/data/language-specs/systemverilog.lang
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Author: Ben James
+ Copyright (C) 2010 Ben James
+
+ GtkSourceView is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ GtkSourceView is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+-->
+<language id="systemverilog" _name="SystemVerilog" version="2.0" _section="Sources">
+  <metadata>
+    <property name="globs">*.sv;*.svh</property>
+    <property name="line-comment-start">//</property>
+    <property name="block-comment-start">/*</property>
+    <property name="block-comment-end">*/</property>
+  </metadata>
+
+  <styles>
+    <style id="compiler-directive" _name="Compiler Directive" map-to="def:preprocessor"/>
+    <style id="system-task" _name="System Task" map-to="def:keyword"/>
+    <style id="keyword" _name="Keyword" map-to="def:keyword"/>
+    <style id="type" _name="Type" map-to="def:type"/>
+  </styles>
+
+  <definitions>
+
+    <context id="compiler-directive" style-ref="compiler-directive">
+      <prefix>`</prefix>
+      <keyword>begin_keywords</keyword>
+      <keyword>default_decay_time</keyword>
+      <keyword>default_trireg_strength</keyword>
+      <keyword>delay_mode_distributed</keyword>
+      <keyword>delay_mode_path</keyword>
+      <keyword>delay_mode_unit</keyword>
+      <keyword>delay_mode_zero</keyword>
+      <keyword>end_keywords</keyword>
+      <keyword>pragma</keyword>
+    </context>
+
+    <context id="system-task" style-ref="system-task">
+      <prefix>\$</prefix>
+      <keyword>assertkill</keyword>
+      <keyword>assertoff</keyword>
+      <keyword>asserton</keyword>
+      <keyword>bits</keyword>
+      <keyword>bitstoshortreal</keyword>
+      <keyword>cast</keyword>
+      <keyword>comment</keyword>
+      <keyword>countones</keyword>
+      <keyword>dimensions</keyword>
+      <keyword>error</keyword>
+      <keyword>exit</keyword>
+      <keyword>fatal</keyword>
+      <keyword>fell</keyword>
+      <keyword>fullskew</keyword>
+      <keyword>get_coverage</keyword>
+      <keyword>high</keyword>
+      <keyword>history</keyword>
+      <keyword>increment</keyword>
+      <keyword>info</keyword>
+      <keyword>isunbounded</keyword>
+      <keyword>isunknown</keyword>
+      <keyword>left</keyword>
+      <keyword>load_coverage_db</keyword>
+      <keyword>low</keyword>
+      <keyword>onehot</keyword>
+      <keyword>onehot0</keyword>
+      <keyword>past</keyword>
+      <keyword>recrem</keyword>
+      <keyword>removal</keyword>
+      <keyword>right</keyword>
+      <keyword>root</keyword>
+      <keyword>rose</keyword>
+      <keyword>sampled</keyword>
+      <keyword>set_coverage_db_name</keyword>
+      <keyword>shortrealtobits</keyword>
+      <keyword>showvariables</keyword>
+      <keyword>size</keyword>
+      <keyword>stable</keyword>
+      <keyword>timescale</keyword>
+      <keyword>timeskew</keyword>
+      <keyword>typename</keyword>
+      <keyword>typeof</keyword>
+      <keyword>urandom</keyword>
+      <keyword>unit</keyword>
+      <keyword>unpacked_dimensions</keyword>
+      <keyword>upscope</keyword>
+      <keyword>urandom</keyword>
+      <keyword>urandom_range</keyword>
+      <keyword>var</keyword>
+      <keyword>vcdclose</keyword>
+      <keyword>version</keyword>
+      <keyword>warning</keyword>
+    </context>
+
+    <context id="keyword" style-ref="keyword">
+      <keyword>accept_on</keyword>
+      <keyword>alias</keyword>
+      <keyword>always_comb</keyword>
+      <keyword>always_ff</keyword>
+      <keyword>always_latch</keyword>
+      <keyword>assert</keyword>
+      <keyword>assume</keyword>
+      <keyword>automatic</keyword>
+      <keyword>before</keyword>
+      <keyword>bind</keyword>
+      <keyword>bins</keyword>
+      <keyword>binsof</keyword>
+      <keyword>break</keyword>
+      <keyword>cell</keyword>
+      <keyword>checker</keyword>
+      <keyword>class</keyword>
+      <keyword>clocking</keyword>
+      <keyword>config</keyword>
+      <keyword>const</keyword>
+      <keyword>constraint</keyword>
+      <keyword>context</keyword>
+      <keyword>continue</keyword>
+      <keyword>cover</keyword>
+      <keyword>covergroup</keyword>
+      <keyword>coverpoint</keyword>
+      <keyword>cross</keyword>
+      <keyword>design</keyword>
+      <keyword>dist</keyword>
+      <keyword>do</keyword>
+      <keyword>endchecker</keyword>
+      <keyword>endclass</keyword>
+      <keyword>endclocking</keyword>
+      <keyword>endconfig</keyword>
+      <keyword>endgroup</keyword>
+      <keyword>endinterface</keyword>
+      <keyword>endpackage</keyword>
+      <keyword>endprogram</keyword>
+      <keyword>endproperty</keyword>
+      <keyword>endproperty</keyword>
+      <keyword>endsequence</keyword>
+      <keyword>endspecify</keyword>
+      <keyword>enum</keyword>
+      <keyword>expect</keyword>
+      <keyword>export</keyword>
+      <keyword>extends</keyword>
+      <keyword>extern</keyword>
+      <keyword>final</keyword>
+      <keyword>first_match</keyword>
+      <keyword>foreach</keyword>
+      <keyword>forever</keyword>
+      <keyword>forkjoin</keyword>
+      <keyword>global</keyword>
+      <keyword>iff</keyword>
+      <keyword>ignore_bins</keyword>
+      <keyword>illegal_bins</keyword>
+      <keyword>implies</keyword>
+      <keyword>import</keyword>
+      <keyword>incdir</keyword>
+      <keyword>inside</keyword>
+      <keyword>instance</keyword>
+      <keyword>interface</keyword>
+      <keyword>intersect</keyword>
+      <keyword>join_any</keyword>
+      <keyword>join_none</keyword>
+      <keyword>liblist</keyword>
+      <keyword>library</keyword>
+      <keyword>local</keyword>
+      <keyword>matches</keyword>
+      <keyword>modport</keyword>
+      <keyword>new</keyword>
+      <keyword>nexttime</keyword>
+      <keyword>noshoowcancelled</keyword>
+      <keyword>null</keyword>
+      <keyword>package</keyword>
+      <keyword>packed</keyword>
+      <keyword>priority</keyword>
+      <keyword>program</keyword>
+      <keyword>property</keyword>
+      <keyword>protected</keyword>
+      <keyword>pulsestyle_onevent</keyword>
+      <keyword>pulsestyle_ondetect</keyword>
+      <keyword>pure</keyword>
+      <keyword>rand</keyword>
+      <keyword>randc</keyword>
+      <keyword>randcase</keyword>
+      <keyword>randsequence</keyword>
+      <keyword>ref</keyword>
+      <keyword>reject_on</keyword>
+      <keyword>restrict</keyword>
+      <keyword>return</keyword>
+      <keyword>s_always</keyword>
+      <keyword>s_eventually</keyword>
+      <keyword>s_nexttime</keyword>
+      <keyword>s_until</keyword>
+      <keyword>s_until_with</keyword>
+      <keyword>sequence</keyword>
+      <keyword>showcancelled</keyword>
+      <keyword>solve</keyword>
+      <keyword>static</keyword>
+      <keyword>struct</keyword>
+      <keyword>super</keyword>
+      <keyword>sync_accept_on</keyword>
+      <keyword>sync_reject_on</keyword>
+      <keyword>tagged</keyword>
+      <keyword>this</keyword>
+      <keyword>throughout</keyword>
+      <keyword>timeprecision</keyword>
+      <keyword>timeunit</keyword>
+      <keyword>type</keyword>
+      <keyword>typedef</keyword>
+      <keyword>union</keyword>
+      <keyword>unique</keyword>
+      <keyword>unique0</keyword>
+      <keyword>until</keyword>
+      <keyword>until_with</keyword>
+      <keyword>untyped</keyword>
+      <keyword>use</keyword>
+      <keyword>var</keyword>
+      <keyword>virtual</keyword>
+      <keyword>void</keyword>
+      <keyword>wait_order</keyword>
+      <keyword>wildcard</keyword>
+      <keyword>with</keyword>
+      <keyword>within</keyword>
+    </context>
+
+    <context id="type" style-ref="type">
+      <keyword>bit</keyword>
+      <keyword>byte</keyword>
+      <keyword>chandle</keyword>
+      <keyword>genvar</keyword>
+      <keyword>int</keyword>
+      <keyword>localparam</keyword>
+      <keyword>logic</keyword>
+      <keyword>longint</keyword>
+      <keyword>shortint</keyword>
+      <keyword>shortreal</keyword>
+      <keyword>string</keyword>
+      <keyword>uwire</keyword>
+    </context>
+
+    <!-- Language definition: SystemVerilog-specific items and everything from Verilog. -->
+    <context id="systemverilog" class="no-spell-check">
+      <include>
+        <context ref="compiler-directive"/>
+        <context ref="system-task"/>
+        <context ref="keyword"/>
+        <context ref="type"/>
+        <context ref="verilog:verilog"/>
+      </include>
+    </context>
+
+  </definitions>
+
+</language>
diff --git a/data/language-specs/testfiles.sh b/data/language-specs/testfiles.sh
index 7aa4367..f27347c 100755
--- a/data/language-specs/testfiles.sh
+++ b/data/language-specs/testfiles.sh
@@ -15,6 +15,57 @@
 dir="testdir"
 mkdir -p $dir/
 
+cat > $dir/file.svh << EOFEOF
+class my_class extends some_class;
+
+  // This is a comment.
+  /* This is also a comment, but it containts keywords: bit string, etc */
+
+  // Some types.
+  string         my_string = "This is a string";
+  bit [3:0]        my_bits = 4'b0z1x;
+  integer       my_integer = 32'h0z2ab43x;
+  real             my_real = 1.2124155e-123;
+  shortreal   my_shortreal = -0.1111e1;
+  int               my_int = 53152462;
+ 
+  extern function bit
+    my_function(
+      int unsigned       something);
+
+endclass : my_class
+
+function bit
+  my_class::my_function(
+    int unsigned    something);
+
+  /* Display a string.
+   *
+   *   This is a slightly awkward string as it has
+   *   special characters and line continuations.
+   */
+  $display("Display a string that continues over \
+            multiple lines and contains special \
+            characters: \n \t \" \'");
+
+  // Use a system task.
+  my_int = $bits(my_bits);
+
+  // $asserton();     // Commenting a system task.
+  // my_function();   // Commenting a function.
+
+endfunction my_function
+
+program test();
+
+  my_class c;
+
+  c = new();
+  c.my_function(3);
+
+endprogram : test
+EOFEOF
+
 cat > $dir/file.prg << EOFEOF
 import "mod_say"
 import "mod_rand"
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 027ff77..d14cdd2 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -71,6 +71,7 @@ data/language-specs/scheme.lang
 data/language-specs/sh.lang
 data/language-specs/sparql.lang
 data/language-specs/sql.lang
+data/language-specs/systemverilog.lang
 data/language-specs/t2t.lang
 data/language-specs/tcl.lang
 data/language-specs/texinfo.lang



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]