• No results found

Soubor: /home/Matysek/BakalarkaCD/Zdrojove_kody/callTable.java Stránka 1 z 2 package

N/A
N/A
Protected

Academic year: 2022

Share "Soubor: /home/Matysek/BakalarkaCD/Zdrojove_kody/callTable.java Stránka 1 z 2 package"

Copied!
2
0
0

Loading.... (view fulltext now)

Full text

(1)

Soubor: /home/Matysek/BakalarkaCD/Zdrojove_kody/callTable.java Stránka 1 z 2

package callTable;

import parser.Expression;

import varTable.VarTabs;

import errors.Errors;

import errors.Messages;

public class CallTab {

private static CallTabLine[] lines = new CallTabLine[1000];

private static int lineCount = 0;

public static void call(String name, Expression[] params, String output) { lines[lineCount++] = new CallTabLine(name, params, output);

}

public static void report() {

System.out.println("---");

Messages.msg("Nalezeno celkem " + lineCount + " volani funkci");

for (int i = 0; i < lineCount; i++) {

System.out.print(lines[i].getPlace() + lines[i].getName() + "(");

for (int j = 0; j < lines[i].getParCount(); j++) {

if (VarTabs.existsTab(lines[i].getName()) && (j < VarTabs.getTab(lines[i].getName ()).getInCount())) {

System.out.print(VarTabs.getTab(lines[i].getName()).getInput(j));

}

else System.out.print("?");

if (j < lines[i].getParCount() - 1) System.out.print(", ");

}

System.out.println(")." + lines[i].getOutput());

if (!VarTabs.existsTab(lines[i].getName())) {

Errors.postCtrl(lines[i].getAt(), lines[i].getBase(),"Funkce " + lines[i].getName() + " neni definovana");

} else {

if (VarTabs.getTab(lines[i].getName()).getInCount() != lines[i].getParCount()) { Errors.postCtrl(lines[i].getAt(), lines[i].getBase(),

"Ocekavam " + VarTabs.getTab(lines[i].getName()).getInCount() + " parametry funkce " + lines[i].getName());

}

if (!VarTabs.getTab(lines[i].getName()).existsVar(lines[i].getOutput())) {

Errors.postCtrl(lines[i].getAt(), lines[i].getBase(), "Funkce " + lines[i].getName ()

+ " neobsahuje zadnou promennou " + lines[i].getOutput());

}else if (!VarTabs.getTab(lines[i].getName()).getVar(lines[i].getOutput()).getType ().equals("OUT")) {

Errors.postCtrl(lines[i].getAt(), lines[i].getBase(),

"Promenna " + lines[i].getOutput() + " funkce "

+ lines[i].getName() + " neni deklarovana jako vystupni");

} } } } }

package callTable;

import parser.Expression;

import parser.Reader;

import varTable.VarTabs;

public class CallTabLine {

private String place = "", base = "";

private Expression[] params;

private int parCount = 0, at = 0;

private String name = "", output = "";

public CallTabLine(String name, Expression[] params, String output) {

(2)

Soubor: /home/Matysek/BakalarkaCD/Zdrojove_kody/callTable.java Stránka 2 z 2

this.name = name;

this.params = params;

int i = 0;

while (params[i++] != null) parCount++;

this.output = output;

this.at = Reader.getIndex();

this.base = VarTabs.getActualTab();

this.place = VarTabs.getActualTab() + " - " + Reader.getLastSymbol().getLine() + ". radek: ";

}

public Expression getParam(int index) { return params[index]; } public String getName() { return name; }

public String getOutput() { return output; } public String getPlace() { return place; } public int getParCount() { return parCount; } public int getAt() { return at; }

public String getBase() { return base; } }

References

Related documents

z přírodních, většinou vlněných materiálů, které jsou vyvažovány produkty založenými na použití umělých vláken (PAD, PES, POP) Zvláště u

public static void printFile() throws IOException {..

[r]

[r]

// vrati hodnotu ukazatele na aktualni symbol public static int getIndex() { return index; } // posune ukazatel o jeden symbol zpet. public static void stepBack() { index--; }

[r]

Student na iade mist textu pouziva hovorove yirazy, coz rcvne2 nep0sobi v odborne preci zcela nejlepe (napi. 36 aj.).. Zaverje pouhe shrnuti manuelu pro

Během inovace úchopné hlavice je možno inovovat díly tak, aby se tyto inovované části mohli dále použít pro jinou sekci výroby loketních opěrek.. M