Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/Samples/Kaleidoscope/Chapter8/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
using System.IO;

using Kaleidoscope.Grammar;
using Kaleidoscope.Grammar.AST;

using Ubiquity.NET.CommandLine;
using Ubiquity.NET.Llvm;
Expand Down Expand Up @@ -60,7 +59,7 @@ public static int Main( string[] args )
Console.WriteLine( "Compiling {0}", sourceFilePath );

// Create adapter to route parse messages for the Kaleidoscope language to the command line reporter for this app
var errorLogger = new ParseErrorDiagnosticAdapter<DiagnosticCode>(reporter, "KLS", new Uri(sourceFilePath) );
var errorLogger = new ParseErrorDiagnosticAdapter(reporter, "KLS", new Uri(sourceFilePath) );

// time the parse and code generation
var timer = System.Diagnostics.Stopwatch.StartNew( );
Expand Down
3 changes: 1 addition & 2 deletions src/Samples/Kaleidoscope/Chapter9/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
using System.IO;

using Kaleidoscope.Grammar;
using Kaleidoscope.Grammar.AST;

using Ubiquity.NET.CommandLine;
using Ubiquity.NET.Llvm;
Expand Down Expand Up @@ -60,7 +59,7 @@ public static int Main( string[] args )
Console.WriteLine( "Compiling {0}", sourceFilePath );

// Create adapter to route parse messages for the Kaleidoscope language to the command line reporter for this app
var errorLogger = new ParseErrorDiagnosticAdapter<DiagnosticCode>(reporter, "KLS", new Uri(sourceFilePath) );
var errorLogger = new ParseErrorDiagnosticAdapter(reporter, "KLS", new Uri(sourceFilePath) );

// time the parse and code generation
var timer = System.Diagnostics.Stopwatch.StartNew( );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ namespace Kaleidoscope.Grammar.ANTLR
// on language features enabled.
internal partial class KaleidoscopeLexer
{
public KaleidoscopeLexer( char[] input, LanguageLevel languageLevel, IParseErrorListener<DiagnosticCode> errorListener )
public KaleidoscopeLexer( char[] input, LanguageLevel languageLevel, IParseErrorListener errorListener )
: this( new AntlrInputStream( input.ThrowIfNull(), input.Length ) )
{
LanguageLevel = languageLevel;
AddErrorListener( new AntlrParseErrorListenerAdapter<DiagnosticCode>( errorListener ) );
AddErrorListener( new AntlrParseErrorListenerAdapter( errorListener ) );
}

public LanguageLevel LanguageLevel { get; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ internal partial class KaleidoscopeParser
public KaleidoscopeParser(
ITokenStream tokenStream,
DynamicRuntimeState globalState,
IParseErrorListener<DiagnosticCode>? errorListener,
IParseErrorListener? errorListener,
bool useDiagnosticListener = false
)
: this( tokenStream )
Expand All @@ -31,7 +31,7 @@ public KaleidoscopeParser(
if(errorListener != null)
{
RemoveErrorListeners();
AddErrorListener( new AntlrParseErrorListenerAdapter<DiagnosticCode>( errorListener ) );
AddErrorListener( new AntlrParseErrorListenerAdapter( errorListener ) );
}

if(globalState.LanguageLevel >= LanguageLevel.UserDefinedOperators)
Expand Down
24 changes: 12 additions & 12 deletions src/Samples/Kaleidoscope/Kaleidoscope.Grammar/AST/AstBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public AstBuilder( DynamicRuntimeState globalState )

public override IAstNode VisitErrorNode( IErrorNode node )
{
return new ErrorNode<DiagnosticCode>( node.GetSourceRange(), DiagnosticCode.SyntaxError, $"Syntax Error: {node}" );
return new ErrorNode( node.GetSourceRange(), (int)DiagnosticCode.SyntaxError, $"Syntax Error: {node}" );
}

public override IAstNode VisitParenExpression( ParenExpressionContext context )
Expand All @@ -44,15 +44,15 @@ public override IAstNode VisitVariableExpression( VariableExpressionContext cont
string varName = context.Name;
return NamedValues.TryGetValue( varName, out IVariableDeclaration? declaration )
? new VariableReferenceExpression( context.GetSourceRange(), declaration )
: new ErrorNode<DiagnosticCode>( context.GetSourceRange(), DiagnosticCode.UnknownVariable, $"Unknown variable name: {varName}" );
: new ErrorNode( context.GetSourceRange(), (int)DiagnosticCode.UnknownVariable, $"Unknown variable name: {varName}" );
}

public override IAstNode VisitFunctionCallExpression( FunctionCallExpressionContext context )
{
Prototype? function = FindCallTarget( context.CaleeName );
if(function is null)
{
return new ErrorNode<DiagnosticCode>( context.GetSourceRange(), DiagnosticCode.InvokeUnknownFunction, $"Call to unknown function '{context.CaleeName}'" );
return new ErrorNode( context.GetSourceRange(), (int)DiagnosticCode.InvokeUnknownFunction, $"Call to unknown function '{context.CaleeName}'" );
}

var argNodes = ( from expCtx in context.expression( )
Expand Down Expand Up @@ -98,7 +98,7 @@ public override IAstNode VisitExpression( ExpressionContext context )
public override IAstNode VisitExternalDeclaration( ExternalDeclarationContext context )
{
var retVal = ( Prototype )context.Signature.Accept( this );
var errors = retVal.CollectErrors<DiagnosticCode>( );
var errors = retVal.CollectErrors( );
if(errors.Length == 0)
{
RuntimeState.FunctionDeclarations.AddOrReplaceItem( retVal );
Expand All @@ -118,7 +118,7 @@ public override IAstNode VisitFunctionDefinition( FunctionDefinitionContext cont
}

var body = context.BodyExpression.Accept( this );
var errors = body.CollectErrors<DiagnosticCode>( );
var errors = body.CollectErrors( );

// test for a non-expression (ErrorNode)
if(body is not IExpression exp)
Expand Down Expand Up @@ -152,7 +152,7 @@ public override IAstNode VisitTopLevelExpression( TopLevelExpressionContext cont
BeginFunctionDefinition();
var sig = new Prototype( context.GetSourceRange( ), RuntimeState.GenerateAnonymousName( ), true );
var bodyNode = context.expression( ).Accept( this );
var errors = bodyNode.CollectErrors<DiagnosticCode>();
var errors = bodyNode.CollectErrors();

// only add valid definitions to the runtime state.
if(errors.Length > 0 || bodyNode is not IExpression bodyExp)
Expand All @@ -172,14 +172,14 @@ public override IAstNode VisitUnaryOpExpression( UnaryOpExpressionContext contex
var opKind = RuntimeState.GetUnaryOperatorInfo( context.Op ).Kind;
if(opKind == OperatorKind.None)
{
return new ErrorNode<DiagnosticCode>( context.GetSourceRange(), DiagnosticCode.InvalidUnaryOp, $"invalid unary operator {context.Op}" );
return new ErrorNode( context.GetSourceRange(), (int)DiagnosticCode.InvalidUnaryOp, $"invalid unary operator {context.Op}" );
}

string calleeName = CreateUnaryFunctionName( context.OpToken );
var function = FindCallTarget( calleeName );
if(function == null)
{
return new ErrorNode<DiagnosticCode>( context.GetSourceRange(), DiagnosticCode.InvalidUnaryOpRef, $"reference to unknown unary operator function {calleeName}" );
return new ErrorNode( context.GetSourceRange(), (int)DiagnosticCode.InvalidUnaryOpRef, $"reference to unknown unary operator function {calleeName}" );
}

var arg = context.Rhs.Accept( this );
Expand Down Expand Up @@ -355,13 +355,13 @@ private IAstNode CreateBinaryOperatorNode( IExpression lhs, BinaryopContext op,
var opKind = RuntimeState.GetBinOperatorInfo( op.OpToken.Type ).Kind;
if(opKind != OperatorKind.InfixLeftAssociative && opKind != OperatorKind.InfixRightAssociative)
{
return new ErrorNode<DiagnosticCode>( op.GetSourceRange(), DiagnosticCode.InvalidBinaryOp, $"Invalid binary operator '{op.OpToken.Text}'" );
return new ErrorNode( op.GetSourceRange(), (int)DiagnosticCode.InvalidBinaryOp, $"Invalid binary operator '{op.OpToken.Text}'" );
}

string calleeName = CreateBinaryFunctionName( op.OpToken );
Prototype? callTarget = FindCallTarget( calleeName );
return callTarget is null
? new ErrorNode<DiagnosticCode>( op.GetSourceRange(), DiagnosticCode.UnaryOpNotFound, $"Unary operator function '{calleeName}' not found" )
? new ErrorNode( op.GetSourceRange(), (int)DiagnosticCode.UnaryOpNotFound, $"Unary operator function '{calleeName}' not found" )
: new FunctionCallExpression( op.GetSourceRange(), callTarget, lhs, rhs );
}
#endregion
Expand Down Expand Up @@ -397,11 +397,11 @@ private IAstNode BuildPrototype( PrototypeContext context, string name )
{
if(existingPrototype.Parameters.Count != retVal.Parameters.Count)
{
return new ErrorNode<DiagnosticCode>( context.GetSourceRange(), DiagnosticCode.IncompatibleRedclaration, "Declaration incompatible with previous declaration" );
return new ErrorNode( context.GetSourceRange(), (int)DiagnosticCode.IncompatibleRedclaration, "Declaration incompatible with previous declaration" );
}
}

var errors = retVal.CollectErrors<DiagnosticCode>( );
var errors = retVal.CollectErrors( );
if(errors.Length == 0)
{
RuntimeState.FunctionDeclarations.AddOrReplaceItem( retVal );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public interface IKaleidoscopeAstVisitor<out TResult>
{
TResult? Visit( RootNode root );

TResult? Visit( ErrorNode<DiagnosticCode> errorNode );
TResult? Visit( ErrorNode errorNode );

TResult? Visit( Prototype prototype );

Expand Down Expand Up @@ -43,7 +43,7 @@ public interface IKaleidoscopeAstVisitor<out TResult, TArg>
{
TResult? Visit( RootNode root, ref readonly TArg arg );

TResult? Visit( ErrorNode<DiagnosticCode> errorNode, ref readonly TArg arg );
TResult? Visit( ErrorNode errorNode, ref readonly TArg arg );

TResult? Visit( Prototype prototype, ref readonly TArg arg );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class KaleidoscopeAstVisitorBase<TResult>
return node switch
{
RootNode n => Visit( n ),
ErrorNode<DiagnosticCode> n => Visit( n ),
ErrorNode n => Visit( n ),
Prototype n => Visit( n ),
FunctionDefinition n => Visit( n ),
ConstantExpression n => Visit( n ),
Expand All @@ -37,7 +37,7 @@ public class KaleidoscopeAstVisitorBase<TResult>

public virtual TResult? Visit( RootNode root ) => VisitChildren( root );

public virtual TResult? Visit( ErrorNode<DiagnosticCode> errorNode ) => default;
public virtual TResult? Visit( ErrorNode errorNode ) => default;

public virtual TResult? Visit( Prototype prototype ) => VisitChildren( prototype );

Expand Down Expand Up @@ -102,7 +102,7 @@ public class KaleidoscopeAstVisitorBase<TResult, TArg>
return node switch
{
RootNode n => Visit( n, in arg ),
ErrorNode<DiagnosticCode> n => Visit( n, in arg ),
ErrorNode n => Visit( n, in arg ),
Prototype n => Visit( n, in arg ),
FunctionDefinition n => Visit( n, in arg ),
ConstantExpression n => Visit( n, in arg ),
Expand All @@ -120,7 +120,7 @@ public class KaleidoscopeAstVisitorBase<TResult, TArg>

public virtual TResult? Visit( RootNode root, ref readonly TArg arg ) => VisitChildren( root, in arg );

public virtual TResult? Visit( ErrorNode<DiagnosticCode> errorNode, ref readonly TArg arg ) => default;
public virtual TResult? Visit( ErrorNode errorNode, ref readonly TArg arg ) => default;

public virtual TResult? Visit( Prototype prototype, ref readonly TArg arg ) => VisitChildren( prototype, in arg );

Expand Down
6 changes: 3 additions & 3 deletions src/Samples/Kaleidoscope/Kaleidoscope.Grammar/Parser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ internal enum ParseMode
{
try
{
var errCollector = new ParseErrorCollector<DiagnosticCode>();
var errCollector = new ParseErrorCollector();

(KaleidoscopeParser antlrParser, IParseTree parseTree) = CoreParse( input, mode, errCollector );

Expand Down Expand Up @@ -131,11 +131,11 @@ internal enum ParseMode
}
catch(ParseCanceledException)
{
return new RootNode( default, new ErrorNode<DiagnosticCode>( default, DiagnosticCode.ParseCanceled, "Parse canceled" ) );
return new RootNode( default, new ErrorNode( default, (int)DiagnosticCode.ParseCanceled, "Parse canceled" ) );
}
}

private (KaleidoscopeParser Op, IParseTree RHS) CoreParse( char[] input, ParseMode mode, ParseErrorCollector<DiagnosticCode> errCollector )
private (KaleidoscopeParser Op, IParseTree RHS) CoreParse( char[] input, ParseMode mode, ParseErrorCollector errCollector )
{
var lexer = new KaleidoscopeLexer( input, GlobalState.LanguageLevel, errCollector );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
namespace Kaleidoscope.Runtime
{
public abstract class KaleidoscopeReadEvaluatePrintLoopBase<T>
: REPLBase<T, DiagnosticCode>
: REPLBase<T>
{
public LanguageLevel LanguageFeatureLevel { get; }

Expand All @@ -41,11 +41,11 @@ public sealed override void ShowPrompt( ReadyState state )
}

protected KaleidoscopeReadEvaluatePrintLoopBase( LanguageLevel level )
: this(level, new ParseErrorDiagnosticAdapter<DiagnosticCode>(new ColoredConsoleReporter(), "KLS"))
: this(level, new ParseErrorDiagnosticAdapter(new ColoredConsoleReporter(), "KLS"))
{
}

protected KaleidoscopeReadEvaluatePrintLoopBase( LanguageLevel level, IParseErrorReporter<DiagnosticCode> logger )
protected KaleidoscopeReadEvaluatePrintLoopBase( LanguageLevel level, IParseErrorReporter logger )
: base( logger )
{
LanguageFeatureLevel = level;
Expand Down
2 changes: 1 addition & 1 deletion src/Samples/Kaleidoscope/Kaleidoscope.Tests/BasicTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ private async Task RunBasicReplLoop( LanguageLevel level

await foreach(IAstNode node in replSeq)
{
var errors = node.CollectErrors<DiagnosticCode>();
var errors = node.CollectErrors();
Assert.IsEmpty( errors );

var result = generator.Generate( node );
Expand Down
Loading
Loading