aboutsummaryrefslogtreecommitdiff
path: root/KicadNetParser.g4
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2016-07-26 00:22:55 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2016-07-26 00:22:55 +0200
commit128e53d220d97225803d61d86f8e43439563181d (patch)
treee0d5da8d666c54d1d17e64ee6f52af424129f90d /KicadNetParser.g4
downloadkicad-utils-128e53d220d97225803d61d86f8e43439563181d.tar.gz
kicad-utils-128e53d220d97225803d61d86f8e43439563181d.tar.bz2
kicad-utils-128e53d220d97225803d61d86f8e43439563181d.tar.xz
kicad-utils-128e53d220d97225803d61d86f8e43439563181d.zip
WIP: kicad_gen is a util to generate schematic.h files from KiCAD netlist files.
Current code contains a lexer and parser for KiCAD's netlist files and code to build a tree of the netlist which can be used for generation. Contains CMake code for integrating the generation into CMake too.
Diffstat (limited to 'KicadNetParser.g4')
-rw-r--r--KicadNetParser.g472
1 files changed, 72 insertions, 0 deletions
diff --git a/KicadNetParser.g4 b/KicadNetParser.g4
new file mode 100644
index 0000000..dc45c4b
--- /dev/null
+++ b/KicadNetParser.g4
@@ -0,0 +1,72 @@
+parser grammar KicadNetParser;
+
+options {
+ tokenVocab = KicadNetLexer;
+}
+
+file:
+ form+
+ ;
+
+form:
+ name #formName
+ | component #formComponent
+ | field #formField
+ | net #formNet
+ | node #formNode
+ | pinDecl #formDecl
+ | ref #formRef
+ | value #formValue
+ | keyValue #formKeyValue
+ | string #formString
+ ;
+
+code:
+ '(' 'code' INTEGER ')'
+ ;
+
+component:
+ '(' 'comp' ref value keyValue* ')'
+ ;
+
+field:
+ '(' 'field' name string ')'
+ ;
+
+name:
+ '(' 'name' string ')'
+ ;
+
+net:
+ '(' 'net' code name node+ ')'
+ ;
+
+node:
+ '(' 'node' ref pinRef ')'
+ ;
+
+pinRef:
+ '(' 'pin' INTEGER ')'
+ ;
+
+pinDecl:
+ '(' 'pin' '(' 'num' INTEGER ')' '(' 'name' string ')' '(' 'type' string ')' ')'
+ ;
+
+ref:
+ '(' 'ref' string ')'
+ ;
+
+value:
+ '(' 'value' string ')'
+ ;
+
+keyValue:
+ '(' string form* ')'
+ ;
+
+string:
+ ID #stringId
+ | INTEGER #stringInt
+ | STRING #stringText
+ ;