syntax = "proto3"; package github.semantic.v1alpha1; enum Language {Unknown = 0; Go = 1; Haskell = 2; Java = 3; JavaScript = 4; JSON = 5; JSX = 6; Markdown = 7; Python = 8; Ruby = 9; TypeScript = 10; PHP = 11;} message Blob { bytes blobSource = 1; string blobPath = 2; Language blobLanguage = 3; } message Pos { int64 posLine = 1; int64 posColumn = 2; } message Span { Pos spanStart = 1; Pos spanEnd = 2; } message SrcLoc { string srcLocPackage = 1; string srcLocModule = 2; string srcLocFile = 3; int64 srcLocStartLine = 4; int64 srcLocStartCol = 5; int64 srcLocEndLine = 6; int64 srcLocEndCol = 7; } message ErrorSite { string errorMessage = 1; SrcLoc errorLocation = 2; } message Error { repeated ErrorSite errorCallStack = 1; repeated string errorExpected = 2; string errorActual = 3; repeated Term errorChildren = 4; } message Array { repeated Term arrayElements = 1; } message Boolean { bool booleanContent = 1; } message Hash { repeated Term hashElements = 1; } message Float { string floatContent = 1; } message KeyValue { Term key = 1; Term value = 2; } message Null { } message TextElement { string textElementContent = 1; } message Term { oneof syntax {Null null = 1; Array array = 2; Boolean boolean = 3; Hash hash = 4; Float float = 5; KeyValue keyValue = 6; TextElement textElement = 7;} }