本文整理汇总了Python中pyparsing.quotedString.setParseAction函数的典型用法代码示例。如果您正苦于以下问题:Python setParseAction函数的具体用法?Python setParseAction怎么用?Python setParseAction使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了setParseAction函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: getkw_bnf
def getkw_bnf(self):
sect_begin = Literal("{").suppress()
sect_end = Literal("}").suppress()
array_begin = Literal("[").suppress()
array_end = Literal("]").suppress()
tag_begin = Literal("<").suppress()
tag_end = Literal(">").suppress()
eql = Literal("=").suppress()
dmark = Literal('$').suppress()
end_data=Literal('$end').suppress()
prtable = alphanums+r'!$%&*+-./<>[email protected]^_|~'
ival=Regex('[-]?\d+')
dval=Regex('-?\d+\.\d*([eE]?[+-]?\d+)?')
lval=Regex('([Yy]es|[Nn]o|[Tt]rue|[Ff]alse|[Oo]n|[Oo]ff)')
# Helper definitions
kstr= quotedString.setParseAction(removeQuotes) ^ \
dval ^ ival ^ lval ^ Word(prtable)
name = Word(alphas+"_",alphanums+"_")
vec=array_begin+delimitedList(dval ^ ival ^ lval ^ Word(prtable) ^ \
Literal("\n").suppress() ^ \
quotedString.setParseAction(removeQuotes))+array_end
sect=name+sect_begin
tag_sect=name+Group(tag_begin+name+tag_end)+sect_begin
# Grammar
keyword = name + eql + kstr
vector = name + eql + vec
data=Combine(dmark+name)+SkipTo(end_data)+end_data
section=Forward()
sect_def=(sect | tag_sect ) #| vec_sect)
input=section | data | vector | keyword
section << sect_def+ZeroOrMore(input) + sect_end
# Parsing actions
ival.setParseAction(self.conv_ival)
dval.setParseAction(self.conv_dval)
lval.setParseAction(self.conv_lval)
keyword.setParseAction(self.store_key)
vector.setParseAction(self.store_vector)
data.setParseAction(self.store_data)
sect.setParseAction(self.add_sect)
tag_sect.setParseAction(self.add_sect)
sect_end.setParseAction(self.pop_sect)
bnf=ZeroOrMore(input) + StringEnd().setFailAction(parse_error)
bnf.ignore(pythonStyleComment)
return bnf
开发者ID:juselius,项目名称:libgetkw,代码行数:49,代码来源:getkw.py
示例2: getEbnfParser
def getEbnfParser(symbols):
""" Returns an EBNF parser for the command language. """
identifier = Word(alphas + '_', alphanums + '_')
string = quotedString.setParseAction(
lambda t: symbols.append((t[0][1:-1], TokenType.StrLit))
)
integer = Word(nums).setParseAction(
lambda t: symbols.append((int(t[0]), TokenType.NumLit))
)
var = Suppress("$") + identifier
var.setParseAction(
lambda t: symbols.append((t[0], TokenType.Var))
)
literal = var | string | integer
fnid = Suppress(Optional(".")) + identifier
fnid.setParseAction(
lambda t: symbols.append((t[0], TokenType.Call))
)
call = Forward()
callb = fnid + ZeroOrMore(call | literal)
call << ((Suppress("(") + callb + Suppress(")")) | callb)
fndef_head = Suppress("let") + identifier
fndef_head.setParseAction(
lambda t: symbols.append((t[0], TokenType.Def))
)
definition = fndef_head + ZeroOrMore(var) + Suppress("=") + call
cmd = OneOrMore((definition | call) + Word(";").setParseAction(
lambda t: symbols.append((t[0], TokenType.End))
))
msg = OneOrMore(cmd)
return msg
开发者ID:AnotherTest,项目名称:DictatorBot,代码行数:31,代码来源:Command.py
示例3: get_standard_type_defs
def get_standard_type_defs(word):
tuple_str = Forward()
list_str = Forward()
dict_str = Forward()
cvt_tuple = lambda toks: tuple(toks.asList())
cvt_dict = lambda toks: dict(toks.asList())
list_item = (
none
| boolean
| real
| integer
| list_str
| tuple_str
| dict_str
| quotedString.setParseAction(removeQuotes)
| word
)
list_item2 = list_item | Empty().setParseAction(lambda: [None])
tuple_str.inner = list_of(list_item)
tuple_str.inner.setParseAction(cvt_tuple)
tuple_str << (lparen + tuple_str.inner + rparen)
list_str.inner = tuple_str.inner.copy()
list_str.inner.setParseAction(lambda toks: list(toks))
list_str << (lbrack + list_str.inner + rbrack)
dict_entry = Group(list_item + colon + list_item2)
dict_str.inner = list_of(dict_entry)
dict_str.inner.setParseAction(cvt_dict)
dict_str << (lbrace + Optional(dict_str.inner) + rbrace)
return {"tuple": tuple_str, "list": list_str, "dict": dict_str, "list_item": list_item}
开发者ID:brbr520,项目名称:sfepy,代码行数:34,代码来源:parse_conf.py
示例4: _query_expression
def _query_expression():
operand = quotedString.setParseAction(removeQuotes)
return operatorPrecedence(operand, [
(CaselessLiteral('not'), 1, opAssoc.RIGHT, _not_expression),
(CaselessLiteral('and'), 2, opAssoc.LEFT, _and_expression),
(CaselessLiteral('or'), 2, opAssoc.LEFT, _or_expression)
])
开发者ID:eugeniy,项目名称:odatalastic,代码行数:7,代码来源:odata.py
示例5: pyparse_gml
def pyparse_gml():
"""A pyparsing tokenizer for GML graph format.
This is not intended to be called directly.
See Also
--------
write_gml, read_gml, parse_gml
Notes
-----
This doesn't implement the complete GML specification for
nested attributes for graphs, edges, and nodes.
"""
global graph
try:
from pyparsing import \
Literal, CaselessLiteral, Word, Forward,\
ZeroOrMore, Group, Dict, Optional, Combine,\
ParseException, restOfLine, White, alphas, alphanums, nums,\
OneOrMore,quotedString,removeQuotes,dblQuotedString
except ImportError:
raise ImportError, \
"Import Error: not able to import pyparsing: http://pyparsing.wikispaces.com/"
if not graph:
lbrack = Literal("[").suppress()
rbrack = Literal("]").suppress()
pound = ("#")
comment = pound + Optional( restOfLine )
white = White(" \t\n")
point = Literal(".")
e = CaselessLiteral("E")
integer = Word(nums).setParseAction(lambda s,l,t:[ int(t[0])])
real = Combine( Word("+-"+nums, nums )+
Optional(point+Optional(Word(nums)))+
Optional(e+Word("+-"+nums, nums))).setParseAction(
lambda s,l,t:[ float(t[0]) ])
key = Word(alphas,alphanums+'_')
value_atom = integer^real^Word(alphanums)^quotedString.setParseAction(removeQuotes)
value = Forward() # to be defined later with << operator
keyvalue = Group(key+value)
value << (value_atom | Group( lbrack + ZeroOrMore(keyvalue) + rbrack ))
node = Group(Literal("node") + lbrack + Group(OneOrMore(keyvalue)) + rbrack)
edge = Group(Literal("edge") + lbrack + Group(OneOrMore(keyvalue)) + rbrack)
creator = Group(Literal("Creator")+ Optional( restOfLine ))
version = Group(Literal("Version")+ Optional( restOfLine ))
graphkey = Literal("graph").suppress()
graph = Optional(creator)+Optional(version)+\
graphkey + lbrack + ZeroOrMore( (node|edge|keyvalue) ) + rbrack
graph.ignore(comment)
return graph
开发者ID:mhawthorne,项目名称:antonym,代码行数:58,代码来源:gml.py
示例6: string_literal
def string_literal(self):
"""
string_literal ::= "'" string "'" | "\"" string "\""
Any successful match is converted to a single quoted string to simplify
post-parsed operations.
"""
return quotedString.setParseAction(
lambda s, l, t: "'{string}'".format(string=removeQuotes(s, l, t)))
开发者ID:pyrapt,项目名称:rapt,代码行数:9,代码来源:proto_grammar.py
示例7: getkw_bnf
def getkw_bnf(self):
sect_begin = Literal("{").suppress()
sect_end = Literal("}").suppress()
array_begin = Literal("[").suppress()
array_end = Literal("]").suppress()
arg_begin = Literal("(").suppress()
arg_end = Literal(")").suppress()
eql = Literal("=").suppress()
dmark = Literal('$').suppress()
end_data=Literal('$end').suppress()
prtable = alphanums+r'!$%&*+-./<>[email protected]^_|~'
# Helper definitions
kstr=Word(prtable) ^ quotedString.setParseAction(removeQuotes)
name = Word(alphas+"_",alphanums+"_")
vec=array_begin+delimitedList(Word(prtable) ^ \
Literal("\n").suppress() ^ \
quotedString.setParseAction(removeQuotes))+array_end
sect=name+sect_begin
key_sect=name+Group(arg_begin+kstr+arg_end)+sect_begin
vec_sect=name+Group(arg_begin+vec+ arg_end)+sect_begin
# Grammar
keyword = name + eql + kstr
vector = name + eql + vec
data=Combine(dmark+name)+SkipTo(end_data)+end_data
section=Forward()
sect_def=(sect | key_sect | vec_sect)
input=section | data | vector | keyword
section << sect_def+ZeroOrMore(input) + sect_end
# Parsing actions
keyword.setParseAction(self.store_key)
vector.setParseAction(self.store_vector)
data.setParseAction(self.store_data)
sect.setParseAction(self.add_sect)
key_sect.setParseAction(self.add_sect)
vec_sect.setParseAction(self.add_vecsect)
sect_end.setParseAction(self.pop_sect)
bnf=ZeroOrMore(input) + StringEnd().setFailAction(parse_error)
bnf.ignore(pythonStyleComment)
return bnf
开发者ID:juselius,项目名称:gimic,代码行数:44,代码来源:getkw.py
示例8: _getPattern
def _getPattern(self):
arith_expr = Forward()
comp_expr = Forward()
logic_expr = Forward()
LPAR, RPAR, SEMI = map(Suppress, "();")
identifier = Word(alphas+"_", alphanums+"_")
multop = oneOf('* /')
plusop = oneOf('+ -')
expop = Literal( "^" )
compop = oneOf('> < >= <= != ==')
andop = Literal("AND")
orop = Literal("OR")
current_value = Literal( "." )
assign = Literal( "=" )
# notop = Literal('NOT')
function = oneOf(' '.join(self.FUNCTIONS))
function_call = Group(function.setResultsName('fn') + LPAR + Optional(delimitedList(arith_expr)) + RPAR)
aggregate_column = QuotedString(quoteChar='{', endQuoteChar='}')
single_column = QuotedString(quoteChar='[', endQuoteChar=']')
integer = Regex(r"-?\d+")
real = Regex(r"-?\d+\.\d*")
# quotedString enables strings without quotes to pass
operand = \
function_call.setParseAction(self.__evalFunction) | \
aggregate_column.setParseAction(self.__evalAggregateColumn) | \
single_column.setParseAction(self.__evalSingleColumn) | \
((real | integer).setParseAction(self.__evalConstant)) | \
quotedString.setParseAction(self.__evalString).addParseAction(removeQuotes) | \
current_value.setParseAction(self.__evalCurrentValue) | \
identifier.setParseAction(self.__evalString)
arith_expr << operatorPrecedence(operand,
[
(expop, 2, opAssoc.LEFT, self.__expOp),
(multop, 2, opAssoc.LEFT, self.__multOp),
(plusop, 2, opAssoc.LEFT, self.__addOp),
])
# comp_expr = Group(arith_expr + compop + arith_expr)
comp_expr << operatorPrecedence(arith_expr,
[
(compop, 2, opAssoc.LEFT, self.__evalComparisonOp),
])
logic_expr << operatorPrecedence(comp_expr,
[
(andop, 2, opAssoc.LEFT, self.__evalLogicOp),
(orop, 2, opAssoc.LEFT, self.__evalLogicOp)
])
pattern = logic_expr + StringEnd()
return pattern
开发者ID:ArnoldOchieng,项目名称:echo-sense,代码行数:54,代码来源:expressionParser.py
示例9: get_standard_type_defs
def get_standard_type_defs(word=word_free):
"""
Return dict of the pyparsing base lexical elements.
The compound types (tuple, list, dict) can contain compound types or simple
types such as integers, floats and words.
Parameters
----------
word : lexical element
A custom lexical element for word.
Returns
-------
defs : dict
The dictionary with the following items:
- tuple: (..., ..., ...)
- list: [..., ...., ...]
- dict: {...:..., ...:..., ....} or {...=..., ...=..., ....}
- list_item: any of preceding compound types or simple types
"""
tuple_str = Forward()
list_str = Forward()
dict_str = Forward()
cvt_tuple = lambda toks : tuple(toks.asList())
cvt_dict = lambda toks: dict(toks.asList())
list_item = (none | boolean | cmplx | real | integer | list_str | tuple_str
| dict_str
| quotedString.setParseAction(removeQuotes)
| word)
list_item2 = list_item | Empty().setParseAction(lambda: [None])
tuple_str.inner = list_of(list_item)
tuple_str.inner.setParseAction(cvt_tuple)
tuple_str << (lparen + tuple_str.inner + rparen)
list_str.inner = tuple_str.inner.copy()
list_str.inner.setParseAction(lambda toks: [list(toks)])
list_str << (lbrack + list_str.inner + rbrack)
dict_entry = Group(list_item + (colon | equal_sign) + list_item2)
dict_str.inner = list_of(dict_entry)
dict_str.inner.setParseAction(cvt_dict)
dict_str << (lbrace + Optional(dict_str.inner) + rbrace)
defs = {'tuple' : tuple_str,
'list' : list_str,
'dict' : dict_str,
'list_item' : list_item}
return defs
开发者ID:clazaro,项目名称:sfepy,代码行数:53,代码来源:parse_conf.py
示例10: define_string
def define_string(self):
"""
Return the syntax definition for a string.
**Do not override this method**, it's not necessary: it already
supports unicode strings. If you want to override the delimiters,
check :attr:`T_QUOTES`.
"""
string = quotedString.setParseAction(removeQuotes, self.make_string)
string.setName("string")
return string
开发者ID:aipub,项目名称:booleano,代码行数:12,代码来源:parsers.py
示例11: __init__
def __init__(self):
dash = Word("-",max=2)
operator = oneOf(": =")
argValueType1 = quotedString.setParseAction(removeQuotes)
argValueType2 = Regex("[a-zA-Z0-9_\./]+")
positionalArgument = (argValueType1 | argValueType2)
regularArgument = Combine(dash + Word(alphas) + operator + (argValueType1 | argValueType2))
novalueArgument = Combine(dash + Word(alphas))
arguments = ZeroOrMore(positionalArgument | regularArgument | novalueArgument)
self.parser = Group(Word(alphas) + arguments).setResultsName("command")
开发者ID:johnwilson,项目名称:server-core,代码行数:14,代码来源:parser.py
示例12: parse_poi_file
def parse_poi_file(self):
floatNumber = Regex(r'-?\d+(\.\d*)?([eE][\+-]\d+)?').setParseAction(lambda s, l, t: [float(t[0])])
integer = Word(nums).setParseAction(lambda s, l, t: [long(t[0])])
numericValue = floatNumber | integer
poiline = numericValue + numericValue + quotedString.setParseAction(removeQuotes)
try:
for a in poiline.searchString(file(self.poi_file).read()):
self.latlon.append(a.asList())
print a.asList()
except TypeError as e:
print "failed to open poi file"
raise
开发者ID:mvrk,项目名称:BACKUP,代码行数:14,代码来源:models.py
示例13: pyparse_gml
def pyparse_gml():
"""pyparser tokenizer for GML graph format
This doesn't implement the complete GML specification for
nested attributes for graphs, edges, and nodes.
"""
global graph
try:
from pyparsing import \
Literal, CaselessLiteral,Word,\
ZeroOrMore, Group, Dict, Optional, Combine,\
ParseException, restOfLine, White, alphanums, nums,\
OneOrMore,quotedString,removeQuotes,dblQuotedString
except ImportError:
raise ImportError, \
"Import Error: not able to import pyparsing: http://pyparsing.wikispaces.com/"
if not graph:
creator = Literal("Creator")+ Optional( restOfLine )
graphkey = Literal("graph").suppress()
lbrack = Literal("[").suppress()
rbrack = Literal("]").suppress()
pound = ("#")
comment = pound + Optional( restOfLine )
white = White(" \t\n")
point = Literal(".")
e = CaselessLiteral("E")
integer = Word(nums).setParseAction(lambda s,l,t:[ int(t[0])])
real = Combine( Word("+-"+nums, nums )+
Optional(point+Optional(Word(nums)))+
Optional(e+Word("+-"+nums, nums))).setParseAction(
lambda s,l,t:[ float(t[0]) ])
key=Word(alphanums)
value=integer^real^Word(alphanums)^quotedString.setParseAction(removeQuotes)
keyvalue = Dict(Group(key+OneOrMore(white).suppress()\
+value+OneOrMore(white).suppress()))
node = Group(Literal("node") + lbrack + OneOrMore(keyvalue) + rbrack)
edge = Group(Literal("edge") + lbrack + OneOrMore(keyvalue) + rbrack)
graph = Optional(creator)+\
graphkey + lbrack + OneOrMore(edge|node|keyvalue) + rbrack
graph.ignore(comment)
return graph
开发者ID:jbjorne,项目名称:CVSTransferTest,代码行数:45,代码来源:gml.py
示例14: load_js_obj_literal
def load_js_obj_literal(j):
"""Terrible hack."""
j = j[j.index('{'):]
j = j.replace('\n', '').replace('\t', '')
j = j.replace(';', '')
j = re.sub(r'//.*?{', r'{', j)
LBRACK, RBRACK, LBRACE, RBRACE, COLON, COMMA = map(Suppress,"[]{}:,")
integer = Regex(r"[+-]?\d+").setParseAction(lambda t:int(t[0]))
real = Regex(r"[+-]?\d+\.\d*").setParseAction(lambda t:float(t[0]))
string_ = Word(alphas,alphanums+"_") | quotedString.setParseAction(removeQuotes)
bool_ = oneOf("true false").setParseAction(lambda t: t[0]=="true")
item = Forward()
key = string_
dict_ = LBRACE - Optional(dictOf(key+COLON, item+Optional(COMMA))) + RBRACE
list_ = LBRACK - Optional(delimitedList(item)) + RBRACK
item << (real | integer | string_ | bool_ | Group(list_ | dict_ ))
result = item.parseString(j,parseAll=True)[0]
return result
开发者ID:iMeyerKimera,项目名称:pyMon,代码行数:18,代码来源:utils.py
示例15: create_bnf
def create_bnf():
cvt_int = lambda toks: int(toks[0])
cvt_real = lambda toks: float(toks[0])
cvt_tuple = lambda toks : tuple(toks.asList())
cvt_dict = lambda toks: dict(toks.asList())
# define punctuation as suppressed literals
(lparen, rparen, lbrack, rbrack,
lbrace, rbrace, colon) = map(Suppress,"()[]{}:")
integer = Combine(Optional(oneOf("+ -")) + Word(nums)).setName("integer")
integer.setParseAction(cvt_int)
real = Combine(Optional(oneOf("+ -"))+ Word(nums)
+ "." + Optional(Word(nums))
+ Optional("e" + Optional(oneOf("+ -"))
+ Word(nums))).setName("real")
real.setParseAction(cvt_real)
tuple_str = Forward()
list_str = Forward()
dict_str = Forward()
list_item = (real | integer | Group(list_str) | tuple_str | dict_str
| quotedString.setParseAction(removeQuotes)
| Word(alphas8bit + alphas, alphas8bit + alphanums + "_"))
list_item2 = list_item | Empty().setParseAction(lambda: [None])
tuple_str << (Suppress("(") + Optional(delimitedList(list_item)) +
Optional(Suppress(",")) + Suppress(")"))
tuple_str.setParseAction(cvt_tuple)
list_str << (lbrack + Optional(delimitedList(list_item) +
Optional(Suppress(","))) + rbrack)
dict_entry = Group(list_item + colon + list_item2)
dict_inner = delimitedList(dict_entry) + Optional(Suppress(","))
dict_inner.setParseAction(cvt_dict)
dict_str << (lbrace + Optional(dict_inner) + rbrace)
return dict_inner
开发者ID:renatocoutinho,项目名称:sfepy,代码行数:42,代码来源:parse_conf.py
示例16: Combine
realNum = Combine(Optional(arithSign) +
(Word(nums) + "." + Optional(Word(nums)) | ("." + Word(nums))) # noqa
+ Optional(E + Optional(arithSign) + Word(nums)))
realNum.setParseAction(lambda x: expression.NumericLiteral(float(x[0])))
intNum = Combine(Optional(arithSign) + Word(nums) +
Optional(E + Optional("+") + Word(nums)))
intNum.setParseAction(lambda x: expression.NumericLiteral(int(x[0])))
number = realNum | intNum
variable = ident.copy()
variable.setParseAction(lambda x: model.Var(x[0]))
quotedString.setParseAction(lambda x: expression.StringLiteral(x[0][1:-1]))
literal = quotedString | number
valueref = variable | literal
def mkterm(x):
return model.Term(x)
term = (predicate
+ drop("(")
+ Group(delimitedList(valueref, ","))
+ drop(")")).setParseAction(mkterm)
开发者ID:EvgenyKarataev,项目名称:raco,代码行数:28,代码来源:grammar.py
示例17: __init__
def __init__(self):
self.json_query = {'query':{}, 'and': [], 'or': []}
self.tokens = None
#--------------------------------------------------------------------------------------
# <integer> ::= 0-9
# <double> ::= 0-9 ('.' 0-9)
# <number> ::= <integer> | <double>
#--------------------------------------------------------------------------------------
integer = Regex(r'-?[0-9]+') # Word matches space for some reason
double = Regex(r'-?[0-9]+.?[0-9]*')
number = double | integer
#--------------------------------------------------------------------------------------
# <python-string> ::= (String surrounded by double-quotes)
# <wildcard-string> ::= <python-string>
# <limited-string> ::= '"' a..z A..Z 9..9 _ . '"' (alpha nums and ._ surrounded by double quotes)
# <field> ::= <limited-string> | "*"
# <coords> ::= "LAT" <number> "LON" <number>
# <units> ::= ('km' | 'mi' | 'nm')
# <distance> ::= REGEX(([0-9]*\.?[0-9]*)(km|mi|nm)?)
#--------------------------------------------------------------------------------------
python_string = quotedString.setParseAction(removeQuotes)
wildcard_string = python_string
limited_string = Regex(r'("(?:[a-zA-Z0-9_\.])*"|\'(?:[a-zA-Z0-9_\.]*)\')').setParseAction(removeQuotes)
field = limited_string ^ CaselessLiteral('"*"').setParseAction(removeQuotes)
coords = CaselessLiteral("LAT") + number + CaselessLiteral("LON") + number
units = CaselessLiteral('km') | CaselessLiteral('mi')
distance = number + units
distance.setParseAction( lambda x : self.frame.update({'dist' : float(x[0]), 'units' : x[1]}))
#--------------------------------------------------------------------------------------
# Date
#--------------------------------------------------------------------------------------
date = python_string
#--------------------------------------------------------------------------------------
# <query-filter> ::= "FILTER" <python-string>
# <index-name> ::= <python-string>
# <resource-id> ::= '"' a..z A..Z 0..9 $ _ -'"' (alpha nums surrounded by double quotes)
# <collection-id> ::= <resource-id>
#--------------------------------------------------------------------------------------
query_filter = CaselessLiteral("FILTER") + python_string
# Add the filter to the frame object
query_filter.setParseAction(lambda x : self.frame.update({'filter' : x[1]}))
index_name = MatchFirst(python_string)
# Add the index to the frame object
index_name.setParseAction(lambda x : self.frame.update({'index' : x[0]}))
resource_id = Regex(r'("(?:[a-zA-Z0-9\$_-])*"|\'(?:[a-zA-Z0-9\$_-]*)\')').setParseAction(removeQuotes)
collection_id = resource_id
#--------------------------------------------------------------------------------------
# <from-statement> ::= "FROM" <number>
# <to-statement> ::= "TO" <number>
#--------------------------------------------------------------------------------------
from_statement = CaselessLiteral("FROM") + number
from_statement.setParseAction(lambda x : self.frame.update({'from' : x[1]}))
to_statement = CaselessLiteral("TO") + number
to_statement.setParseAction(lambda x : self.frame.update({'to' : x[1]}))
#--------------------------------------------------------------------------------------
# <date-from-statement> ::= "FROM" <date>
# <date-to-statement> ::= "TO" <date>
#--------------------------------------------------------------------------------------
date_from_statement = CaselessLiteral("FROM") + date
date_from_statement.setParseAction(lambda x : self.frame.update({'from' : x[1]}))
date_to_statement = CaselessLiteral("TO") + date
date_to_statement.setParseAction(lambda x : self.frame.update({'to' : x[1]}))
#--------------------------------------------------------------------------------------
# <time-query> ::= "TIME FROM" <date> "TO" <date>
#--------------------------------------------------------------------------------------
time_query = CaselessLiteral("TIME") + Optional(date_from_statement) + Optional(date_to_statement)
time_query.setParseAction(lambda x : self.time_frame())
# time.mktime(dateutil.parser.parse(x[2])), 'to':time.mktime(dateutil.parser.parse(x[4]))}}))
#--------------------------------------------------------------------------------------
# <time-bounds> ::= "TIMEBOUNDS" <from-statement> <to-statement>
#--------------------------------------------------------------------------------------
time_bounds = CaselessLiteral("TIMEBOUNDS") + date_from_statement + date_to_statement
time_bounds.setParseAction(lambda x : self.time_bounds_frame())
#--------------------------------------------------------------------------------------
# <vertical-bounds> ::= "VERTICAL" <from-statement> <to-statement>
#--------------------------------------------------------------------------------------
vertical_bounds = CaselessLiteral("VERTICAL") + from_statement + to_statement
vertical_bounds.setParseAction(lambda x : self.vertical_bounds_frame())
#--------------------------------------------------------------------------------------
# <range-query> ::= "VALUES" [<from-statement>] [<to-statement>]
#--------------------------------------------------------------------------------------
range_query = CaselessLiteral("VALUES") + Optional(from_statement) + Optional(to_statement)
# Add the range to the frame object
range_query.setParseAction(lambda x : self.range_frame())
#.........这里部分代码省略.........
开发者ID:MatthewArrott,项目名称:coi-services,代码行数:101,代码来源:query_language.py
示例18: addToTree
symbol=t[0][0]
d={}
addToTree(symbol,d)
treestack.append(curtree)
curtree=d
def endBlock(s,l,t):
global curtree,treestack
debugToks("endBlock",s,l,t)
curtree=treestack.pop()
symbol=Word(alphas+'_',alphanums+'_')
hexval=Combine(Literal('0x')+Word(nums+'abcdefABCDEF')).setParseAction(convertHex)
decval=Word(nums).setParseAction(convertDec)
enumval=Word(alphas+'_',alphanums+'_').setParseAction(convertEnum)
stringval=quotedString.setParseAction(convertStr)
value=hexval|decval|quotedString|enumval
assignment=Group(symbol+'='+value).setParseAction(addAssignment)
block=Forward()
statement=assignment|block
block<<Group(symbol+'{').setParseAction(startBlock)+ZeroOrMore(statement)+Literal('}').setParseAction(endBlock)
comment=cStyleComment|(Literal('//')+restOfLine)
config=ZeroOrMore(statement).ignore(comment)
def parseFile(s):
global config, tree, curtree
tree={}
curtree=tree
treestack=[]
config.parseFile(s)
return tree
开发者ID:BackupTheBerlios,项目名称:porus-svn,代码行数:31,代码来源:cnfparse.py
示例19: _create_field_parser
def _create_field_parser():
"""
Creates a parser using pyparsing that works with bibfield rule definitions
BNF like grammar:
rule ::= ([persitent_identifier] json_id ["[0]" | "[n]"] "," aliases":" INDENT body UNDENT) | include | python_comment
include ::= "include(" PATH ")"
body ::= [inherit_from] (creator | derived | calculated) [checker] [documentation] [producer]
aliases ::= json_id ["[0]" | "[n]"] ["," aliases]
creator ::= "creator:" INDENT creator_body+ UNDENT
creator_body ::= [decorators] source_format "," source_tag "," python_allowed_expr
source_format ::= MASTER_FORMATS
source_tag ::= QUOTED_STRING
derived ::= "derived" INDENT derived_calculated_body UNDENT
calculated ::= "calculated:" INDENT derived_calculated_body UNDENT
derived_calculated_body ::= [decorators] "," python_allowed_exp
decorators ::= (peristent_identfier | legacy | do_not_cache | parse_first | depends_on | only_if | only_if_master_value)*
peristent_identfier ::= @persitent_identifier( level )
legacy ::= "@legacy(" correspondences+ ")"
correspondences ::= "(" source_tag [ "," tag_name ] "," json_id ")"
parse_first ::= "@parse_first(" jsonid+ ")"
depends_on ::= "@depends_on(" json_id+ ")"
only_if ::= "@only_if(" python_condition+ ")"
only_if_master_value ::= "@only_if_master_value(" python_condition+ ")"
inherit_from ::= "@inherit_from()"
python_allowed_exp ::= ident | list_def | dict_def | list_access | dict_access | function_call
checker ::= "checker:" INDENT checker_function+ UNDENT
documentation ::= INDENT doc_string subfield* UNDENT
doc_string ::= QUOTED_STRING
subfield ::= "@subfield" json_id["."json_id*] ":" docstring
producer ::= "producer:" INDENT producer_body UNDENT
producer_body ::= producer_code "," python_dictionary
producer_code ::= ident
"""
indent_stack = [1]
def check_sub_indent(str, location, tokens):
cur_col = col(location, str)
if cur_col > indent_stack[-1]:
indent_stack.append(cur_col)
else:
raise ParseException(str, location, "not a subentry")
def check_unindent(str, location, tokens):
if location >= len(str):
return
cur_col = col(location, str)
if not (cur_col < indent_stack[-1] and cur_col <= indent_stack[-2]):
raise ParseException(str, location, "not an unindent")
def do_unindent():
indent_stack.pop()
INDENT = lineEnd.suppress() + empty + empty.copy().setParseAction(check_sub_indent)
UNDENT = FollowedBy(empty).setParseAction(check_unindent)
UNDENT.setParseAction(do_unindent)
json_id = (
(Word(alphas + "_", alphanums + "_") + Optional(oneOf("[0] [n]")))
.setResultsName("json_id", listAllMatches=True)
.setParseAction(lambda tokens: "".join(tokens))
)
aliases = delimitedList(
(Word(alphanums + "_") + Optional(oneOf("[0] [n]"))).setParseAction(lambda tokens: "".join(tokens))
).setResultsName("aliases")
ident = Word(alphas + "_", alphanums + "_")
dict_def = originalTextFor(nestedExpr("{", "}"))
list_def = originalTextFor(nestedExpr("[", "]"))
dict_access = list_access = originalTextFor(ident + nestedExpr("[", "]"))
function_call = originalTextFor(ZeroOrMore(ident + ".") + ident + nestedExpr("(", ")"))
python_allowed_expr = (dict_def ^ list_def ^ dict_access ^ list_access ^ function_call ^ restOfLine).setResultsName(
"value", listAllMatches=True
)
persistent_identifier = (Suppress("@persistent_identifier") + nestedExpr("(", ")")).setResultsName(
"persistent_identifier"
)
legacy = (Suppress("@legacy") + originalTextFor(nestedExpr("(", ")"))).setResultsName("legacy", listAllMatches=True)
only_if = (Suppress("@only_if") + originalTextFor(nestedExpr("(", ")"))).setResultsName("only_if")
only_if_master_value = (Suppress("@only_if_value") + originalTextFor(nestedExpr("(", ")"))).setResultsName(
"only_if_master_value"
)
depends_on = (Suppress("@depends_on") + originalTextFor(nestedExpr("(", ")"))).setResultsName("depends_on")
parse_first = (Suppress("@parse_first") + originalTextFor(nestedExpr("(", ")"))).setResultsName("parse_first")
memoize = (Suppress("@memoize") + nestedExpr("(", ")")).setResultsName("memoize")
field_decorator = parse_first ^ depends_on ^ only_if ^ only_if_master_value ^ memoize ^ legacy
# Independent decorators
inherit_from = (Suppress("@inherit_from") + originalTextFor(nestedExpr("(", ")"))).setResultsName("inherit_from")
#.........这里部分代码省略.........
开发者ID:BessemAamira,项目名称:invenio,代码行数:101,代码来源:bibfield_config_engine.py
示例20: Literal
from utils import choose_one, error_exit
REGEX_SPECIAL_CHARS = r'([\.\*\+\?\|\(\)\{\}\[\]])'
REGEX_LOG_FORMAT_VARIABLE = r'\$([a-z0-9\_]+)'
LOG_FORMAT_COMBINED = '$remote_addr - $remote_user [$time_local] ' \
'"$request" $status $body_bytes_sent ' \
'"$http_referer" "$http_user_agent"'
# common parser element
semicolon = Literal(';').suppress()
# nginx string parameter can contain any character except: { ; " '
parameter = Word(''.join(c for c in printables if c not in set('{;"\'')))
# which can also be quoted
parameter = parameter | quotedString.setParseAction(removeQuotes)
def detect_config_path():
"""
Get nginx configuration file path based on `nginx -V` output
:return: detected nginx configuration file path
"""
try:
proc = subprocess.Popen(['nginx', '-V'], stderr=subprocess.PIPE)
except OSError:
error_exit('Access log file or format was not set and nginx config file cannot be detected. ' +
'Perhaps nginx is not in your PATH?')
stdout, stderr = proc.communicate()
version_output = stderr.decode('utf-8')
开发者ID:healthly,项目名称:ngxtop,代码行数:30,代码来源:config_parser.py
注:本文中的pyparsing.quotedString.setParseAction函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论