summaryrefslogtreecommitdiff
path: root/examples/cLibHeader.py
diff options
context:
space:
mode:
authorPaul McGuire <ptmcg@users.noreply.github.com>2018-01-06 23:38:53 -0600
committerGitHub <noreply@github.com>2018-01-06 23:38:53 -0600
commit430c5ad767cc946e9da7cd5f4673a4e3bd135a3c (patch)
tree5a7df11e0fd52ab320b0ef3e670e260f315ca9ae /examples/cLibHeader.py
parentf1d12567a8da4d254e6d62bb0d650c87c7d0bb89 (diff)
parentd953150a6db3ac247a64b047edc2df7156f3e56b (diff)
downloadpyparsing-git-430c5ad767cc946e9da7cd5f4673a4e3bd135a3c.tar.gz
Merge pull request #1 from cngkaygusuz/master
Add Scrutinizer-CI configuration and other niceties
Diffstat (limited to 'examples/cLibHeader.py')
-rw-r--r--examples/cLibHeader.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/examples/cLibHeader.py b/examples/cLibHeader.py
new file mode 100644
index 0000000..bb98521
--- /dev/null
+++ b/examples/cLibHeader.py
@@ -0,0 +1,25 @@
+#
+# cLibHeader.py
+#
+# A simple parser to extract API doc info from a C header file
+#
+# Copyright, 2012 - Paul McGuire
+#
+
+from pyparsing import Word, alphas, alphanums, Combine, oneOf, Optional, delimitedList, Group, Keyword
+
+testdata = """
+ int func1(float *vec, int len, double arg1);
+ int func2(float **arr, float *vec, int len, double arg1, double arg2);
+ """
+
+ident = Word(alphas, alphanums + "_")
+vartype = Combine( oneOf("float double int char") + Optional(Word("*")), adjacent = False)
+arglist = delimitedList(Group(vartype("type") + ident("name")))
+
+functionCall = Keyword("int") + ident("name") + "(" + arglist("args") + ")" + ";"
+
+for fn,s,e in functionCall.scanString(testdata):
+ print(fn.name)
+ for a in fn.args:
+ print(" - %(name)s (%(type)s)" % a)