⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmerl_xpath_parse.yrl

📁 OTP是开放电信平台的简称
💻 YRL
字号:
%%% The contents of this file are subject to the Erlang Public License,%%% Version 1.0, (the "License"); you may not use this file except in%%% compliance with the License. You may obtain a copy of the License at%%% http://www.erlang.org/license/EPL1_0.txt%%%%%% Software distributed under the License is distributed on an "AS IS"%%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See%%% the License for the specific language governing rights and limitations%%% under the License.%%%%%% The Original Code is xmerl-0.6%%%%%% The Initial Developer of the Original Code is Ericsson Telecom%%% AB. Portions created by Ericsson are Copyright (C), 1998, Ericsson%%% Telecom AB. All Rights Reserved.%%%%%% Contributor(s): ______________________________________.%%%%%%----------------------------------------------------------------------%%% #0.    BASIC INFORMATION%%%----------------------------------------------------------------------%%% File:       xmerl_xpath_parse.erl%%% Author       : Ulf Wiger <ulf.wiger@ericsson.com>%%% Description  : Yecc spec for XPATH grammar%%%    This version of the parser is based on the XPATH spec:%%%    http://www.w3.org/TR/1999/REC-xpath-19991116 (XPATH version 1.0)%%%----------------------------------------------------------------------Nonterminals	'LocationPath'	'AbsoluteLocationPath'	'RelativeLocationPath'	'Step'%%	'AxisSpecifier'	'NodeTest'	'Predicate'	'PredicateExpr'	'AbbreviatedAbsoluteLocationPath'	'AbbreviatedRelativeLocationPath'	'AbbreviatedStep'%%	'AbbreviatedAxisSpecifier'	'Expr'	'PrimaryExpr'	'FunctionCall'	'Argument'	'UnionExpr'	'PathExpr'	'FilterExpr'	'OrExpr'	'AndExpr'	'EqualityExpr'	'RelationalExpr'	'AdditiveExpr'	'MultiplicativeExpr'	'UnaryExpr'%%	'Operator'%%	'OperatorName'	'MultiplyOperator'	'NameTest'	'<PredicateList>'	'<PredicateMember>'	'<ArgumentList>'	'<ArgumentMember>'	.Terminals	'number'	'axis'	'node_type'	'literal'	'prefix_test'	'var_reference'	'function_name'	'name'	'processing-instruction'	'wildcard'	'(' ')' '[' ']' '.' '..' '@' ',' '::'		'and' 'or' 'mod' 'div'	'/' '//' '|' '+' '-' '=' '!=' '<' '<=' '>' '>='	'*'	.Rootsymbol 'Expr'.Endsymbol '$end' .Left 100 'or' .Left 200 'and' .Left 300 '=' .Left 300 '!=' .Left 400 '<' .Left 400 '>=' .Left 400 '>' .Left 400 '<=' .Unary 500 '-' .Expect 2.%%------------------------------------------------------------%% Clauses%%%% [1]'LocationPath' -> 'RelativeLocationPath' : {path, rel, '$1'} .'LocationPath' -> 'AbsoluteLocationPath' : {path, abs, '$1'}.%% [2]'AbsoluteLocationPath' -> '/' 'RelativeLocationPath' : '$2' .'AbsoluteLocationPath' -> '/' : '/' .%% [3]'RelativeLocationPath' -> 'AbbreviatedAbsoluteLocationPath' : '$1' .'RelativeLocationPath' -> 'Step' : '$1' .'RelativeLocationPath' -> 'RelativeLocationPath' '/' 'Step' : 	{refine, '$1', '$3'} .'RelativeLocationPath' -> 'AbbreviatedRelativeLocationPath' : '$1' .%% [4]'Step' -> 'axis' '::' 'NodeTest' '<PredicateList>' 	: {step, {value('$1'), '$3', '$4'}} .'Step' -> 'axis' '::' 'NodeTest' 	: {step, {value('$1'), '$3', []}} .'Step' -> '@' 'name' '<PredicateList>' 	: {step, {value('$1'), '$2', '$3'}} .'Step' -> '@' 'name' 	: {step, {'attribute', '$2', []}} .'Step' -> 'NodeTest' '<PredicateList>'	: {step, {'child', '$1', '$2'}} .'Step' -> 'NodeTest' 	: {step, {'child', '$1', []}} .'Step' -> 'AbbreviatedStep' 	: {abbrev_step, '$1'} .'<PredicateList>' -> '<PredicateMember>' : lists:reverse('$1') .'<PredicateMember>' -> '<PredicateMember>' 'Predicate'	: ['$2'|'$1'] .'<PredicateMember>' -> 'Predicate' : ['$1'] .%% [5]%% 'AxisSpecifier' -> 'axis' '::' : '$1' .%% 'AxisSpecifier' -> 'AbbreviatedAxisSpecifier' : '$1' .%% [7]'NodeTest' -> 'NameTest' : '$1' .'NodeTest' -> 'node_type' '(' ')' : {node_type, value('$1')} .'NodeTest' -> 'processing-instruction' '(' 'literal' ')' 	: {processing_instruction, value('$3')} .%% [8]'Predicate' -> '[' 'PredicateExpr' ']' : {pred, '$2'} .%% [9]'PredicateExpr' -> 'Expr' : '$1' .%% [10] 'AbbreviatedAbsoluteLocationPath'  -> '//' 'RelativeLocationPath'	: {'//', '$2'} .%% [11] 'AbbreviatedRelativeLocationPath' -> 'RelativeLocationPath' '//' 'Step'	: {'$1', '//', '$3'} .%% [12]'AbbreviatedStep' -> '.' : '$1' .'AbbreviatedStep' -> '..' : '$1' .%% [13]%% 'AbbreviatedAxisSpecifier' ->  '$empty' : 'child' .%% 'AbbreviatedAxisSpecifier' ->  '@' : '$1' .%% [14]'Expr' -> 'OrExpr' : '$1' .%% [15]'PrimaryExpr' -> 'var_reference' : {variable_reference, value('$1')} .'PrimaryExpr' -> '(' Expr ')' : '$2' .'PrimaryExpr' -> 'literal' : {literal, value('$1')} .'PrimaryExpr' -> 'number' : {number, value('$1')} .'PrimaryExpr' -> 'FunctionCall' : '$1' .%% [16]'FunctionCall' -> 'function_name' '(' ')' : {function_call, value('$1'), []} .'FunctionCall' -> 'function_name' '(' '<ArgumentList>' ')'	: {function_call, value('$1'), '$3'} .'<ArgumentList>' -> '<ArgumentMember>' : lists:reverse('$1') .'<ArgumentMember>' -> '<ArgumentMember>' ',' 'Argument'	: ['$3'|'$1'] .'<ArgumentMember>' -> 'Argument' : ['$1'] .%% [17]'Argument' -> 'Expr' : '$1' .%% [18]'UnionExpr' -> 'PathExpr' : '$1' .'UnionExpr' -> 'UnionExpr' '|' 'PathExpr' : {path, union, {'$1', '$3'}} .%% [19]'PathExpr' -> 'LocationPath' : '$1' .'PathExpr' -> 'FilterExpr' : '$1' .'PathExpr' -> 'FilterExpr' '/' 'RelativeLocationPath' : {refine, '$1', '$3'} .'PathExpr' -> 'FilterExpr' '//' 'RelativeLocationPath' : {'$1', '//', '$3'} .%% [20]'FilterExpr' -> 'PrimaryExpr' : '$1' .'FilterExpr' -> 'FilterExpr' 'Predicate' : {path, filter, {'$1', '$2'}} .%% [21]'OrExpr' -> 'AndExpr' : '$1' .'OrExpr' -> 'OrExpr' 'or' 'AndExpr' 	: {bool, 'or', '$1', '$3'} .%% [22]'AndExpr' -> 'EqualityExpr' : '$1' .'AndExpr' -> 'AndExpr' 'and' 'EqualityExpr' 	: {bool, 'and', '$1', '$3'} .%% [23]'EqualityExpr' -> 'RelationalExpr' : '$1' .'EqualityExpr' -> 'EqualityExpr' '=' 'RelationalExpr' 	: {comp, '=', '$1', '$3'} .'EqualityExpr' -> 'EqualityExpr' '!=' 'RelationalExpr' 	: {comp, '!=', '$1', '$3'} .%%[24]'RelationalExpr' -> 'AdditiveExpr' : '$1' .'RelationalExpr' -> 'RelationalExpr' '<' 'AdditiveExpr' 	: {comp, '<', '$1', '$3'} .'RelationalExpr' -> 'RelationalExpr' '>' 'AdditiveExpr' 	: {comp, '>', '$1', '$3'} .'RelationalExpr' -> 'RelationalExpr' '<=' 'AdditiveExpr' 	: {comp, '<=', '$1', '$3'} .'RelationalExpr' -> 'RelationalExpr' '>=' 'AdditiveExpr' 	: {comp, '>=', '$1', '$3'} .%% [25]'AdditiveExpr' -> 'MultiplicativeExpr' : '$1' .'AdditiveExpr' -> 'AdditiveExpr' '+' 'MultiplicativeExpr'	: {arith, '+', '$1', '$3'} .'AdditiveExpr' -> 'AdditiveExpr' '-' 'MultiplicativeExpr'	: {arith, '-', '$1', '$3'} .%% [26]'MultiplicativeExpr' -> 'UnaryExpr' : '$1' .'MultiplicativeExpr' -> 'MultiplicativeExpr' 'MultiplyOperator' 'UnaryExpr'	: {arith, '$2', '$1', '$3'} .'MultiplicativeExpr' -> 'MultiplicativeExpr' 'div' 'UnaryExpr' 	: {arith, 'div', '$1', '$3'} .'MultiplicativeExpr' -> 'MultiplicativeExpr' 'mod' 'UnaryExpr' : 	{arith, 'mod', '$1', '$2'} .%% [27]'UnaryExpr' -> 'UnionExpr' : '$1' .'UnaryExpr' -> '-' UnaryExpr : {'negative', '$2'} .%% [32]%% 'Operator' -> 'OperatorName' : '$1' .%% 'Operator' -> 'MultiplyOperator' : '$1' .%% 'Operator' -> '/' : '$1' .%% 'Operator' -> '//' : '$1' .%% 'Operator' -> '|' : '$1' .%% 'Operator' -> '+' : '$1' .%% 'Operator' -> '-' : '$1' .%% 'Operator' -> '=' : '$1' .%% 'Operator' -> '!=' : '$1' .%% 'Operator' -> '<' : '$1' .%% 'Operator' -> '<=' : '$1' .%% 'Operator' -> '>' : '$1' .%% 'Operator' -> '>=' : '$1' .%% [33]%% 'OperatorName' -> 'and' : '$1' .%% 'OperatorName' -> 'mod' : '$1' .%% 'OperatorName' -> 'div' : '$1' .%% [34]'MultiplyOperator' -> '*' : '*' .%% [37]'NameTest' -> 'wildcard' : {wildcard, value('$1')} .'NameTest' -> 'prefix_test' : {prefix_test, value('$1')} .'NameTest' -> 'name' : {name, value('$1')} .Erlang code.% token({Token, _Line}) ->% 	Token;% token({Token, _Line, _Value}) ->% 	Token.value({Token, _Line}) ->	Token;value({_Token, _Line, Value}) ->	Value.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -