diff --git a/src/SpiceSharpParser/Lexers/Expressions/Lexer.cs b/src/SpiceSharpParser/Lexers/Expressions/Lexer.cs index 78545a3b..686c2629 100644 --- a/src/SpiceSharpParser/Lexers/Expressions/Lexer.cs +++ b/src/SpiceSharpParser/Lexers/Expressions/Lexer.cs @@ -198,14 +198,15 @@ public void Next() number >= 'A' && number <= 'Z')) Continue(); break; - case char letter when letter >= 'a' && letter <= 'z' || letter >= 'A' && letter <= 'Z' || letter == '_': + case char letter when letter >= 'a' && letter <= 'z' || letter >= 'A' && letter <= 'Z': Type = TokenType.Identifier; Continue(); while ((Index < _expression.Length) && (( letter = _expression[Index]) >= 'a' && letter <= 'z' || letter >= 'A' && letter <= 'Z' || letter >= '0' && letter <= '9' || - letter == '_')) + letter == '_' || + letter == '&')) Continue(); break; diff --git a/src/SpiceSharpParser/Lexers/Netlist/Spice/SpiceLexer.cs b/src/SpiceSharpParser/Lexers/Netlist/Spice/SpiceLexer.cs index ceeffd70..3a03f371 100644 --- a/src/SpiceSharpParser/Lexers/Netlist/Spice/SpiceLexer.cs +++ b/src/SpiceSharpParser/Lexers/Netlist/Spice/SpiceLexer.cs @@ -60,7 +60,7 @@ private void BuildGrammar() { var builder = new LexerGrammarBuilder(); builder.AddRegexRule(new LexerInternalRule("LETTER", "[a-zA-Zµ]")); - builder.AddRegexRule(new LexerInternalRule("CHARACTER", @"[a-zA-Z0-9\-\+§µ]")); + builder.AddRegexRule(new LexerInternalRule("CHARACTER", @"[a-zA-Z0-9\-\+§µ_&]")); builder.AddRegexRule(new LexerInternalRule("DIGIT", "[0-9]")); builder.AddRegexRule(new LexerInternalRule("SPECIAL", @"[\/\\_\.:%!\#\-;\<\>\^\*\[\]]")); builder.AddRegexRule(new LexerTokenRule( diff --git a/src/SpiceSharpParser/ModelReaders/Netlist/Spice/Evaluation/SpiceEvaluationContext.cs b/src/SpiceSharpParser/ModelReaders/Netlist/Spice/Evaluation/SpiceEvaluationContext.cs index 9e5ee15c..c57fb636 100644 --- a/src/SpiceSharpParser/ModelReaders/Netlist/Spice/Evaluation/SpiceEvaluationContext.cs +++ b/src/SpiceSharpParser/ModelReaders/Netlist/Spice/Evaluation/SpiceEvaluationContext.cs @@ -79,6 +79,7 @@ private void CreateSpiceParameters() Parameters.Add("c", new ConstantExpression(299792500)); Parameters.Add("boltz", new ConstantExpression(1.38062e-23)); Parameters.Add("NaN", new ConstantExpression(double.NaN)); + Parameters.Add("Alpha_&_Omega", new ConstantExpression(double.PositiveInfinity)); } } } \ No newline at end of file