summaryrefslogtreecommitdiff
path: root/trunk/src/examples/scanExamples.py
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/examples/scanExamples.py')
-rw-r--r--trunk/src/examples/scanExamples.py75
1 files changed, 0 insertions, 75 deletions
diff --git a/trunk/src/examples/scanExamples.py b/trunk/src/examples/scanExamples.py
deleted file mode 100644
index 24ae0e7..0000000
--- a/trunk/src/examples/scanExamples.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#
-# scanExamples.py
-#
-# Illustration of using pyparsing's scanString,transformString, and searchString methods
-#
-# Copyright (c) 2004, 2006 Paul McGuire
-#
-from pyparsing import Word, alphas, alphanums, Literal, restOfLine, OneOrMore, \
- empty, Suppress, replaceWith
-
-# simulate some C++ code
-testData = """
-#define MAX_LOCS=100
-#define USERNAME = "floyd"
-#define PASSWORD = "swordfish"
-
-a = MAX_LOCS;
-CORBA::initORB("xyzzy", USERNAME, PASSWORD );
-
-"""
-
-#################
-print("Example of an extractor")
-print("----------------------")
-
-# simple grammar to match #define's
-ident = Word(alphas, alphanums+"_")
-macroDef = Literal("#define") + ident.setResultsName("name") + "=" + restOfLine.setResultsName("value")
-for t,s,e in macroDef.scanString( testData ):
- print(t.name,":", t.value)
-
-# or a quick way to make a dictionary of the names and values
-# (return only key and value tokens, and construct dict from key-value pairs)
-# - empty ahead of restOfLine advances past leading whitespace, does implicit lstrip during parsing
-macroDef = Suppress("#define") + ident + Suppress("=") + empty + restOfLine
-macros = dict(list(macroDef.searchString(testData)))
-print("macros =", macros)
-print()
-
-
-#################
-print("Examples of a transformer")
-print("----------------------")
-
-# convert C++ namespaces to mangled C-compatible names
-scopedIdent = ident + OneOrMore( Literal("::").suppress() + ident )
-scopedIdent.setParseAction(lambda t: "_".join(t))
-
-print("(replace namespace-scoped names with C-compatible names)")
-print(scopedIdent.transformString( testData ))
-
-
-# or a crude pre-processor (use parse actions to replace matching text)
-def substituteMacro(s,l,t):
- if t[0] in macros:
- return macros[t[0]]
-ident.setParseAction( substituteMacro )
-ident.ignore(macroDef)
-
-print("(simulate #define pre-processor)")
-print(ident.transformString( testData ))
-
-
-
-#################
-print("Example of a stripper")
-print("----------------------")
-
-from pyparsing import dblQuotedString, LineStart
-
-# remove all string macro definitions (after extracting to a string resource table?)
-stringMacroDef = Literal("#define") + ident + "=" + dblQuotedString + LineStart()
-stringMacroDef.setParseAction( replaceWith("") )
-
-print(stringMacroDef.transformString( testData ))