diff options
author | ptmcg <ptmcg@9bf210a0-9d2d-494c-87cf-cfb32e7dff7b> | 2016-08-09 21:50:19 +0000 |
---|---|---|
committer | ptmcg <ptmcg@9bf210a0-9d2d-494c-87cf-cfb32e7dff7b> | 2016-08-09 21:50:19 +0000 |
commit | 0b19bb71ba5a4afa84e673a8239935426fa0db23 (patch) | |
tree | e9abae9c616fdfdfebd9a8a0931d8f21824f30d2 /trunk/src/examples/macroExpander.py | |
parent | b2c3ade75384efe76b8774b607e17fe98fab92ef (diff) | |
download | pyparsing_2.1.6.tar.gz |
Remove incorrect tag directorypyparsing_2.1.6
git-svn-id: svn://svn.code.sf.net/p/pyparsing/code/tags/pyparsing_2.1.6@405 9bf210a0-9d2d-494c-87cf-cfb32e7dff7b
Diffstat (limited to 'trunk/src/examples/macroExpander.py')
-rw-r--r-- | trunk/src/examples/macroExpander.py | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/trunk/src/examples/macroExpander.py b/trunk/src/examples/macroExpander.py deleted file mode 100644 index 327976c..0000000 --- a/trunk/src/examples/macroExpander.py +++ /dev/null @@ -1,60 +0,0 @@ -# macroExpander.py
-#
-# Example pyparsing program for performing macro expansion, similar to
-# the C pre-processor. This program is not as fully-featured, simply
-# processing macros of the form:
-# #def xxx yyyyy
-# and replacing xxx with yyyyy in the rest of the input string. Macros
-# can also be composed using other macros, such as
-# #def zzz xxx+1
-# Since xxx was previously defined as yyyyy, then zzz will be replaced
-# with yyyyy+1.
-#
-# Copyright 2007 by Paul McGuire
-#
-from pyparsing import *
-
-# define the structure of a macro definition (the empty term is used
-# to advance to the next non-whitespace character)
-identifier = Word(alphas+"_",alphanums+"_")
-macroDef = "#def" + identifier("macro") + empty + restOfLine("value")
-
-# define a placeholder for defined macros - initially nothing
-macroExpr = Forward()
-macroExpr << NoMatch()
-
-# global dictionary for macro definitions
-macros = {}
-
-# parse action for macro definitions
-def processMacroDefn(s,l,t):
- macroVal = macroExpander.transformString(t.value)
- macros[t.macro] = macroVal
- macroExpr << MatchFirst(map(Keyword, macros.keys()))
- return "#def " + t.macro + " " + macroVal
-
-# parse action to replace macro references with their respective definition
-def processMacroRef(s,l,t):
- return macros[t[0]]
-
-# attach parse actions to expressions
-macroExpr.setParseAction(processMacroRef)
-macroDef.setParseAction(processMacroDefn)
-
-# define pattern for scanning through the input string
-macroExpander = macroExpr | macroDef
-
-
-
-# test macro substitution using transformString
-testString = """
- #def A 100
- #def ALEN A+1
-
- char Astring[ALEN];
- char AA[A];
- typedef char[ALEN] Acharbuf;
- """
-
-print(macroExpander.transformString(testString))
-print(macros)
|