1
1
mirror of https://github.com/github/semantic.git synced 2024-12-19 12:51:52 +03:00
semantic/proto/ruby.proto
2018-07-03 11:50:38 -04:00

315 lines
12 KiB
Protocol Buffer

syntax = "proto3";
package github.semantic.ruby;
import "types.proto";
message RubyTerm { RubySyntax syntax = 1;
}
message Comment { string commentContent = 1;
}
message Function { repeated RubyTerm functionContext = 1;
RubyTerm functionName = 2;
repeated RubyTerm functionParameters = 3;
RubyTerm functionBody = 4;
}
message Method { repeated RubyTerm methodContext = 1;
RubyTerm methodReceiver = 2;
RubyTerm methodName = 3;
repeated RubyTerm methodParameters = 4;
RubyTerm methodBody = 5;
}
message File {
}
message Line {
}
message Error { repeated ErrorSite errorCallStack = 1;
repeated string errorExpected = 2;
string errorActual = 3;
repeated RubyTerm errorChildren = 4;
}
message And { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message BAnd { RubyTerm left = 1;
RubyTerm right = 2;
}
message BOr { RubyTerm left = 1;
RubyTerm right = 2;
}
message BXOr { RubyTerm left = 1;
RubyTerm right = 2;
}
message Call { repeated RubyTerm callContext = 1;
RubyTerm callFunction = 2;
repeated RubyTerm callParams = 3;
RubyTerm callBlock = 4;
}
message Comparison { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Complement { RubyTerm value = 1;
}
message DividedBy { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Enumeration { RubyTerm enumerationStart = 1;
RubyTerm enumerationEnd = 2;
RubyTerm enumerationStep = 3;
}
message Equal { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message FloorDivision { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message GreaterThan { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message GreaterThanEqual { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message LShift { RubyTerm left = 1;
RubyTerm right = 2;
}
message LessThan { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message LessThanEqual { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Matches { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Member { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message MemberAccess { RubyTerm lhs = 1;
bytes rhs = 2;
}
message Minus { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Modulo { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Negate { RubyTerm term = 1;
}
message Not { RubyTerm term = 1;
}
message NotMatches { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Or { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Plus { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Power { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message RShift { RubyTerm left = 1;
RubyTerm right = 2;
}
message ScopeResolution { repeated RubyTerm scopes = 1;
}
message StrictEqual { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Subscript { RubyTerm lhs = 1;
repeated RubyTerm rhs = 2;
}
message Times { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message XOr { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Array { repeated RubyTerm arrayElements = 1;
}
message Boolean { bool booleanContent = 1;
}
message Complex { string value = 1;
}
message Float { string floatContent = 1;
}
message Hash { repeated RubyTerm hashElements = 1;
}
message Integer { string integerContent = 1;
}
message KeyValue { RubyTerm key = 1;
RubyTerm value = 2;
}
message Null {
}
message Rational { string value = 1;
}
message Regex { string regexContent = 1;
}
message String { repeated RubyTerm stringElements = 1;
}
message Symbol { string symbolContent = 1;
}
message TextElement { string textElementContent = 1;
}
message Class { RubyTerm classIdentifier = 1;
repeated RubyTerm classSuperClass = 2;
RubyTerm classBody = 3;
}
message Load { RubyTerm loadPath = 1;
repeated RubyTerm loadWrap = 2;
}
message LowPrecedenceAnd { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message LowPrecedenceOr { RubyTerm lhs = 1;
RubyTerm rhs = 2;
}
message Module { RubyTerm moduleIdentifier = 1;
repeated RubyTerm moduleStatements = 2;
}
message Require { bool requireRelative = 1;
RubyTerm requirePath = 2;
}
message Send { repeated RubyTerm sendReceiver = 1;
repeated RubyTerm sendSelector = 2;
repeated RubyTerm sendArgs = 3;
repeated RubyTerm sendBlock = 4;
}
message Assignment { repeated RubyTerm assignmentContext = 1;
RubyTerm assignmentTarget = 2;
RubyTerm assignmentValue = 3;
}
message Break { RubyTerm term = 1;
}
message Catch { RubyTerm catchException = 1;
RubyTerm catchBody = 2;
}
message Continue { RubyTerm term = 1;
}
message Else { RubyTerm elseCondition = 1;
RubyTerm elseBody = 2;
}
message Finally { RubyTerm term = 1;
}
message ForEach { RubyTerm forEachBinding = 1;
RubyTerm forEachSubject = 2;
RubyTerm forEachBody = 3;
}
message If { RubyTerm ifCondition = 1;
RubyTerm ifThenBody = 2;
RubyTerm ifElseBody = 3;
}
message Match { RubyTerm matchSubject = 1;
RubyTerm matchPatterns = 2;
}
message Pattern { RubyTerm value = 1;
RubyTerm patternBody = 2;
}
message Retry { RubyTerm term = 1;
}
message Return { RubyTerm term = 1;
}
message ScopeEntry { repeated RubyTerm terms = 1;
}
message ScopeExit { repeated RubyTerm terms = 1;
}
message Statements { repeated RubyTerm statements = 1;
}
message Try { RubyTerm tryBody = 1;
repeated RubyTerm tryCatch = 2;
}
message While { RubyTerm whileCondition = 1;
RubyTerm whileBody = 2;
}
message Yield { RubyTerm term = 1;
}
message RubySyntax { oneof syntax {Comment comment = 1;
Function function = 2;
Boolean boolean = 3;
Method method = 4;
File file = 5;
Line line = 6;
Plus plus = 7;
Minus minus = 8;
Times times = 9;
DividedBy dividedBy = 10;
Modulo modulo = 11;
Power power = 12;
Negate negate = 13;
FloorDivision floorDivision = 14;
BAnd bAnd = 15;
BOr bOr = 16;
BXOr bXOr = 17;
LShift lShift = 18;
RShift rShift = 19;
Complement complement = 20;
And and = 21;
Not not = 22;
Or or = 23;
XOr xOr = 24;
Call call = 25;
LessThan lessThan = 26;
LessThanEqual lessThanEqual = 27;
GreaterThan greaterThan = 28;
GreaterThanEqual greaterThanEqual = 29;
Equal equal = 30;
StrictEqual strictEqual = 31;
Comparison comparison = 32;
Enumeration enumeration = 33;
Matches matches = 34;
NotMatches notMatches = 35;
MemberAccess memberAccess = 36;
ScopeResolution scopeResolution = 37;
Subscript subscript = 38;
Member member = 39;
Array array = 40;
Complex complex = 41;
Float float = 42;
Hash hash = 43;
Integer integer = 44;
KeyValue keyValue = 45;
Null null = 46;
Rational rational = 47;
Regex regex = 48;
String string = 49;
Symbol symbol = 50;
TextElement textElement = 51;
Assignment assignment = 52;
Break break = 53;
Catch catch = 54;
Continue continue = 55;
Else else = 56;
Finally finally = 57;
ForEach forEach = 58;
If if = 59;
Match match = 60;
Pattern pattern = 61;
Retry retry = 62;
Return return = 63;
ScopeEntry scopeEntry = 64;
ScopeExit scopeExit = 65;
Statements statements = 66;
Try try = 67;
While while = 68;
Yield yield = 69;
Context context = 70;
Empty empty = 71;
Error error = 72;
Identifier identifier = 73;
Class class = 74;
Load load = 75;
LowPrecedenceAnd lowPrecedenceAnd = 76;
LowPrecedenceOr lowPrecedenceOr = 77;
Module module = 78;
Require require = 79;
Send send = 80;
List list = 81;}
}
message Context { repeated RubyTerm contextTerms = 1;
RubyTerm contextSubject = 2;
}
message Empty {
}
message Identifier { bytes name = 1;
}
message List { repeated RubyTerm listContent = 1;
}