blob: d85705e87573492d8120e1a558e50faf6b483ba4 [file] [log] [blame]
/* created on 9/8/2012 9:28:14 AM from peg generator V1.0 using 'ExcelFormula.txt' as input*/
using Peg.Base;
using System;
using System.IO;
using System.Text;
namespace ExcelFormula
{
enum EExcelFormula{Formula= 1, Expression= 2, InfixTerms= 3, PreAndPostTerm= 4,
Term= 5, RefInfixTerms= 6, RefTerm= 7, Constant= 8, RefConstant= 9,
ErrorConstant= 10, LogicalConstant= 11, NumericalConstant= 12,
SignificandPart= 13, WholeNumberPart= 14, FractionalPart= 15,
ExponentPart= 16, StringConstant= 17, StringCharacter= 18, HighCharacter= 19,
ArrayConstant= 20, ConstantListRows= 21, ConstantListRow= 22,
InfixOperator= 23, ValueInfixOperator= 24, RefInfixOperator= 25,
UnionOperator= 26, IntersectionOperator= 27, RangeOperator= 28,
PostfixOperator= 29, PrefixOperator= 30, CellReference= 31, LocalCellReference= 32,
ExternalCellReference= 33, BookPrefix= 34, BangReference= 35,
SheetRangeReference= 36, SingleSheetPrefix= 37, SingleSheetReference= 38,
SingleSheetArea= 39, SingleSheet= 40, SheetRange= 41, WorkbookIndex= 42,
SheetName= 43, SheetNameCharacter= 44, SheetNameSpecial= 45,
SheetNameBaseCharacter= 46, A1Reference= 47, A1Cell= 48, A1Area= 49,
A1Column= 50, A1AbsoluteColumn= 51, A1RelativeColumn= 52, A1Row= 53,
A1AbsoluteRow= 54, A1RelativeRow= 55, CellFunctionCall= 56, UserDefinedFunctionCall= 57,
UserDefinedFunctionName= 58, ArgumentList= 59, Argument= 60,
ArgumentExpression= 61, ArgumentInfixTerms= 62, ArgumentPreAndPostTerm= 63,
ArgumentTerm= 64, ArgumentRefInfixTerms= 65, ArgumentRefTerm= 66,
ArgumentInfixOperator= 67, RefArgumentInfixOperator= 68, NameReference= 69,
ExternalName= 70, BangName= 71, Name= 72, NameStartCharacter= 73,
NameCharacter= 74, StructureReference= 75, TableIdentifier= 76,
TableName= 77, IntraTableReference= 78, InnerReference= 79, Keyword= 80,
KeywordList= 81, ColumnRange= 82, Column= 83, SimpleColumnName= 84,
EscapeColumnCharacter= 85, UnescapedColumnCharacter= 86, AnyNoSpaceColumnCharacter= 87,
SpacedComma= 88, SpacedLBracket= 89, SpacedRBracket= 90, ws= 91};
class ExcelFormula : PegCharParser
{
#region Input Properties
public static EncodingClass encodingClass = EncodingClass.ascii;
public static UnicodeDetection unicodeDetection = UnicodeDetection.notApplicable;
#endregion Input Properties
#region Constructors
public ExcelFormula()
: base()
{
}
public ExcelFormula(string src,TextWriter FerrOut)
: base(src,FerrOut)
{
}
#endregion Constructors
#region Overrides
public override string GetRuleNameFromId(int id)
{
try
{
EExcelFormula ruleEnum = (EExcelFormula)id;
string s= ruleEnum.ToString();
int val;
if( int.TryParse(s,out val) ){
return base.GetRuleNameFromId(id);
}else{
return s;
}
}
catch (Exception)
{
return base.GetRuleNameFromId(id);
}
}
public override void GetProperties(out EncodingClass encoding, out UnicodeDetection detection)
{
encoding = encodingClass;
detection = unicodeDetection;
}
#endregion Overrides
#region Grammar Rules
public bool Formula() /*Formula: Expression (!./FATAL<"end of line expected">);*/
{
return And(()=>
Expression()
&& ( Not(()=> Any() ) || Fatal("end of line expected")) );
}
public bool Expression() /*Expression: ws InfixTerms;*/
{
return And(()=> ws() && InfixTerms() );
}
public bool InfixTerms() /*InfixTerms: PreAndPostTerm (InfixOperator ws PreAndPostTerm)*;*/
{
return And(()=>
PreAndPostTerm()
&& OptRepeat(()=>
And(()=>
InfixOperator()
&& ws()
&& PreAndPostTerm() ) ) );
}
public bool PreAndPostTerm() /*PreAndPostTerm: (PrefixOperator ws)* Term (PostfixOperator ws)*;*/
{
return And(()=>
OptRepeat(()=> And(()=> PrefixOperator() && ws() ) )
&& Term()
&& OptRepeat(()=> And(()=> PostfixOperator() && ws() ) ) );
}
public bool Term() /*Term: (RefInfixTerms / '(' Expression ')' / Constant) ws;*/
{
return And(()=>
(
RefInfixTerms()
|| And(()=> Char('(') && Expression() && Char(')') )
|| Constant())
&& ws() );
}
public bool RefInfixTerms() /*RefInfixTerms: RefTerm (RefInfixOperator ws RefTerm)*;*/
{
return And(()=>
RefTerm()
&& OptRepeat(()=>
And(()=> RefInfixOperator() && ws() && RefTerm() ) ) );
}
public bool RefTerm() /*RefTerm: '(' ws RefInfixTerms ')' / RefConstant / CellFunctionCall / CellReference / UserDefinedFunctionCall
/ NameReference / StructureReference;*/
{
return
And(()=>
Char('(')
&& ws()
&& RefInfixTerms()
&& Char(')') )
|| RefConstant()
|| CellFunctionCall()
|| CellReference()
|| UserDefinedFunctionCall()
|| NameReference()
|| StructureReference();
}
public bool Constant() /*^^Constant: ErrorConstant / LogicalConstant / NumericalConstant / StringConstant / ArrayConstant;*/
{
return TreeNT((int)EExcelFormula.Constant,()=>
ErrorConstant()
|| LogicalConstant()
|| NumericalConstant()
|| StringConstant()
|| ArrayConstant() );
}
public bool RefConstant() /*RefConstant: '#REF!';*/
{
return Char('#','R','E','F','!');
}
public bool ErrorConstant() /*ErrorConstant: RefConstant / '#DIV/0!' / '#N/A' / '#NAME?' / '#NULL!' / '#NUM!' / '#VALUE!' / '#GETTING_DATA';*/
{
return
RefConstant()
|| Char('#','D','I','V','/','0','!')
|| Char('#','N','/','A')
|| Char('#','N','A','M','E','?')
|| Char('#','N','U','L','L','!')
|| Char('#','N','U','M','!')
|| Char('#','V','A','L','U','E','!')
|| Char("#GETTING_DATA");
}
public bool LogicalConstant() /*LogicalConstant: 'FALSE' / 'TRUE';*/
{
return Char('F','A','L','S','E') || Char('T','R','U','E');
}
public bool NumericalConstant() /*NumericalConstant: '-'? SignificandPart ExponentPart?;*/
{
return And(()=>
Option(()=> Char('-') )
&& SignificandPart()
&& Option(()=> ExponentPart() ) );
}
public bool SignificandPart() /*SignificandPart: WholeNumberPart FractionalPart? / FractionalPart;*/
{
return
And(()=>
WholeNumberPart()
&& Option(()=> FractionalPart() ) )
|| FractionalPart();
}
public bool WholeNumberPart() /*WholeNumberPart: [0-9]+;*/
{
return PlusRepeat(()=> In('0','9') );
}
public bool FractionalPart() /*FractionalPart: '.' [0-9]*;*/
{
return And(()=> Char('.') && OptRepeat(()=> In('0','9') ) );
}
public bool ExponentPart() /*ExponentPart: 'E' ('+' / '-')? [0-9]*;*/
{
return And(()=>
Char('E')
&& Option(()=> Char('+') || Char('-') )
&& OptRepeat(()=> In('0','9') ) );
}
public bool StringConstant() /*StringConstant: '"' ('""'/StringCharacter)* '"';*/
{
return And(()=>
Char('"')
&& OptRepeat(()=> Char('"','"') || StringCharacter() )
&& Char('"') );
}
public bool StringCharacter() /*StringCharacter: [#-~] / '!' / ' ' / HighCharacter;*/
{
return
In('#','~')
|| Char('!')
|| Char(' ')
|| HighCharacter();
}
public bool HighCharacter() /*HighCharacter: [#x80-#xFFFF];*/
{
return In('\u0080','\uffff');
}
public bool ArrayConstant() /*^^ArrayConstant: '{' ConstantListRows '}';*/
{
return TreeNT((int)EExcelFormula.ArrayConstant,()=>
And(()=> Char('{') && ConstantListRows() && Char('}') ) );
}
public bool ConstantListRows() /*ConstantListRows: ConstantListRow (';' ConstantListRow)*;*/
{
return And(()=>
ConstantListRow()
&& OptRepeat(()=>
And(()=> Char(';') && ConstantListRow() ) ) );
}
public bool ConstantListRow() /*^^ConstantListRow: Constant (',' Constant)*;*/
{
return TreeNT((int)EExcelFormula.ConstantListRow,()=>
And(()=>
Constant()
&& OptRepeat(()=> And(()=> Char(',') && Constant() ) ) ) );
}
public bool InfixOperator() /*InfixOperator: RefInfixOperator / ValueInfixOperator;*/
{
return RefInfixOperator() || ValueInfixOperator();
}
public bool ValueInfixOperator() /*^^ValueInfixOperator: '<>' / '>=' / '<=' / '^' / '*' / '/' / '+' / '-' / '&' / '=' / '<' / '>';*/
{
return TreeNT((int)EExcelFormula.ValueInfixOperator,()=>
OneOfLiterals(optimizedLiterals0) );
}
public bool RefInfixOperator() /*RefInfixOperator: RangeOperator / UnionOperator / IntersectionOperator;*/
{
return
RangeOperator()
|| UnionOperator()
|| IntersectionOperator();
}
public bool UnionOperator() /*^^UnionOperator: ',';*/
{
return TreeNT((int)EExcelFormula.UnionOperator,()=>
Char(',') );
}
public bool IntersectionOperator() /*^^IntersectionOperator: ' ';*/
{
return TreeNT((int)EExcelFormula.IntersectionOperator,()=>
Char(' ') );
}
public bool RangeOperator() /*^^RangeOperator: ':';*/
{
return TreeNT((int)EExcelFormula.RangeOperator,()=>
Char(':') );
}
public bool PostfixOperator() /*^^PostfixOperator: '%';*/
{
return TreeNT((int)EExcelFormula.PostfixOperator,()=>
Char('%') );
}
public bool PrefixOperator() /*^^PrefixOperator: '+' / '-';*/
{
return TreeNT((int)EExcelFormula.PrefixOperator,()=>
Char('+') || Char('-') );
}
public bool CellReference() /*CellReference: ExternalCellReference / LocalCellReference;*/
{
return ExternalCellReference() || LocalCellReference();
}
public bool LocalCellReference() /*LocalCellReference: A1Reference;*/
{
return A1Reference();
}
public bool ExternalCellReference() /*ExternalCellReference: BangReference / SheetRangeReference / SingleSheetReference;*/
{
return
BangReference()
|| SheetRangeReference()
|| SingleSheetReference();
}
public bool BookPrefix() /*BookPrefix: WorkbookIndex '!';*/
{
return And(()=> WorkbookIndex() && Char('!') );
}
public bool BangReference() /*BangReference: '!' (A1Reference / '#REF!');*/
{
return And(()=>
Char('!')
&& ( A1Reference() || Char('#','R','E','F','!')) );
}
public bool SheetRangeReference() /*SheetRangeReference: SheetRange '!' A1Reference;*/
{
return And(()=> SheetRange() && Char('!') && A1Reference() );
}
public bool SingleSheetPrefix() /*SingleSheetPrefix: SingleSheet '!';*/
{
return And(()=> SingleSheet() && Char('!') );
}
public bool SingleSheetReference() /*SingleSheetReference: SingleSheetPrefix (A1Reference / '#REF!');*/
{
return And(()=>
SingleSheetPrefix()
&& ( A1Reference() || Char('#','R','E','F','!')) );
}
public bool SingleSheetArea() /*SingleSheetArea: SingleSheetPrefix A1Area;*/
{
return And(()=> SingleSheetPrefix() && A1Area() );
}
public bool SingleSheet() /*SingleSheet: WorkbookIndex? SheetName / '\'' WorkbookIndex? SheetNameSpecial '\'';*/
{
return
And(()=>
Option(()=> WorkbookIndex() )
&& SheetName() )
|| And(()=>
Char('\'')
&& Option(()=> WorkbookIndex() )
&& SheetNameSpecial()
&& Char('\'') );
}
public bool SheetRange() /*SheetRange: WorkbookIndex? SheetName ':' SheetName / '\'' WorkbookIndex? SheetNameSpecial ':' SheetNameSpecial '\'';*/
{
return
And(()=>
Option(()=> WorkbookIndex() )
&& SheetName()
&& Char(':')
&& SheetName() )
|| And(()=>
Char('\'')
&& Option(()=> WorkbookIndex() )
&& SheetNameSpecial()
&& Char(':')
&& SheetNameSpecial()
&& Char('\'') );
}
public bool WorkbookIndex() /*^^WorkbookIndex: '[' WholeNumberPart ']';*/
{
return TreeNT((int)EExcelFormula.WorkbookIndex,()=>
And(()=> Char('[') && WholeNumberPart() && Char(']') ) );
}
public bool SheetName() /*^^SheetName: SheetNameCharacter+;*/
{
return TreeNT((int)EExcelFormula.SheetName,()=>
PlusRepeat(()=> SheetNameCharacter() ) );
}
public bool SheetNameCharacter() /*SheetNameCharacter: [A-Za-z0-9._] / HighCharacter;*/
{
return
(In('A','Z', 'a','z', '0','9')||OneOf("._"))
|| HighCharacter();
}
public bool SheetNameSpecial() /*^^SheetNameSpecial: SheetNameBaseCharacter ('\'\''* SheetNameBaseCharacter)*;*/
{
return TreeNT((int)EExcelFormula.SheetNameSpecial,()=>
And(()=>
SheetNameBaseCharacter()
&& OptRepeat(()=>
And(()=>
OptRepeat(()=> Char('\'','\'') )
&& SheetNameBaseCharacter() ) ) ) );
}
public bool SheetNameBaseCharacter() /*SheetNameBaseCharacter: [A-Za-z0-9!"#$%&()+,-.;<=>@^_`{|}~ ] / HighCharacter;*/
{
return OneOf(optimizedCharset0) || HighCharacter();
}
public bool A1Reference() /*^^A1Reference: (A1Column ':' A1Column) / (A1Row ':' A1Row) / A1Area / A1Cell;*/
{
return TreeNT((int)EExcelFormula.A1Reference,()=>
And(()=> A1Column() && Char(':') && A1Column() )
|| And(()=> A1Row() && Char(':') && A1Row() )
|| A1Area()
|| A1Cell() );
}
public bool A1Cell() /*A1Cell: A1Column A1Row !NameCharacter;*/
{
return And(()=>
A1Column()
&& A1Row()
&& Not(()=> NameCharacter() ) );
}
public bool A1Area() /*A1Area: A1Cell ':' A1Cell;*/
{
return And(()=> A1Cell() && Char(':') && A1Cell() );
}
public bool A1Column() /*^^A1Column: A1AbsoluteColumn / A1RelativeColumn;*/
{
return TreeNT((int)EExcelFormula.A1Column,()=>
A1AbsoluteColumn() || A1RelativeColumn() );
}
public bool A1AbsoluteColumn() /*A1AbsoluteColumn: '$' A1RelativeColumn;*/
{
return And(()=> Char('$') && A1RelativeColumn() );
}
public bool A1RelativeColumn() /*A1RelativeColumn: 'XF' [A-D] / 'X' [A-E] [A-Z] / [A-W][A-Z][A-Z] / [A-Z][A-Z] / [A-Z];*/
{
return
And(()=> Char('X','F') && In('A','D') )
|| And(()=> Char('X') && In('A','E') && In('A','Z') )
|| And(()=> In('A','W') && In('A','Z') && In('A','Z') )
|| And(()=> In('A','Z') && In('A','Z') )
|| In('A','Z');
}
public bool A1Row() /*^^A1Row: A1AbsoluteRow / A1RelativeRow;*/
{
return TreeNT((int)EExcelFormula.A1Row,()=>
A1AbsoluteRow() || A1RelativeRow() );
}
public bool A1AbsoluteRow() /*A1AbsoluteRow: '$' A1RelativeRow;*/
{
return And(()=> Char('$') && A1RelativeRow() );
}
public bool A1RelativeRow() /*A1RelativeRow: [1-9][0-9]*;*/
{
return And(()=> In('1','9') && OptRepeat(()=> In('0','9') ) );
}
public bool CellFunctionCall() /*^^CellFunctionCall: A1Cell '(' ArgumentList ')';*/
{
return TreeNT((int)EExcelFormula.CellFunctionCall,()=>
And(()=>
A1Cell()
&& Char('(')
&& ArgumentList()
&& Char(')') ) );
}
public bool UserDefinedFunctionCall() /*^^UserDefinedFunctionCall: UserDefinedFunctionName '(' ArgumentList ')';*/
{
return TreeNT((int)EExcelFormula.UserDefinedFunctionCall,()=>
And(()=>
UserDefinedFunctionName()
&& Char('(')
&& ArgumentList()
&& Char(')') ) );
}
public bool UserDefinedFunctionName() /*UserDefinedFunctionName: NameReference;*/
{
return NameReference();
}
public bool ArgumentList() /*ArgumentList: Argument (',' Argument)*;*/
{
return And(()=>
Argument()
&& OptRepeat(()=> And(()=> Char(',') && Argument() ) ) );
}
public bool Argument() /*Argument: ArgumentExpression / ws;*/
{
return ArgumentExpression() || ws();
}
public bool ArgumentExpression() /*^^ArgumentExpression: ws ArgumentInfixTerms;*/
{
return TreeNT((int)EExcelFormula.ArgumentExpression,()=>
And(()=> ws() && ArgumentInfixTerms() ) );
}
public bool ArgumentInfixTerms() /*ArgumentInfixTerms: ArgumentPreAndPostTerm (ArgumentInfixOperator ws ArgumentPreAndPostTerm)*;*/
{
return And(()=>
ArgumentPreAndPostTerm()
&& OptRepeat(()=>
And(()=>
ArgumentInfixOperator()
&& ws()
&& ArgumentPreAndPostTerm() ) ) );
}
public bool ArgumentPreAndPostTerm() /*ArgumentPreAndPostTerm: (PrefixOperator ws)* ArgumentTerm (PostfixOperator ws)*;*/
{
return And(()=>
OptRepeat(()=> And(()=> PrefixOperator() && ws() ) )
&& ArgumentTerm()
&& OptRepeat(()=> And(()=> PostfixOperator() && ws() ) ) );
}
public bool ArgumentTerm() /*ArgumentTerm: (ArgumentRefInfixTerms / '(' Expression ')' / Constant) ws;*/
{
return And(()=>
(
ArgumentRefInfixTerms()
|| And(()=> Char('(') && Expression() && Char(')') )
|| Constant())
&& ws() );
}
public bool ArgumentRefInfixTerms() /*ArgumentRefInfixTerms: ArgumentRefTerm (RefArgumentInfixOperator ws ArgumentRefTerm)*;*/
{
return And(()=>
ArgumentRefTerm()
&& OptRepeat(()=>
And(()=>
RefArgumentInfixOperator()
&& ws()
&& ArgumentRefTerm() ) ) );
}
public bool ArgumentRefTerm() /*ArgumentRefTerm: '(' ws RefInfixTerms ')' / RefConstant / CellFunctionCall / CellReference / UserDefinedFunctionCall
/ NameReference / StructureReference;*/
{
return
And(()=>
Char('(')
&& ws()
&& RefInfixTerms()
&& Char(')') )
|| RefConstant()
|| CellFunctionCall()
|| CellReference()
|| UserDefinedFunctionCall()
|| NameReference()
|| StructureReference();
}
public bool ArgumentInfixOperator() /*ArgumentInfixOperator: RefArgumentInfixOperator / ValueInfixOperator;*/
{
return RefArgumentInfixOperator() || ValueInfixOperator();
}
public bool RefArgumentInfixOperator() /*RefArgumentInfixOperator: RangeOperator / IntersectionOperator;*/
{
return RangeOperator() || IntersectionOperator();
}
public bool NameReference() /*^^NameReference: (ExternalName / Name) !'[';*/
{
return TreeNT((int)EExcelFormula.NameReference,()=>
And(()=>
( ExternalName() || Name())
&& Not(()=> Char('[') ) ) );
}
public bool ExternalName() /*ExternalName: BangName / (SingleSheetPrefix / BookPrefix) Name;*/
{
return
BangName()
|| And(()=>
( SingleSheetPrefix() || BookPrefix())
&& Name() );
}
public bool BangName() /*BangName: '!' Name;*/
{
return And(()=> Char('!') && Name() );
}
public bool Name() /*Name: NameStartCharacter NameCharacter*;*/
{
return And(()=>
NameStartCharacter()
&& OptRepeat(()=> NameCharacter() ) );
}
public bool NameStartCharacter() /*NameStartCharacter: [_\\A-Za-z] / HighCharacter;*/
{
return
(In('A','Z', 'a','z')||OneOf("_\\"))
|| HighCharacter();
}
public bool NameCharacter() /*NameCharacter: NameStartCharacter / [0-9] / '.' / '?' / HighCharacter;*/
{
return
NameStartCharacter()
|| In('0','9')
|| Char('.')
|| Char('?')
|| HighCharacter();
}
public bool StructureReference() /*^^StructureReference: TableIdentifier? IntraTableReference;*/
{
return TreeNT((int)EExcelFormula.StructureReference,()=>
And(()=>
Option(()=> TableIdentifier() )
&& IntraTableReference() ) );
}
public bool TableIdentifier() /*TableIdentifier: BookPrefix? TableName;*/
{
return And(()=> Option(()=> BookPrefix() ) && TableName() );
}
public bool TableName() /*TableName: Name;*/
{
return Name();
}
public bool IntraTableReference() /*IntraTableReference: SpacedLBracket InnerReference SpacedRBracket / Keyword / '[' SimpleColumnName ']';*/
{
return
And(()=>
SpacedLBracket()
&& InnerReference()
&& SpacedRBracket() )
|| Keyword()
|| And(()=>
Char('[')
&& SimpleColumnName()
&& Char(']') );
}
public bool InnerReference() /*InnerReference: (KeywordList SpacedComma)? ColumnRange / KeywordList;*/
{
return
And(()=>
Option(()=>
And(()=> KeywordList() && SpacedComma() ) )
&& ColumnRange() )
|| KeywordList();
}
public bool Keyword() /*Keyword: '[#All]' / '[#Data]' / '[#Headers]' / '[#Totals]' / '[#This Row]';*/
{
return
Char('[','#','A','l','l',']')
|| Char('[','#','D','a','t','a',']')
|| Char("[#Headers]")
|| Char("[#Totals]")
|| Char("[#This Row]");
}
public bool KeywordList() /*KeywordList: '[#Headers]' SpacedComma '[#Data]' / '[#Data]' SpacedComma '[#Totals]' / Keyword;*/
{
return
And(()=>
Char("[#Headers]")
&& SpacedComma()
&& Char('[','#','D','a','t','a',']') )
|| And(()=>
Char('[','#','D','a','t','a',']')
&& SpacedComma()
&& Char("[#Totals]") )
|| Keyword();
}
public bool ColumnRange() /*ColumnRange: Column (':' Column)?;*/
{
return And(()=>
Column()
&& Option(()=> And(()=> Char(':') && Column() ) ) );
}
public bool Column() /*Column: '[' ws SimpleColumnName ws ']' / SimpleColumnName;*/
{
return
And(()=>
Char('[')
&& ws()
&& SimpleColumnName()
&& ws()
&& Char(']') )
|| SimpleColumnName();
}
public bool SimpleColumnName() /*SimpleColumnName: AnyNoSpaceColumnCharacter+ (ws AnyNoSpaceColumnCharacter+)*;*/
{
return And(()=>
PlusRepeat(()=> AnyNoSpaceColumnCharacter() )
&& OptRepeat(()=>
And(()=>
ws()
&& PlusRepeat(()=> AnyNoSpaceColumnCharacter() ) ) ) );
}
public bool EscapeColumnCharacter() /*EscapeColumnCharacter: '\'' / '#' / '[' / ']';*/
{
return Char('\'') || Char('#') || Char('[') || Char(']');
}
public bool UnescapedColumnCharacter() /*UnescapedColumnCharacter: [A-Za-z0-9!"#$%&()*+,-./:;<=>?@\\^_`{|}~] / HighCharacter;*/
{
return OneOf(optimizedCharset1) || HighCharacter();
}
public bool AnyNoSpaceColumnCharacter() /*AnyNoSpaceColumnCharacter: ('\'' EscapeColumnCharacter) / UnescapedColumnCharacter;*/
{
return
And(()=> Char('\'') && EscapeColumnCharacter() )
|| UnescapedColumnCharacter();
}
public bool SpacedComma() /*SpacedComma: ' '? ',' ' '?;*/
{
return And(()=>
Option(()=> Char(' ') )
&& Char(',')
&& Option(()=> Char(' ') ) );
}
public bool SpacedLBracket() /*SpacedLBracket: '[' ' '?;*/
{
return And(()=> Char('[') && Option(()=> Char(' ') ) );
}
public bool SpacedRBracket() /*SpacedRBracket: ' '? ']';*/
{
return And(()=> Option(()=> Char(' ') ) && Char(']') );
}
public bool ws() /*ws: ' '*;*/
{
return OptRepeat(()=> Char(' ') );
}
#endregion Grammar Rules
#region Optimization Data
internal static OptimizedCharset optimizedCharset0;
internal static OptimizedCharset optimizedCharset1;
internal static OptimizedLiterals optimizedLiterals0;
static ExcelFormula()
{
{
OptimizedCharset.Range[] ranges = new OptimizedCharset.Range[]
{new OptimizedCharset.Range('A','Z'),
new OptimizedCharset.Range('a','z'),
new OptimizedCharset.Range('0','9'),
new OptimizedCharset.Range(',','.'),
};
char[] oneOfChars = new char[] {'!','"','#','$','%'
,'&','(',')','+',';'
,'<','=','>','@','^'
,'_','`','{','|','}'
,'~',' '};
optimizedCharset0= new OptimizedCharset(ranges,oneOfChars);
}
{
OptimizedCharset.Range[] ranges = new OptimizedCharset.Range[]
{new OptimizedCharset.Range('A','Z'),
new OptimizedCharset.Range('a','z'),
new OptimizedCharset.Range('0','9'),
new OptimizedCharset.Range(',','.'),
};
char[] oneOfChars = new char[] {'!','"','#','$','%'
,'&','(',')','*','+'
,'/',':',';','<','='
,'>','?','@','\\','^'
,'_','`','{','|','}'
,'~'};
optimizedCharset1= new OptimizedCharset(ranges,oneOfChars);
}
{
string[] literals=
{ "<>",">=","<=","^","*","/","+","-",
"&","=","<",">" };
optimizedLiterals0= new OptimizedLiterals(literals);
}
}
#endregion Optimization Data
}
}