MCPcopy Create free account

hub / github.com/MauriceGit/compiler / functions

Functions362 in github.com/MauriceGit/compiler

↓ 388 callersMethodaddLine
(command, args string)
codeGeneration.go:77
↓ 63 callersMethodexpect
expect checks the next token against a given expected type and value and returns true, if the check was valid.
parser.go:967
↓ 60 callersFunctionnewVar
(value string, shadow bool)
parser_test.go:234
↓ 51 callersFunctionnewConst
(t Type, value string)
parser_test.go:243
↓ 51 callersFunctiontokenIdentifier
(s string)
lexer_test.go:25
↓ 46 callersMethodaddLabel
(label string)
codeGeneration.go:63
↓ 45 callersFunctiontokenConstant
(s string)
lexer_test.go:13
↓ 38 callersFunctiongetReturnRegister
(t Type)
codeGeneration.go:190
↓ 38 callersFunctionnewAssignment
(variables []Variable, expressions []Expression)
parser_test.go:255
↓ 31 callersMethodgetExpressionTypes
(s *SymbolTable)
parser.go:179
↓ 30 callersMethodgenerateCode
(asm *ASM, s *SymbolTable)
parser.go:166
↓ 27 callersMethodnextLabelName
()
codeGeneration.go:53
↓ 25 callersFunctioncompileAndRun
(program []byte)
compiler_test.go:9
↓ 25 callersFunctiongetRegister
(t Type)
codeGeneration.go:162
↓ 25 callersFunctionnewBinary
(op Operator, eLeft, eRight Expression, fixed bool)
parser_test.go:249
↓ 24 callersFunctiontokenKeyword
(s string)
lexer_test.go:7
↓ 23 callersFunctiontokenAssignment
()
lexer_test.go:10
↓ 23 callersFunctiontokenOperator
(s string)
lexer_test.go:28
↓ 20 callersMethodstartPos
Notes the start position in the actual source code! (lineNr, columnNr)
parser.go:165
↓ 20 callersFunctiontokenSeparator
()
lexer_test.go:43
↓ 19 callersMethodaddFun
(name string, inline bool)
codeGeneration.go:66
↓ 19 callersMethodfunIsInline
(name string, paramTypes []ComplexType, strict bool)
semanticAnalyzer.go:168
↓ 19 callersMethodfunIsUsed
(name string, paramTypes []ComplexType, strict bool)
semanticAnalyzer.go:174
↓ 19 callersMethodgetResultCount
()
parser.go:180
↓ 19 callersMethodnextFunctionName
()
codeGeneration.go:58
↓ 19 callersMethodsetFun
(name string, argTypes, returnTypes []ComplexType, inline bool)
semanticAnalyzer.go:58
↓ 19 callersMethodsetFunAsmName
(v string, asmName string, paramTypes []ComplexType, strict bool)
semanticAnalyzer.go:147
↓ 17 callersMethodgetFun
(name string, paramTypes []ComplexType, strict bool)
semanticAnalyzer.go:87
↓ 16 callersFunctionnewAST
(statements []Statement)
parser_test.go:276
↓ 16 callersMethodpushBack
(t Token)
parser.go:822
↓ 16 callersFunctiontestAST
(code []byte, expected AST, t *testing.T)
parser_test.go:211
↓ 15 callersFunctionnewBlock
(statements []Statement)
parser_test.go:273
↓ 15 callersFunctiontestTokens
(code []byte, expect []Token, t *testing.T)
lexer_test.go:65
↓ 15 callersFunctiontokenEOF
()
lexer_test.go:52
↓ 14 callersFunctionanalyzeExpression
(expression Expression, symbolTable *SymbolTable)
semanticAnalyzer.go:707
↓ 14 callersMethodcreateToken
(t TokenType, v string, line, column int)
parser.go:818
↓ 14 callersMethodexpectType
expectType checks the next token against a given expected type and returns the token string with corresponding line and column numbers
parser.go:955
↓ 13 callersMethodgetMemCount
(symbolTable *SymbolTable)
parser.go:880
↓ 12 callersFunctionequalType
PARSER IMPLEMENTATION Sometimes, we are OK with non strict equality, i.e. if we only need an array and don't care about the actual type.
parser.go:832
↓ 12 callersFunctiontokenCurlyClose
()
lexer_test.go:19
↓ 12 callersFunctiontokenCurlyOpen
()
lexer_test.go:16
↓ 10 callersMethodgetVar
getVar goes through all symbol varTables recursively and looks for an entry for the given variable name v
semanticAnalyzer.go:8
↓ 10 callersFunctiontokenParenClose
()
lexer_test.go:34
↓ 10 callersFunctiontokenParenOpen
()
lexer_test.go:31
↓ 9 callersFunctiongetFunctionRegisters
Right now we limit ourself to a maximum of 6 integer parameters and/or 8 floating parameters! https://wiki.cdot.senecacollege.ca/wiki/X86_64_Register_
codeGeneration.go:204
↓ 9 callersFunctionparseExpression
(tokens *TokenChannel)
parser.go:1387
↓ 8 callersMethodisDirectlyAccessed
()
parser.go:181
↓ 8 callersFunctionparseBlock
(tokens *TokenChannel)
parser.go:2143
↓ 8 callersFunctiontokenSemicolon
()
lexer_test.go:22
↓ 7 callersFunctionanalyzeBlock
analyzeBlock gets a reference to the current (now parent) symbol varTable Additionally, it might get a pre-filled symbol varTable for the new scope to
semanticAnalyzer.go:1209
↓ 7 callersMethodsetFunIsUsed
(name string, isUsed bool)
codeGeneration.go:69
↓ 7 callersFunctionvariablesToTypes
(variables []Variable)
codeGeneration.go:1191
↓ 6 callersMethodgetMemTypes
(symbolTable *SymbolTable)
parser.go:866
↓ 6 callersMethodgetType
(v string)
semanticAnalyzer.go:48
↓ 6 callersFunctionparseExpressionList
(tokens *TokenChannel)
parser.go:1444
↓ 6 callersMethodsetFunIsUsed
(v string, paramTypes []ComplexType, isUsed bool)
semanticAnalyzer.go:204
↓ 6 callersFunctiontokenSquareClose
()
lexer_test.go:40
↓ 6 callersFunctiontokenSquareOpen
()
lexer_test.go:37
↓ 5 callersMethodaddSysConstant
(name, value string)
codeGeneration.go:46
↓ 5 callersFunctioncompareBlock
(ss1, ss2 Block)
parser_test.go:194
↓ 5 callersFunctioncompareExpressions
(ee1, ee2 []Expression)
parser_test.go:108
↓ 5 callersFunctionequalTypes
(l1, l2 []ComplexType, strict bool)
parser.go:844
↓ 5 callersMethodsetVar
(v string, t ComplexType, isIndexed bool)
semanticAnalyzer.go:34
↓ 4 callersMethodString
AST, OPS STRING
parser.go:501
↓ 4 callersMethodaddConstant
(value string)
codeGeneration.go:35
↓ 4 callersFunctionanalyzeDirectAccess
(t ComplexType, directAccess []DirectAccess, symbolTable *SymbolTable)
semanticAnalyzer.go:401
↓ 4 callersFunctionexpressionsToTypes
(expressions []Expression, s *SymbolTable)
codeGeneration.go:568
↓ 4 callersFunctiongetAccessedType
(c ComplexType, access []DirectAccess, s *SymbolTable)
parser.go:271
↓ 4 callersFunctionnewArray
(t ComplexType, count int, exprs []Expression)
parser_test.go:252
↓ 4 callersFunctionnewFunction
(name string, params []Variable, returnTypes []ComplexType, b Block)
parser_test.go:264
↓ 4 callersFunctionnewLoop
(a Assignment, exprs []Expression, incrA Assignment, b Block)
parser_test.go:261
↓ 4 callersFunctionnewParam
(t ComplexType, value string)
parser_test.go:240
↓ 4 callersMethodpriority
Operator priority (Descending priority!): 0: '-', '!' 1: '*', '/', '%' 2: '+', '-' 3: '==', '!=', '<=', '>=', '<', '>' 4: '&&' 5: '||'
parser.go:898
↓ 4 callersFunctiontypesToMemCount
(ct []ComplexType, symbolTable *SymbolTable)
parser.go:884
↓ 3 callersFunctionanalyzeAssignment
Returns newly created variables and variables that should shadow others! This is just for housekeeping and removing them later!!!! All new variables (
semanticAnalyzer.go:736
↓ 3 callersFunctionanalyzeType
analyzeType recursively goes through the type hierarchy and checks, if all types are well defined.
semanticAnalyzer.go:1126
↓ 3 callersFunctioncompareExpression
(e1, e2 Expression)
parser_test.go:68
↓ 3 callersFunctioncompareIndexExpression
(e1, e2 Expression)
parser_test.go:12
↓ 3 callersFunctiongenerateDirectAccessCode
We don't know where we were before and what expression needs to be indexed. All we care about, is that the array pointer is in rax and the resulting v
codeGeneration.go:266
↓ 3 callersFunctiongetOperatorType
(o string)
parser.go:918
↓ 3 callersFunctionnewCondition
(e Expression, block, elseBlock Block)
parser_test.go:258
↓ 3 callersFunctionnewReturn
(expressions []Expression)
parser_test.go:267
↓ 3 callersFunctionnewUnary
(op Operator, e Expression)
parser_test.go:246
↓ 3 callersFunctionparseAssignment
parseBlock parses a list of statements from the tokens.
parser.go:1475
↓ 3 callersFunctionparseType
(tokens *TokenChannel)
parser.go:1870
↓ 3 callersFunctiontokenize
(program []byte, tokens chan Token, err chan error)
lexer.go:119
↓ 2 callersFunctionaddFunctionEpilogue
(asm *ASM)
codeGeneration.go:1097
↓ 2 callersFunctionaddFunctionPrologue
(asm *ASM, variableStackSpace int)
codeGeneration.go:1079
↓ 2 callersFunctionaddIndexAccess
(e, indexExpression Expression)
parser_test.go:286
↓ 2 callersMethodaddRawLine
(command string)
codeGeneration.go:83
↓ 2 callersMethodallPathsReturn
()
functionReturnAnalysis.go:31
↓ 2 callersFunctionanalyzeFunCall
(fun FunCall, symbolTable *SymbolTable)
semanticAnalyzer.go:565
↓ 2 callersMethodassignVariableStackOffset
assignVariableStackOffset just makes sure, that every single local variable has a defined stack position for the rest of its scope! If we are within a
codeGeneration.go:1170
↓ 2 callersFunctioncompareFunCall
(v1, v2 FunCall)
parser_test.go:44
↓ 2 callersFunctioncompareTypes
(tt1, tt2 []ComplexType)
parser_test.go:133
↓ 2 callersFunctioncompareVariable
(v1, v2 Variable)
parser_test.go:37
↓ 2 callersFunctioncompareVariables
First time really where I have to say - **** generics (in - not having them!)
parser_test.go:121
↓ 2 callersFunctioncompile
(program []byte, sourceFile, binFile string)
compiler.go:160
↓ 2 callersFunctionfilterVarType
(t Type, vars []Variable)
codeGeneration.go:1109
↓ 2 callersMethodgetDirectAccess
()
parser.go:182
next →1–100 of 362, ranked by callers