syntax = "proto3"; package semantic; 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 Array { repeated Term arrayElements = 1; } message Boolean { bool booleanContent = 1; } message Hash { repeated Term hashElements = 1; } message Float { bytes floatContent = 1; } message KeyValue { Term key = 1; Term value = 2; } message Null { } message TextElement { bytes textElementContent = 1; } message Term { oneof syntax {Array array = 1; Boolean boolean = 2; Hash hash = 3; Float float = 4; KeyValue keyValue = 5; Null null = 6; TextElement textElement = 7;} }